Run command remotely on a node
'''
if self.status is not NodeStatus.STATUS_OK:
- logger.error("The node %s is not active" % self.ip)
+ logger.error(
+ "Error running command %s. The node %s is not active"
+ % (cmd, self.ip))
return None
_, stdout, stderr = (self.ssh_client.exec_command(cmd))
error = stderr.readlines()
if len(error) > 0:
logger.error("error %s" % ''.join(error))
- return error
+ return None
output = ''.join(stdout.readlines()).rstrip()
return output
'info': self.info
}
- def is_controller(self):
+ def is_active(self):
'''
- Returns if the node is a controller
+ Returns if the node is active
'''
- if 'controller' in self.roles:
+ if self.status == NodeStatus.STATUS_OK:
return True
return False
+ def is_controller(self):
+ '''
+ Returns if the node is a controller
+ '''
+ return Role.CONTROLLER in self.roles
+
def is_compute(self):
'''
Returns if the node is a compute
'''
- if 'compute' in self.roles:
- return True
- return False
+ return Role.COMPUTE in self.roles
+
+ def is_odl(self):
+ '''
+ Returns if the node is an opendaylight
+ '''
+ return Role.ODL in self.roles
def get_ovs_info(self):
'''
Returns the ovs version installed
'''
- cmd = "ovs-vsctl --version|head -1| sed 's/^.*) //'"
- return self.run_cmd(cmd)
+ if self.is_active():
+ cmd = "ovs-vsctl --version|head -1| sed 's/^.*) //'"
+ return self.run_cmd(cmd)
+ return None
def get_system_info(self):
'''
'''
return self.installer_node
+ def get_arch(self):
+ '''
+ Returns the architecture of the first compute node found
+ '''
+ arch = None
+ for node in self.nodes:
+ if node.is_compute():
+ arch = node.cpu_info.get('arch', None)
+ if arch:
+ break
+ return arch
+
def get_deployment_info(self):
'''
Returns an object of type Deployment