- def associate_nodegroups(self, auth, field, value):
- """
- Add node to nodegroups found in value list (AddNodeToNodegroup)
- Delete node from nodegroup not found in value list (DeleteNodeFromNodegroup)
- """
-
- from PLC.NodeGroups import NodeGroups
-
- assert 'nodegroup_ids' in self
- assert 'node_id' in self
- assert isinstance(value, list)
-
- (nodegroup_ids, nodegroup_names) = self.separate_types(value)[0:2]
-
- if nodegroup_names:
- nodegroups = NodeGroups(self.api, nodegroup_names, ['nodegroup_id']).dict('nodegroup_id')
- nodegroup_ids += nodegroups.keys()
-
- if self['nodegroup_ids'] != nodegroup_ids:
- from PLC.Methods.AddNodeToNodeGroup import AddNodeToNodeGroup
- from PLC.Methods.DeleteNodeFromNodeGroup import DeleteNodeFromNodeGroup
-
- new_nodegroups = set(nodegroup_ids).difference(self['nodegroup_ids'])
- stale_nodegroups = set(self['nodegroup_ids']).difference(nodegroup_ids)
-
- for new_nodegroup in new_nodegroups:
- AddNodeToNodeGroup.__call__(AddNodeToNodeGroup(self.api), auth, self['node_id'], new_nodegroup)
- for stale_nodegroup in stale_nodegroups:
- DeleteNodeFromNodeGroup.__call__(DeleteNodeFromNodeGroup(self.api), auth, self['node_id'], stale_nodegroup)
-
-
-