X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FMethods%2FAddSliceToNodes.py;fp=PLC%2FMethods%2FAddSliceToNodes.py;h=d5a2c8c2ad8b948756fd10ace30f7d72bd667010;hb=2fbc54bb18d05d1c8972257a342c3ae162e83c6e;hp=ce8bb1c659704d726c200ea066964a4b741fbdea;hpb=1d36cde819b7bcadb4702e6e5952d66c1ce5d185;p=plcapi.git diff --git a/PLC/Methods/AddSliceToNodes.py b/PLC/Methods/AddSliceToNodes.py index ce8bb1c..d5a2c8c 100644 --- a/PLC/Methods/AddSliceToNodes.py +++ b/PLC/Methods/AddSliceToNodes.py @@ -3,6 +3,7 @@ from PLC.Method import Method from PLC.Parameter import Parameter, Mixed from PLC.Nodes import Node, Nodes from PLC.Slices import Slice, Slices +from PLC.Persons import Person, Persons from PLC.Auth import Auth class AddSliceToNodes(Method): @@ -47,12 +48,15 @@ class AddSliceToNodes(Method): raise PLCPermissionDenied, "Specified slice not associated with any of your sites" # Get specified nodes, add them to the slice - nodes = Nodes(self.api, node_id_or_hostname_list, ['node_id', 'hostname', 'slice_ids', 'slice_ids_whitelist']) + nodes = Nodes(self.api, node_id_or_hostname_list, ['node_id', 'hostname', 'slice_ids', 'slice_ids_whitelist', 'site_id']) + for node in nodes: # check the slice whitelist on each node first + # allow users at site to add node to slice, ignoring whitelist if node['slice_ids_whitelist'] and \ - slice['slice_id'] not in node['slice_ids_whitelist']: - raise PLCInvalidArgument, "%s is not on %s's whitelist" % \ + slice['slice_id'] not in node['slice_ids_whitelist'] and \ + not set(self.caller['site_ids']).intersection([node['site_id']]): + raise PLCInvalidArgument, "%s is not allowed on %s (not on the whitelist)" % \ (slice['name'], node['hostname']) if slice['slice_id'] not in node['slice_ids']: slice.add_node(node, commit = False)