- fix calling convention
authorMark Huang <mlhuang@cs.princeton.edu>
Mon, 23 Oct 2006 20:36:01 +0000 (20:36 +0000)
committerMark Huang <mlhuang@cs.princeton.edu>
Mon, 23 Oct 2006 20:36:01 +0000 (20:36 +0000)
PLC/Methods/UpdateNodeGroup.py

index c953449..a47591b 100644 (file)
@@ -4,6 +4,9 @@ from PLC.Parameter import Parameter, Mixed
 from PLC.NodeGroups import NodeGroup, NodeGroups
 from PLC.Auth import PasswordAuth
 
+can_update = lambda (field, value): field in \
+             ['name', 'description']
+
 class UpdateNodeGroup(Method):
     """
     Updates a custom node group.
@@ -13,31 +16,27 @@ class UpdateNodeGroup(Method):
 
     roles = ['admin']
 
+    update_fields = dict(filter(can_update, NodeGroup.fields.items()))
+
     accepts = [
         PasswordAuth(),
         Mixed(NodeGroup.fields['nodegroup_id'],
              NodeGroup.fields['name']),
-        NodeGroup.fields['name'],
-       NodeGroup.fields['description']
+        update_fields
         ]
 
     returns = Parameter(int, '1 if successful')
 
-    def call(self, auth, nodegroup_id_or_name, name, description):
+    def call(self, auth, nodegroup_id_or_name, nodegroup_fields = {}):
+        nodegroup_fields = dict(filter(can_update, nodegroup_fields.items()))
+
        # Get nodegroup information
        nodegroups = NodeGroups(self.api, [nodegroup_id_or_name])
        if not nodegroups:
             raise PLCInvalidArgument, "No such nodegroup"
-
        nodegroup = nodegroups.values()[0]
        
-       # Modify node group
-        update_fields = {
-            'name': name,
-            'description': description
-            }
-
-       nodegroup.update(update_fields)
+       nodegroup.update(nodegroup_fields)
         nodegroup.sync()
 
         return 1