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