X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FMethods%2FAddSliceToNodes.py;h=e3c2f56d6b678d60cd009846e522a4e9e21e0d98;hb=4e770b3cf4e6b16150fd479ace9854eaee3399b6;hp=d594b6cf11bed824a5051f86f2d69e0c0b3e7dab;hpb=690573bbfe483955331a061b5d209637de56826d;p=plcapi.git diff --git a/PLC/Methods/AddSliceToNodes.py b/PLC/Methods/AddSliceToNodes.py index d594b6c..e3c2f56 100644 --- a/PLC/Methods/AddSliceToNodes.py +++ b/PLC/Methods/AddSliceToNodes.py @@ -1,5 +1,3 @@ -# $Id$ -# $URL$ from PLC.Faults import * from PLC.Method import Method from PLC.Parameter import Parameter, Mixed @@ -25,7 +23,7 @@ class AddSliceToNodes(Method): Auth(), Mixed(Slice.fields['slice_id'], Slice.fields['name']), - [Mixed(Node.fields['node_id'], + [Mixed(Node.fields['node_id'], Node.fields['hostname'])] ] @@ -48,24 +46,26 @@ class AddSliceToNodes(Method): raise PLCPermissionDenied, "Not a member of the specified slice" elif slice['site_id'] not in self.caller['site_ids']: raise PLCPermissionDenied, "Specified slice not associated with any of your sites" - - # Get specified nodes, add them to the slice + + # 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', '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'] 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']) + + 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'] 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) slice.sync() - self.event_objects = {'Node': [node['node_id'] for node in nodes], - 'Slice': [slice['slice_id']]} + nodeids = [node['node_id'] for node in nodes] + self.event_objects = {'Node': nodeids, + 'Slice': [slice['slice_id']]} + self.message = 'Slice %d added to nodes %s' % (slice['slice_id'], nodeids) return 1