Notice: curl_setopt(): CURLOPT_SSL_VERIFYHOST no longer accepts the value 1, value...
[plcapi.git] / PLC / Methods / AddNodeToPCU.py
index 1c96e25..2904456 100644 (file)
@@ -3,6 +3,7 @@ from PLC.Method import Method
 from PLC.Parameter import Parameter, Mixed
 from PLC.Nodes import Node, Nodes
 from PLC.PCUs import PCU, PCUs
 from PLC.Parameter import Parameter, Mixed
 from PLC.Nodes import Node, Nodes
 from PLC.PCUs import PCU, PCUs
+from PLC.Sites import Site, Sites
 from PLC.Auth import Auth
 
 class AddNodeToPCU(Method):
 from PLC.Auth import Auth
 
 class AddNodeToPCU(Method):
@@ -19,29 +20,28 @@ class AddNodeToPCU(Method):
 
     accepts = [
         Auth(),
 
     accepts = [
         Auth(),
-       Mixed(Node.fields['node_id'],
+        Mixed(Node.fields['node_id'],
               Node.fields['hostname']),
         PCU.fields['pcu_id'],
         Parameter(int, 'PCU port number')
         ]
 
     returns = Parameter(int, '1 if successful')
               Node.fields['hostname']),
         PCU.fields['pcu_id'],
         Parameter(int, 'PCU port number')
         ]
 
     returns = Parameter(int, '1 if successful')
-    event_type = 'AddTo'
-    object_type = 'PCU'
 
     def call(self, auth, node_id_or_hostname, pcu_id, port):
 
     def call(self, auth, node_id_or_hostname, pcu_id, port):
-        # Get node
+         # Get node
         nodes = Nodes(self.api, [node_id_or_hostname])
         if not nodes:
         nodes = Nodes(self.api, [node_id_or_hostname])
         if not nodes:
-            raise PLCInvalidArgument, "No such node"
-
+            raise PLCInvalidArgument("No such node")
         node = nodes[0]
 
         node = nodes[0]
 
+        if node['peer_id'] is not None:
+            raise PLCInvalidArgument("Not a local node")
+
         # Get PCU
         pcus = PCUs(self.api, [pcu_id])
         if not pcus:
         # Get PCU
         pcus = PCUs(self.api, [pcu_id])
         if not pcus:
-            raise PLCInvalidArgument, "No such PCU"
-
+            raise PLCInvalidArgument("No such PCU")
         pcu = pcus[0]
 
         if 'admin' not in self.caller['roles']:
         pcu = pcus[0]
 
         if 'admin' not in self.caller['roles']:
@@ -52,20 +52,23 @@ class AddNodeToPCU(Method):
                     ok = True
                     break
             if not ok:
                     ok = True
                     break
             if not ok:
-                raise PLCPermissionDenied, "Not allowed to update that PCU"
-       
-       # Add node to PCU
+                raise PLCPermissionDenied("Not allowed to update that PCU")
+
+        # Add node to PCU
         if node['node_id'] in pcu['node_ids']:
         if node['node_id'] in pcu['node_ids']:
-            raise PLCInvalidArgument, "Node already controlled by PCU"
+            raise PLCInvalidArgument("Node already controlled by PCU")
 
         if node['site_id'] != pcu['site_id']:
 
         if node['site_id'] != pcu['site_id']:
-            raise PLCInvalidArgument, "Node is at a different site than this PCU"
+            raise PLCInvalidArgument("Node is at a different site than this PCU")
 
         if port in pcu['ports']:
 
         if port in pcu['ports']:
-            raise PLCInvalidArgument, "PCU port already in use"
+            raise PLCInvalidArgument("PCU port already in use")
 
         pcu.add_node(node, port)
 
 
         pcu.add_node(node, port)
 
-       self.object_ids = [node['node_id'], pcu['pcu_id']]
-
+        # Logging variables
+        self.event_objects = {'Node': [node['node_id']],
+                              'PCU': [pcu['pcu_id']]}
+        self.message = 'Node %d added to pcu %d on port %d' % \
+                (node['node_id'], pcu['pcu_id'], port)
         return 1
         return 1