Merge remote-tracking branch 'origin/pycurl' into planetlab-4_0-branch
[plcapi.git] / PLC / Methods / AddNodeToNodeGroup.py
index 9036195..a552b11 100644 (file)
@@ -17,35 +17,39 @@ class AddNodeToNodeGroup(Method):
 
     accepts = [
         Auth(),
+       Mixed(Node.fields['node_id'],
+             Node.fields['hostname']),
         Mixed(NodeGroup.fields['nodegroup_id'],
              NodeGroup.fields['name']),
-       Mixed(Node.fields['node_id'],
-             Node.fields['hostname'])
         ]
 
     returns = Parameter(int, '1 if successful')
 
-    event_type = 'AddTo'
-    object_type = 'NodeGroup'
-    object_ids = []
 
-    def call(self, auth, nodegroup_id_or_name, node_id_or_hostname):
+    def call(self, auth, node_id_or_hostname, nodegroup_id_or_name):
         # Get node info
        nodes = Nodes(self.api, [node_id_or_hostname])
        if not nodes:
                raise PLCInvalidArgument, "No such node"
-       node = nodes.values()[0]
+       node = nodes[0]
+
+        if node['peer_id'] is not None:
+            raise PLCInvalidArgument, "Not a local node"
 
        # Get nodegroup info
         nodegroups = NodeGroups(self.api, [nodegroup_id_or_name])
         if not nodegroups:
             raise PLCInvalidArgument, "No such nodegroup"
 
-        nodegroup = nodegroups.values()[0]
+        nodegroup = nodegroups[0]
        
        # add node to nodegroup
         if node['node_id'] not in nodegroup['node_ids']:
             nodegroup.add_node(node)
-       self.object_ids = [nodegroup['nodegroup_id']]
-
+       
+       # Logging variables
+       self.event_objects = {'NodeGroup': [nodegroup['nodegroup_id']],
+                             'Node': [node['node_id']]}
+       self.message = 'Node %d added to node group %d' % \
+               (node['node_id'], nodegroup['nodegroup_id'])
         return 1