X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FMethods%2FDeleteSliceFromNodes.py;h=75c72766f61c24becdc26bf94387f5f2f920a9d6;hb=12d17e7f285289f67146404be7bfe8862daf731c;hp=912f3b1331ca0232035dce7e5308a9b763d7cb9f;hpb=e347fc823bbba9d88a3fddf07d5c21024dfd1e55;p=plcapi.git diff --git a/PLC/Methods/DeleteSliceFromNodes.py b/PLC/Methods/DeleteSliceFromNodes.py index 912f3b1..75c7276 100644 --- a/PLC/Methods/DeleteSliceFromNodes.py +++ b/PLC/Methods/DeleteSliceFromNodes.py @@ -25,16 +25,16 @@ class DeleteSliceFromNodes(Method): returns = Parameter(int, '1 if successful') + def call(self, auth, slice_id_or_name, node_id_or_hostname_list): # Get slice information slices = Slices(self.api, [slice_id_or_name]) if not slices: raise PLCInvalidArgument, "No such slice" - slice = slices[0] - # Get specified nodes - nodes = Nodes(self.api, node_id_or_hostname_list) + if slice['peer_id'] is not None: + raise PLCInvalidArgument, "Not a local slice" if 'admin' not in self.caller['roles']: if self.caller['person_id'] in slice['person_ids']: @@ -45,8 +45,15 @@ class DeleteSliceFromNodes(Method): raise PLCPermissionDenied, "Specified slice not associated with any of your sites" # Remove slice from all nodes found + + # Get specified nodes + nodes = Nodes(self.api, node_id_or_hostname_list) for node in nodes: if slice['slice_id'] in node['slice_ids']: - slice.remove_node(node) + slice.remove_node(node, commit = False) + + slice.sync() + + self.object_ids = [node['node_id'] for node in nodes] return 1