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):
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')
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:
raise PLCInvalidArgument, "No such node"
-
node = nodes[0]
- PLCCheckLocalNode(node,"AddNodeToPCU")
+
+ if node['peer_id'] is not None:
+ raise PLCInvalidArgument, "Not a local node"
# Get PCU
pcus = PCUs(self.api, [pcu_id])
if not pcus:
raise PLCInvalidArgument, "No such PCU"
-
pcu = pcus[0]
if 'admin' not in self.caller['roles']:
break
if not ok:
raise PLCPermissionDenied, "Not allowed to update that PCU"
-
- # Add node to PCU
+
+ # Add node to PCU
if node['node_id'] in pcu['node_ids']:
raise PLCInvalidArgument, "Node already controlled by PCU"
pcu.add_node(node, port)
- # Logging variables
- self.object_ids = [node['node_id'], pcu['pcu_id']]
- self.message = 'Node %d added to pcu %d on port %d' % \
- (node['node_id'], pcu['pcu_id'], port)
+ # 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