[deployment_handler] Fix some nits and improve output 15/28915/3
authorjose.lausuch <jose.lausuch@ericsson.com>
Fri, 17 Feb 2017 09:44:38 +0000 (10:44 +0100)
committerJose Lausuch <jose.lausuch@ericsson.com>
Fri, 17 Feb 2017 16:10:04 +0000 (16:10 +0000)
Change-Id: I283564c2f9a651b6c6fd6ec8986a6c1d98a58b2c
Signed-off-by: jose.lausuch <jose.lausuch@ericsson.com>
modules/opnfv/deployment/fuel/adapter.py
modules/opnfv/deployment/manager.py

index 4ba9ca9..a71d6cb 100644 (file)
@@ -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'
index e1fd949..3175cba 100644 (file)
@@ -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):
         '''