1.1 --- a/docs/wiki/Resources Sat May 14 18:46:04 2016 +0200
1.2 +++ b/docs/wiki/Resources Sat Jun 04 13:52:46 2016 +0200
1.3 @@ -441,6 +441,15 @@
1.4 particular user will be unable to reserve the resource unless defined as a
1.5 member of a group listed in the `limits` file, as described below.
1.6
1.7 +It may be useful to define unlimited quotas for certain identities or
1.8 +groups in order to effectively exclude them from limits. For example:
1.9 +
1.10 +{{{
1.11 +cat <<EOF | set_quota_limits.py 'mailto:resource-car-cadillac@example.com'
1.12 +mailto:vincent.vole@example.com *
1.13 +EOF
1.14 +}}}
1.15 +
1.16 ==== Sharing Quotas Across Users ====
1.17
1.18 When the use of resources is to be shared between users in such a way that
1.19 @@ -709,7 +718,7 @@
1.20 schedule -> add_to_quota_freebusy -> quota_cars -> freebusy_cars_vole;
1.21 freebusy_cars_vole -> schedule_across_quota;
1.22
1.23 - cancel -> remove_from_quota_freebusy -> freebusy_cars_vole;
1.24 + cancel -> remove_from_quota_freebusy -> quota_cars;
1.25 }
1.26 }}}
1.27
1.28 @@ -789,7 +798,7 @@
1.29 schedule -> add_to_quota -> quota_cars -> freebusy_cars_vole;
1.30 freebusy_cars_vole -> schedule_for_delegate;
1.31
1.32 - cancel -> remove_from_quota -> freebusy_cars_vole;
1.33 + cancel -> remove_from_quota -> quota_cars;
1.34 }
1.35 }}}
1.36
1.37 @@ -797,8 +806,93 @@
1.38
1.39 Note that it is generally more useful to have delegation decisions made on the
1.40 basis of many resources, which is what the journal entries for each quota
1.41 -provides, but also for many organisers attempting to reserve those resources.
1.42 +provides, but also considering organisers attempting to reserve those resources
1.43 +as a single group whose reservations are consolidated and assessed collectively.
1.44 +Thus, a single group of users would be defined:
1.45 +
1.46 +{{{
1.47 +cat <<EOF | tools/set_quota_groups.py 'cars'
1.48 +* all
1.49 +EOF
1.50 +}}}
1.51 +
1.52 Although the journal for each quota may be divided up to administer quotas for
1.53 multiple groups of organisers, for the purposes of delegation - deciding
1.54 whether a resource is generally available, and deciding which other resource
1.55 would be available instead - a single group of all organisers is more desirable.
1.56 +
1.57 +If limits need to be imposed alongside delegation, separate quotas may be used
1.58 +to achieve this.
1.59 +
1.60 +{{{{#!table
1.61 +'''Scheduling Functions''' || '''Decision Process'''
1.62 +==
1.63 +<style="vertical-align: top;">
1.64 +
1.65 +{{{
1.66 +check_quota cars
1.67 +schedule_for_delegate car_delegation
1.68 +}}}
1.69 +
1.70 +||
1.71 +
1.72 +{{{#!graphviz
1.73 +//format=svg
1.74 +//transform=notugly
1.75 +digraph scheduling_decisions {
1.76 + node [shape=box,fontsize="13.0",fontname="Helvetica",tooltip="Scheduling decisions"];
1.77 + edge [tooltip="Scheduling decisions"];
1.78 +
1.79 + subgraph {
1.80 + rank=same;
1.81 + mail_cadillac [label="Incoming mail\nfrom vincent.vole@example.com\nto resource-car-cadillac@example.com",shape=folder,style=filled,fillcolor=cyan];
1.82 + mail_pontiac [label="Incoming mail\nfrom vincent.vole@example.com\nto resource-car-pontiac@example.com",shape=folder,style=filled,fillcolor=cyan];
1.83 + cancel [label="Incoming cancellation",shape=folder,style=filled,fillcolor=cyan];
1.84 + }
1.85 +
1.86 + subgraph {
1.87 + rank=same;
1.88 + check_quota [label="Is allowed by quota?",shape=ellipse,style=filled,fillcolor=gold];
1.89 + quota_cars [label="Quota for cars",shape=folder];
1.90 + quota_cars_vole [label="...applying to\nvincent.vole@example.com",shape=folder];
1.91 + }
1.92 +
1.93 + subgraph {
1.94 + rank=same;
1.95 + schedule_for_delegate [label="Can be scheduled or delegated?",shape=ellipse,style=filled,fillcolor=gold];
1.96 + quota_cars_delegation [label="Quota for cars_delegation",shape=folder];
1.97 + freebusy_cars_delegation_vole [label="...recording schedule for\nvincent.vole@example.com",shape=folder];
1.98 + }
1.99 +
1.100 + schedule [label="Schedule event for resource",shape=ellipse,style=filled,fillcolor=gold];
1.101 +
1.102 + subgraph {
1.103 + rank=same;
1.104 + accept [label="Accept",shape=folder,style=filled,fillcolor=cyan];
1.105 + delegate [label="Delegate",shape=folder,style=filled,fillcolor=cyan];
1.106 + decline [label="Decline",shape=folder,style=filled,fillcolor=cyan];
1.107 + }
1.108 +
1.109 + add_to_quota [label="Add to quota",shape=ellipse,style=filled,fillcolor=darkorange];
1.110 + remove_from_quota [label="Remove from quota",shape=ellipse,style=filled,fillcolor=darkorange];
1.111 +
1.112 + mail_cadillac -> check_quota;
1.113 + mail_pontiac -> check_quota;
1.114 + check_quota -> schedule_for_delegate;
1.115 + check_quota -> decline [style=dashed];
1.116 + schedule_for_delegate -> schedule -> accept;
1.117 + schedule_for_delegate -> delegate [style=dashed];
1.118 + schedule_for_delegate -> decline [style=dashed];
1.119 + schedule -> add_to_quota;
1.120 + add_to_quota -> quota_cars -> quota_cars_vole;
1.121 + add_to_quota -> quota_cars_delegation -> freebusy_cars_delegation_vole;
1.122 + quota_cars_vole -> check_quota;
1.123 + freebusy_cars_delegation_vole -> schedule_for_delegate;
1.124 +
1.125 + cancel -> remove_from_quota;
1.126 + remove_from_quota -> quota_cars;
1.127 + remove_from_quota -> quota_cars_delegation;
1.128 +}
1.129 +}}}
1.130 +
1.131 +}}}}