From: Tony Mack Date: Mon, 1 Oct 2007 20:14:17 +0000 (+0000) Subject: - dont allow duplicate attributes X-Git-Tag: PLCAPI-4.2-0~69 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=aeeb95a629e6a90a12a7fda7633fcb06eb5af233;p=plcapi.git - dont allow duplicate attributes --- diff --git a/PLC/Methods/AddSliceAttribute.py b/PLC/Methods/AddSliceAttribute.py index aec3047..af80ee2 100644 --- a/PLC/Methods/AddSliceAttribute.py +++ b/PLC/Methods/AddSliceAttribute.py @@ -86,7 +86,6 @@ class AddSliceAttribute(Method): if node['node_id'] not in slice['node_ids']: raise PLCInvalidArgument, "Node not in the specified slice" - slice_attribute['node_id'] = node['node_id'] # Sliver attribute shared accross nodes if nodegroup is sepcified @@ -98,6 +97,18 @@ class AddSliceAttribute(Method): slice_attribute['nodegroup_id'] = nodegroup['nodegroup_id'] + # Check if slice attribute alreay exists + slice_attribute_check = None + slice_attributes_check = SliceAttributes(self.api, {'slice_id': slice['slice_id'], 'name': attribute_type['name'], 'value': value}) + for slice_attribute_check in slice_attributes_check: + print slice_attribute_check + if 'node_id' in slice_attribute and slice_attribute['node_id'] == slice_attribute_check['node_id']: + raise PLCInvalidArgument, "Sliver attribute already exists" + if 'nodegroup_id' in slice_attribute and slice_attribute['nodegroup_id'] == slice_attribute_check['nodegroup_id']: + raise PLCInvalidArgument, "Slice attribute already exists for this nodegroup" + if node_id_or_hostname is None and nodegroup_id_or_name is None: + raise PLCInvalidArgument, "Slice attribute already exists" + slice_attribute.sync() self.event_objects = {'SliceAttribute': [slice_attribute['slice_attribute_id']]}