Merge from trunk
[plcapi.git] / PLC / Methods / AdmUpdateNodeGroup.py
index 1ea77b3..b53198a 100644 (file)
@@ -1,59 +1,27 @@
-
 from PLC.Faults import *
 from PLC.Method import Method
 from PLC.Parameter import Parameter, Mixed
-from PLC.Nodes import Node, Nodes
 from PLC.NodeGroups import NodeGroup, NodeGroups
-#from PLC.Sites import Site, Sites
-from PLC.Auth import PasswordAuth
+from PLC.Auth import Auth
+from PLC.Methods.UpdateNodeGroup import UpdateNodeGroup
 
-class AdmUpdateNodeGroup(Method):
+class AdmUpdateNodeGroup(UpdateNodeGroup):
     """
-    Updates a custom node group.
-     
-    Returns 1 if successful, faults otherwise.
+    Deprecated. See UpdateNodeGroup.
     """
 
-    roles = ['admin']
-
-    can_update = lambda (field, value): field in \
-                 ['name', 'description']
-    update_fields = dict(filter(can_update, NodeGroup.fields.items()))
+    status = "deprecated"
 
     accepts = [
-        PasswordAuth(),
-       NodeGroup.fields['nodegroup_id'],
+        Auth(),
+        Mixed(NodeGroup.fields['nodegroup_id'],
+             NodeGroup.fields['name']),
         NodeGroup.fields['name'],
        NodeGroup.fields['description']
         ]
 
     returns = Parameter(int, '1 if successful')
 
-    def call(self, auth, nodegroup_id, name, description):
-        #if filter(lambda field: field not in self.update_fields, optional_vals):
-        #    raise PLCInvalidArgument, "Invalid fields specified"
-
-        # Authenticated function
-        assert self.caller is not None
-
-        # make sure we are 'admin'
-        if 'admin' not in self.caller['roles']:
-               raise PLCPermissionDenied, "Not allowed to update node groups"
-
-       # Get nodegroup information
-       nodegroups = NodeGroups(self.api, [nodegroup_id])
-       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.flush()
-
-        return 1
+    def call(self, auth, nodegroup_id_or_name, name, description):
+        return UpdateNodeGroup.call(self, auth, nodegroup_id_or_name,
+                                    {'name': name, 'description': description})