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
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
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]
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']