Initial public import
[afterthought.git] / acls / slices2.acl
1 /REQUEST/caller['admin' not in @roles] -> {
2     /[@roles=='pi']->{
3         /REQUEST/Add -> {
4             [@site_id in /REQUEST/caller/@site_ids
5                         and count(@slice_ids) >= @max_slices
6                         and @enabled]
7         }
8         /REQUEST/Delete 
9         /REQUEST/Update -> {
10             [not not @peer_id] -> { /[false] }
11             whitelist = /node/@slice_ids_whitelist;
12             _ -> {
13                      /[/REQUEST/caller/@person_id in @person_ids
14                         or ('pi' in //REQUEST/caller/@roles and @site_id in //REQUEST/caller/@site_ids)
15                         and (not whitelist or @slice_id in whitelist)]
16                  }
17         }
18         /REQUEST/Get {
19             caller_site_ids = /REQUEST/caller/@site_ids;
20             valid_slice_ids = /DB/sites[@site_id in caller_site_ids]/@slice_ids;
21             /[@slice_id in valid_slice_ids]
22         }
23     }
24     _ -> / [false]
25 }
26
27 _ {
28    / [true]
29 }
30
31 (* XXX:
32     Not covered:
33         - Accepted fields for AddSlice, including tags
34         - Check slice name format
35     Changes:
36         - Assuming that the node whitelist goes into the slice
37 *)