From b768e36acb9b91eab4b0772b3a511379485e206e Mon Sep 17 00:00:00 2001 From: Thierry Parmentelat Date: Thu, 16 Nov 2006 10:19:26 +0000 Subject: [PATCH] DeleteSliceFromNodes needs the same cooking as AddSliceToNodes this is not the right way to do it but it works for now --- PLC/Methods/DeleteSliceFromNodes.py | 11 ++++++++--- PLC/Slices.py | 7 +++++-- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/PLC/Methods/DeleteSliceFromNodes.py b/PLC/Methods/DeleteSliceFromNodes.py index 71809b7e..1f9c01af 100644 --- a/PLC/Methods/DeleteSliceFromNodes.py +++ b/PLC/Methods/DeleteSliceFromNodes.py @@ -2,6 +2,7 @@ from PLC.Faults import * from PLC.Method import Method from PLC.Parameter import Parameter, Mixed from PLC.Nodes import Node, Nodes +from PLC.ForeignNodes import ForeignNode, ForeignNodes from PLC.Slices import Slice, Slices from PLC.Auth import Auth @@ -36,9 +37,6 @@ class DeleteSliceFromNodes(Method): slice = slices[0] - # Get specified nodes - nodes = Nodes(self.api, node_id_or_hostname_list) - if 'admin' not in self.caller['roles']: if self.caller['person_id'] in slice['person_ids']: pass @@ -48,9 +46,16 @@ 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) + foreign_nodes = ForeignNodes(self.api, node_id_or_hostname_list) + for node in foreign_nodes: + if slice['slice_id'] in node['slice_ids']: + slice.remove_node(node,is_foreign_node=True) self.object_ids = [node['node_id'] for node in nodes] diff --git a/PLC/Slices.py b/PLC/Slices.py index 46c6d734..82bcad58 100644 --- a/PLC/Slices.py +++ b/PLC/Slices.py @@ -153,13 +153,16 @@ class Slice(Row): self['node_ids'].append(node_id) node['slice_ids'].append(slice_id) - def remove_node(self, node, commit = True): + def remove_node(self, node, is_foreign_node = False, commit = True): """ Remove node from existing slice. """ assert 'slice_id' in self - assert isinstance(node, Node) + if not is_foreign_node: + assert isinstance(node, Node) + else: + assert isinstance(node, ForeignNode) assert 'node_id' in node slice_id = self['slice_id'] -- 2.47.0