Add/Update SliceTag of a system slice
authorMarc Fiuczynski <mef@cs.princeton.edu>
Thu, 16 Jul 2009 19:45:44 +0000 (19:45 +0000)
committerMarc Fiuczynski <mef@cs.princeton.edu>
Thu, 16 Jul 2009 19:45:44 +0000 (19:45 +0000)
PLC/Methods/AddSliceTag.py
PLC/Methods/UpdateSliceTag.py

index 474798e..ba4d0ea 100644 (file)
@@ -101,8 +101,10 @@ class AddSliceTag(Method):
                 else:                    
                     node_id = node['node_id']
             
-            if node_id not in slice['node_ids']:
-                raise PLCInvalidArgument, "Node not in the specified slice"
+            system_slice_tags = SliceTags(self.api, {'tagname': 'system', 'value': '1'}).dict('slice_id')
+            system_slice_ids = system_slice_tags.keys()
+           if slice['slice_id'] not in system_slice_ids and node_id not in slice['node_ids']:
+                raise PLCInvalidArgument, "Node not in the specified slice %s not in %s"%(slice['slice_id'],system_slice_ids)
             slice_tag['node_id'] = node['node_id']
 
        # Sliver attribute shared accross nodes if nodegroup is sepcified
index 8fc74de..6e0a943 100644 (file)
@@ -3,10 +3,10 @@ from PLC.Faults import *
 from PLC.Method import Method
 from PLC.Parameter import Parameter, Mixed
 from PLC.SliceTags import SliceTag, SliceTags
+from PLC.Nodes import Node
 from PLC.Slices import Slice, Slices
 from PLC.InitScripts import InitScript, InitScripts
 from PLC.Auth import Auth
-from PLC.Nodes import Node
 
 class UpdateSliceTag(Method):
     """
@@ -25,7 +25,8 @@ class UpdateSliceTag(Method):
     accepts = [
         Auth(),
         SliceTag.fields['slice_tag_id'],
-       SliceTag.fields['value'],
+       Mixed(SliceTag.fields['value'],
+              InitScript.fields['name'])
         ]
 
     returns = Parameter(int, '1 if successful')