from PLC.Slices import Slice, Slices
from PLC.Nodes import Node, Nodes
from PLC.SliceAttributes import SliceAttribute, SliceAttributes
+from PLC.InitScripts import InitScript, InitScripts
from PLC.Auth import Auth
class AddSliceAttribute(Method):
SliceAttribute.fields['name']),
Mixed(SliceAttribute.fields['attribute_type_id'],
SliceAttribute.fields['name']),
- SliceAttribute.fields['value'],
+ Mixed(SliceAttribute.fields['value'],
+ InitScript.fields['initscript_id']),
Mixed(Node.fields['node_id'],
Node.fields['hostname'])
]
returns = Parameter(int, 'New slice_attribute_id (> 0) if successful')
-
def call(self, auth, slice_id_or_name, attribute_type_id_or_name, value, node_id_or_hostname = None):
slices = Slices(self.api, [slice_id_or_name])
if not slices:
min(self.caller['role_ids']) > attribute_type['min_role_id']:
raise PLCPermissionDenied, "Not allowed to set the specified slice attribute"
+ # if initscript is specified, validate value
+ if attribute_type['name'] in ['plc_initscript_id']:
+ initscripts = InitScripts(self.api, [value])
+ if not initscripts:
+ raise PLCInvalidArgument, "No such plc initscript"
+
slice_attribute = SliceAttribute(self.api)
slice_attribute['slice_id'] = slice['slice_id']
slice_attribute['attribute_type_id'] = attribute_type['attribute_type_id']
slice_attribute['node_id'] = node['node_id']
slice_attribute.sync()
- self.object_ids = [slice_attribute['slice_attribute_id']]
+ self.event_objects = {'SliceAttribute': [slice_attribute['slice_attribute_id']]}
return slice_attribute['slice_attribute_id']