- Initial checkin of new API implementation
[plcapi.git] / PLC / Methods / AddNodeNetwork.py
index 1ffebfc..6e24bce 100644 (file)
@@ -3,7 +3,7 @@ from PLC.Method import Method
 from PLC.Parameter import Parameter, Mixed
 from PLC.Nodes import Node, Nodes
 from PLC.NodeNetworks import NodeNetwork, NodeNetworks
-from PLC.Auth import PasswordAuth
+from PLC.Auth import Auth
 
 can_update = lambda (field, value): field not in ['nodenetwork_id', 'node_id']
 
@@ -31,7 +31,7 @@ class AddNodeNetwork(Method):
     nodenetwork_fields = dict(filter(can_update, NodeNetwork.fields.items()))
 
     accepts = [
-        PasswordAuth(),
+        Auth(),
         Mixed(Node.fields['node_id'],
               Node.fields['hostname']),
         nodenetwork_fields
@@ -39,15 +39,12 @@ class AddNodeNetwork(Method):
 
     returns = Parameter(int, 'New nodenetwork_id (> 0) if successful')
 
-    event_type = 'Add'
-    object_type = 'NodeNetwork'
-    object_ids = []
-
+    
     def call(self, auth, node_id_or_hostname, nodenetwork_fields):
         nodenetwork_fields = dict(filter(can_update, nodenetwork_fields.items()))
 
         # Check if node exists
-        nodes = Nodes(self.api, [node_id_or_hostname]).values()
+        nodes = Nodes(self.api, [node_id_or_hostname])
         if not nodes:
             raise PLCInvalidArgument, "No such node"
        node = nodes[0]
@@ -64,8 +61,13 @@ class AddNodeNetwork(Method):
         # Add node network
        nodenetwork = NodeNetwork(self.api, nodenetwork_fields)
         nodenetwork['node_id'] = node['node_id']
+       # if this is the first node network, make it primary
+       if not node['nodenetwork_ids']:
+               nodenetwork['is_primary'] = True
         nodenetwork.sync()
-
+       
+       # Logging variables
        self.object_ids = [node['node_id'], nodenetwork['nodenetwork_id']]      
+       self.messgage = "Node network %d added" % nodenetwork['nodenetwork_id']
 
         return nodenetwork['nodenetwork_id']