imip-agent

docs/wiki/FilesystemUsage

1355:6975cdaac4a4
2017-10-20 Paul Boddie Simplify the interface of the rule periods computation function.
     1 = Filesystem Usage =     2      3 The behaviour and operation of imip-agent is controlled by resources stored     4 in the filesystem on the host on which the software is running. These resources     5 are organised as follows:     6      7 {{{#!table     8 '''Resource''' || '''Default Location''' || '''Purpose'''     9 ==    10 Free/busy || `/var/www/imip-agent/static`    11 || Per-user directories containing [[../FreeBusyPublishing|free/busy resources]]    12 .. for publication over the Web    13 ==    14 Journal || `/var/lib/imip-agent/journal`    15 || Per-quota directories containing journal information recording    16 .. [[../Resources|resource]] usage    17 ==    18 Preferences || `/var/lib/imip-agent/preferences`    19 || Per-user directories containing [[../Preferences|preferences]] controlling    20 .. each user's experience of the software    21 ==    22 Store || `/var/lib/imip-agent/store`    23 || Per-user directories containing calendar objects and scheduling information    24 }}}    25     26 Note that the free/busy resources are located in `/var/www` as opposed to    27 `/var/lib` since they are intended to be published on the Web.    28     29 Meanwhile, the journal and store resources are only present in the filesystem    30 if the [[../FileStore|file store]] is in use. Where a    31 [[../DatabaseStore|database store]] is being used instead, such resources are    32 located in a database system.    33     34 == Journal Structure ==    35     36 Within the journal directory are a collection of subdirectories, each of which    37 represent a distinct quota group for one or more [[../Resources|resources]].    38 When a user attempts to reserve a resource in such a group, their ability to    39 schedule that resource will depend on how much they are using the other    40 resources in that group.    41     42 The directory for each quota group contains the following entries:    43     44 {{{{#!table    45 '''Entry''' || '''Purpose'''    46 ==    47 `delegates`    48 || A file containing details of the identities employing this quota to consolidate    49 .. their schedules, between which delegation may take place if their schedules    50 .. permit it    51 ==    52 `freebusy-other`    53 || A directory containing files, one per user (each containing period descriptions    54 .. for reservations made by that user, in chronological order, structured    55 .. similarly to the `freebusy` file found in each user's own store) or one per    56 .. group (for reservations made by users belonging to the groups defined for the    57 .. quota); the record in each file is consolidated for all resources in a quota    58 .. group    59 {{{    60 freebusy-other/GROUP    61 freebusy-other/USER    62 }}}    63 ==    64 `freebusy-providers`    65 || A file containing details of [[../EventRecurrences|recurring events]] for which    66 .. new free/busy records must be [[../CronIntegration|periodically generated]]    67 .. because these events recur indefinitely    68 ==    69 `groups`    70 || A mapping from user identities to group identifiers indicating the sharing    71 .. of a quota across a number of users    72 ==    73 `limits`    74 || A mapping from user identities or group identifiers to quota limits    75 }}}}    76     77 == Store Structure ==    78     79 Within the store directory are a collection of user-specific subdirectories    80 acting as each user's own store directory containing various files and further    81 subdirectories.    82     83 The store directory for each user is considered in isolation from all other    84 users' directories: imip-agent ''does not'' go looking for information belonging    85 to other users when processing information on behalf of a particular user.    86     87 The following entries are defined within a user's own store directory:    88     89 {{{{#!table    90 '''Entry''' || '''Purpose'''    91 ==    92 `cancellations`    93 || Retains cancelled event details in `objects` and `recurrences` structures    94 .. corresponding to those at the top level of the store from which the    95 .. cancelled events originate:    96 {{{    97 cancellations/objects/UID    98 cancellations/recurrences/UID/RECURRENCE-ID    99 }}}   100 ==   101 `counters`   102 || Retains counter-proposals for events in `objects` and `recurrences`   103 .. structures corresponding to those at the top level of the store for which   104 .. the counter-proposals are received, with a counter-proposal for each   105 .. respondent being held for each object or recurrence involved:   106 {{{   107 counters/objects/UID/ATTENDEE   108 counters/recurrences/UID/RECURRENCE-ID/ATTENDEE   109 }}}   110 ==   111 `freebusy`   112 || A file containing period descriptions in chronological order, one per line,   113 .. indicating start and end datetimes (in UTC), unique identifier (`UID`),   114 .. transparency, summary and organiser   115 ==   116 `freebusy-offers`   117 || A file containing period descriptions in chronological order for   118 .. scheduling offers made by counter-proposals sent by the user   119 ==   120 `freebusy-other`   121 || A collection of files, one per user, each containing period descriptions   122 .. received or deduced for that user in chronological order, structured similarly   123 .. to the store user's own `freebusy` file   124 {{{   125 freebusy-other/USER   126 }}}   127 ==   128 `freebusy-providers`   129 || A file containing details of [[../EventRecurrences|recurring events]] for which   130 .. new free/busy records must be [[../CronIntegration|periodically generated]]   131 .. because these events recur indefinitely   132 ==   133 `objects`   134 || A collection of files, one per event, each bearing as its name the unique   135 .. identifier (`UID`) of the event, with each file containing the event data:   136 {{{   137 objects/UID   138 }}}   139 ==   140 `recurrences`   141 || A collection of directories, one per "parent" event, each bearing as its name   142 .. the unique identifier (`UID`) of the event, with each directory containing a   143 .. collection of files, one per event recurrence, each bearing as its name the   144 .. normalised recurrence identifier (`RECURRENCE-ID`) of the recurrence, with each   145 .. file containing the data of the event recurrence:   146 {{{   147 recurrences/UID/RECURRENCE-ID   148 }}}   149 ==   150 `requests`   151 || A list of records, one per line, each consisting of a unique identifier (`UID`),   152 .. normalised recurrence identifier (`RECURRENCE-ID`) if appropriate, and   153 .. (optionally) a scheduling method, indicating the availability of an incoming   154 .. scheduling request for handling by a user   155 }}}}