1.1 --- a/docs/wiki/Resources Tue May 10 16:07:13 2016 +0200
1.2 +++ b/docs/wiki/Resources Tue May 10 16:47:33 2016 +0200
1.3 @@ -366,9 +366,9 @@
1.4
1.5 Now consider a number of separate car resources. An organiser might attempt to
1.6 get around any individual resource quota by booking a number of different cars.
1.7 -By grouping the resources together, the organiser will exhaust a quota set on
1.8 -the group of resources as reservations are made for the different members of
1.9 -the group.
1.10 +By grouping the resources together, the organiser will exhaust any quota set on
1.11 +the group of resources as they try and make reservations for the different
1.12 +members of the quota group.
1.13
1.14 ==== Initialising Quotas ====
1.15
1.16 @@ -409,6 +409,12 @@
1.17 quota directory must be defined, mapping each user identity to the group to
1.18 which they will belong. For example:
1.19
1.20 +{{{{#!table
1.21 +'''Scheduling Data''' || '''Decision Process'''
1.22 +==
1.23 +<style="vertical-align: top;">
1.24 +The groups are defined as follows in the `groups` file:
1.25 +
1.26 {{{
1.27 mailto:vincent.vole@example.com developers
1.28 mailto:harvey.horse@example.com developers
1.29 @@ -423,10 +429,45 @@
1.30 testers PT20H
1.31 }}}
1.32
1.33 -Limits apply to individuals, then to groups, then the general quota applies.
1.34 -Thus, when a group is not listed, the general quota applies; without a general
1.35 -quota (and without matching individually), a group member will be unable to
1.36 -reserve the resource.
1.37 +||
1.38 +
1.39 +{{{#!graphviz
1.40 +//format=svg
1.41 +//transform=notugly
1.42 +digraph quota_users {
1.43 + node [shape=box,fontsize="13.0",fontname="Helvetica",tooltip="Quota users"];
1.44 + edge [tooltip="Quota users"];
1.45 +
1.46 + subgraph {
1.47 + rank=same;
1.48 + user1 [label="User is vincent.vole@example.com"];
1.49 + user2 [label="User is oliver.otter@example.com"];
1.50 + }
1.51 +
1.52 + havegroup [label="Have group for quota?",shape=ellipse,style=filled,fillcolor=gold];
1.53 + haveuser [label="Have group for user in quota?",shape=ellipse,style=filled,fillcolor=gold];
1.54 +
1.55 + group1 [label="User is vincent.vole@example.com\nGroup is developers"];
1.56 + group2 [label="User is oliver.otter@example.com"];
1.57 +
1.58 + checkuser1 [label="Have limit for group?",shape=ellipse,style=filled,fillcolor=gold];
1.59 + checkgeneral1 [label="Have general limit?",shape=ellipse,style=filled,fillcolor=gold];
1.60 +
1.61 + checkuser2 [label="Have limit for user?",shape=ellipse,style=filled,fillcolor=gold];
1.62 + checkgeneral2 [label="Have general limit?",shape=ellipse,style=filled,fillcolor=gold];
1.63 +
1.64 + accept [label="Quota",shape=folder,style=filled,fillcolor=cyan];
1.65 + decline [label="No quota",shape=folder,style=filled,fillcolor=cyan];
1.66 +
1.67 + user1 -> havegroup -> haveuser -> group1 -> checkuser1 -> checkgeneral1 -> accept;
1.68 + user2 -> havegroup -> haveuser -> group2 -> checkuser2 -> checkgeneral2 -> decline [style=dashed];
1.69 +}
1.70 +}}}
1.71 +}}}}
1.72 +
1.73 +Where individuals are not assigned to groups, any individual limit will apply
1.74 +to them; otherwise, the general quota applies. Where individuals are assigned
1.75 +to groups, any group limit will apply; otherwise, the general quota applies.
1.76
1.77 ==== Individual Resource Quotas ====
1.78