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