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. When a user attempts 38 to reserve a resource in such a group, their ability to schedule that resource 39 will depend on how much they are using the other resources in that group. 40 41 The directory for each quota group contains the following entries: 42 43 {{{{#!table 44 '''Entry''' || '''Purpose''' 45 == 46 `freebusy-other` 47 || A directory containing files, one per user (each containing period descriptions 48 .. for reservations made by that user, in chronological order, structured 49 .. similarly to the `freebusy` file found in each user's own store) or one per 50 .. group (for reservations made by users belonging to the groups defined for the 51 .. quota); the record in each file is consolidated for all resources in a quota 52 .. group 53 {{{ 54 freebusy-other/GROUP 55 freebusy-other/USER 56 }}} 57 == 58 `groups` 59 || A mapping from user identities to group identifiers indicating the sharing 60 .. of a quota across a number of users 61 == 62 `limits` 63 || A mapping from user identities or group identifiers to quota limits 64 }}}} 65 66 == Store Structure == 67 68 Within the store directory are a collection of user-specific subdirectories 69 acting as each user's own store directory containing various files and further 70 subdirectories. 71 72 The store directory for each user is considered in isolation from all other 73 users' directories: imip-agent ''does not'' go looking for information belonging 74 to other users when processing information on behalf of a particular user. 75 76 The following entries are defined within a user's own store directory: 77 78 {{{{#!table 79 '''Entry''' || '''Purpose''' 80 == 81 `cancellations` 82 || Retains cancelled event details in `objects` and `recurrences` structures 83 .. corresponding to those at the top level of the store from which the 84 .. cancelled events originate: 85 {{{ 86 cancellations/objects/UID 87 cancellations/recurrences/UID/RECURRENCE-ID 88 }}} 89 == 90 `counters` 91 || Retains counter-proposals for events in `objects` and `recurrences` 92 .. structures corresponding to those at the top level of the store for which 93 .. the counter-proposals are received, with a counter-proposal for each 94 .. respondent being held for each object or recurrence involved: 95 {{{ 96 counters/objects/UID/ATTENDEE 97 counters/recurrences/UID/RECURRENCE-ID/ATTENDEE 98 }}} 99 == 100 `freebusy` 101 || A file containing period descriptions in chronological order, one per line, 102 .. indicating start and end datetimes (in UTC), unique identifier (`UID`), 103 .. transparency, summary and organiser 104 == 105 `freebusy-offers` 106 || A file containing period descriptions in chronological order for 107 .. scheduling offers made by counter-proposals sent by the user 108 == 109 `freebusy-other` 110 || A collection of files, one per user, each containing period descriptions 111 .. received or deduced for that user in chronological order, structured similarly 112 .. to the store user's own `freebusy` file 113 {{{ 114 freebusy-other/USER 115 }}} 116 == 117 `freebusy-providers` 118 || A file containing details of [[../EventRecurrences|recurring events]] for which 119 .. new free/busy records must be [[../CronIntegration|periodically generated]] 120 .. because these events recur indefinitely 121 == 122 `objects` 123 || A collection of files, one per event, each bearing as its name the unique 124 .. identifier (`UID`) of the event, with each file containing the event data: 125 {{{ 126 objects/UID 127 }}} 128 == 129 `recurrences` 130 || A collection of directories, one per "parent" event, each bearing as its name 131 .. the unique identifier (`UID`) of the event, with each directory containing a 132 .. collection of files, one per event recurrence, each bearing as its name the 133 .. normalised recurrence identifier (`RECURRENCE-ID`) of the recurrence, with each 134 .. file containing the data of the event recurrence: 135 {{{ 136 recurrences/UID/RECURRENCE-ID 137 }}} 138 == 139 `requests` 140 || A list of records, one per line, each consisting of a unique identifier (`UID`), 141 .. normalised recurrence identifier (`RECURRENCE-ID`) if appropriate, and 142 .. (optionally) a scheduling method, indicating the availability of an incoming 143 .. scheduling request for handling by a user 144 }}}}