diff options
-rw-r--r-- | opnfv/deployment/fuel/adapter.py | 18 | ||||
-rw-r--r-- | opnfv/deployment/manager.py | 20 |
2 files changed, 27 insertions, 11 deletions
diff --git a/opnfv/deployment/fuel/adapter.py b/opnfv/deployment/fuel/adapter.py index 4ba9ca9..a71d6cb 100644 --- a/opnfv/deployment/fuel/adapter.py +++ b/opnfv/deployment/fuel/adapter.py @@ -170,26 +170,30 @@ class FuelAdapter(manager.DeploymentHandler): cmd = 'source openrc;nova-manage version 2>/dev/null' version = None for node in self.nodes: - if node.is_controller(): + if node.is_controller() and node.is_active(): version = node.run_cmd(cmd) break return version def get_sdn_version(self): - cmd = "apt-cache show opendaylight|grep Version|sed 's/^.*\: //'" + cmd = "apt-cache show opendaylight|grep Version" version = None for node in self.nodes: - if node.is_controller(): + if manager.Role.ODL in node.roles and node.is_active(): odl_version = node.run_cmd(cmd) if odl_version: - version = 'OpenDaylight ' + odl_version - break + version = 'OpenDaylight ' + odl_version.split(' ')[-1] + break return version def get_deployment_status(self): - cmd = 'fuel env|grep operational' + cmd = "fuel env|tail -1|awk '{print $3}'" result = self.installer_node.run_cmd(cmd) if result is None or len(result) == 0: - return 'failed' + return 'unknown' + elif 'operational' in result: + return 'active' + elif 'deploy' in result: + return 'deploying' else: return 'active' diff --git a/opnfv/deployment/manager.py b/opnfv/deployment/manager.py index e1fd949..3175cba 100644 --- a/opnfv/deployment/manager.py +++ b/opnfv/deployment/manager.py @@ -174,13 +174,15 @@ class Node(object): 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 @@ -200,6 +202,14 @@ class Node(object): 'info': self.info } + def is_active(self): + ''' + Returns if the node is active + ''' + if self.status == NodeStatus.STATUS_OK: + return True + return False + def is_controller(self): ''' Returns if the node is a controller @@ -220,8 +230,10 @@ class Node(object): ''' 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): ''' |