User VM's can test in TestON

Change-Id: I9dd60b757d16b0c09e9311ccf4a6616f129a0cb0
diff --git a/TestON/drivers/common/cli/onosclidriver.py b/TestON/drivers/common/cli/onosclidriver.py
index cc6fa9f..7c2acb5 100755
--- a/TestON/drivers/common/cli/onosclidriver.py
+++ b/TestON/drivers/common/cli/onosclidriver.py
@@ -61,7 +61,7 @@
         self.karafPort = None
         self.karafTimeout = None
         self.address = None
-
+        self.karafPromptUser = None
         self.dockerPrompt = None
         self.graph = Graph()
         super( OnosCliDriver, self ).__init__()
@@ -87,6 +87,8 @@
                     self.karafTimeout = self.options[ key ]
                 elif key == "karaf_port":
                     self.karafPort = self.options[ key ]
+                elif key == "karafPromptUser":
+                    self.karafPromptUser = self.options[ key ]
             self.home = self.checkOptions( self.home, "~/onos" )
             self.karafUser = self.checkOptions( self.karafUser, self.user_name )
             self.karafPass = self.checkOptions( self.karafPass, self.pwd )
@@ -94,8 +96,7 @@
             self.dockerPrompt = self.checkOptions( self.dockerPrompt, "~/onos#" )
             self.karafTimeout = self.checkOptions( self.karafTimeout, 7200000  )
 
-            self.karafPrompt = self.karafUser + "@root >"
-
+            self.karafPrompt = self.karafPromptUser + "@root >"
             for key in self.options:
                 if key == 'onosIp':
                     self.onosIp = self.options[ 'onosIp' ]
diff --git a/TestON/drivers/common/cli/onosclusterdriver.py b/TestON/drivers/common/cli/onosclusterdriver.py
index b0f924b..f3de41d 100755
--- a/TestON/drivers/common/cli/onosclusterdriver.py
+++ b/TestON/drivers/common/cli/onosclusterdriver.py
@@ -95,7 +95,9 @@
         self.useDocker = False
         self.dockerPrompt = None
         self.maxNodes = None
+        self.karafPromptPass = None
         self.kubeConfig = None
+        self.karafPromptUser = None
         self.nodes = []
         super( OnosClusterDriver, self ).__init__()
 
@@ -118,6 +120,14 @@
                     self.karafUser = self.options[ key ]
                 elif key == "karaf_password":
                     self.karafPass = self.options[ key ]
+                elif key == "node_username":
+                    self.nodeUser = self.options[ key ]
+                elif key == "node_password":
+                    self.nodePass = self.options[ key ]
+                elif key == "karafPrompt_username":
+                    self.karafPromptUser = self.options[ key ]
+                elif key == "karafPrompt_password":
+                    self.karafPromptPass = self.options[ key ]
                 elif key == "cluster_name":
                     prefix = self.options[ key ]
                 elif key == "useDocker":
@@ -137,6 +147,10 @@
             self.home = self.checkOptions( self.home, "~/onos" )
             self.karafUser = self.checkOptions( self.karafUser, self.user_name )
             self.karafPass = self.checkOptions( self.karafPass, self.pwd )
+            self.nodeUser = self.checkOptions( self.nodeUser, self.user_name )
+            self.nodePass = self.checkOptions( self.nodePass, self.pwd )
+            self.karafPromptUser = self.checkOptions( self.karafPromptUser, self.user_name )
+            self.karafPromptPass = self.checkOptions( self.karafPromptPass, self.pwd )
             self.webUser = self.checkOptions( self.webUser, "onos" )
             self.webPass = self.checkOptions( self.webPass, "rocks" )
             prefix = self.checkOptions( prefix, "ONOS" )
@@ -288,6 +302,7 @@
         home = main.componentDictionary[name]['COMPONENTS'].get( "onos_home", None )
         main.componentDictionary[name]['home'] = self.checkOptions( home, None )
         main.componentDictionary[name]['type'] = "OnosCliDriver"
+        main.componentDictionary[name]['COMPONENTS']['karafPromptUser'] = self.karafPromptUser
         main.componentDictionary[name]['connect_order'] = str( int( main.componentDictionary[name]['connect_order'] ) + 1 )
 
     def createCliComponent( self, name, host ):
@@ -415,8 +430,8 @@
         # TODO: for now we use karaf user name and password also for logging to the onos nodes
         # FIXME: We shouldn't use karaf* for this, what we want is another set of variables to
         #        login to a shell on the server ONOS is running on
-        #main.componentDictionary[name]['user'] = self.karafUser
-        #main.componentDictionary[name]['password'] = self.karafPass
+        main.componentDictionary[name]['user'] = self.nodeUser
+        main.componentDictionary[name]['password'] = self.nodePass
         main.componentDictionary[name]['connect_order'] = str( int( main.componentDictionary[name]['connect_order'] ) + 1 )
 
     def createServerComponent( self, name, ipAddress ):
diff --git a/TestON/tests/SAMP/SAMPstartTemplate_3node/SAMPstartTemplate_3node.topo b/TestON/tests/SAMP/SAMPstartTemplate_3node/SAMPstartTemplate_3node.topo
index 612b658..163dfd2 100755
--- a/TestON/tests/SAMP/SAMPstartTemplate_3node/SAMPstartTemplate_3node.topo
+++ b/TestON/tests/SAMP/SAMPstartTemplate_3node/SAMPstartTemplate_3node.topo
@@ -15,8 +15,8 @@
             <COMPONENTS>
                 <cluster_name></cluster_name>  # Used as a prefix for cluster components. Defaults to 'ONOS'
                 <diff_clihost></diff_clihost> # if it has different host other than localhost for CLI. True or empty. OC# will be used if True.
-                <karaf_username></karaf_username>
-                <karaf_password></karaf_password>
+                <karaf_username>sdn</karaf_username>
+                <karaf_password>rocks</karaf_password>
                 <web_user></web_user>
                 <web_pass></web_pass>
                 <rest_port></rest_port>
diff --git a/TestON/tests/dependencies/Cluster.py b/TestON/tests/dependencies/Cluster.py
index 2e16a45..b905381 100644
--- a/TestON/tests/dependencies/Cluster.py
+++ b/TestON/tests/dependencies/Cluster.py
@@ -746,8 +746,15 @@
             Returns True if it successfully checked
         """
         results = True
-        self.command( "getAddress", specificDriver=2 )
         nodesOutput = self.command( "nodes", specificDriver=2 )
+        if None in nodesOutput:
+            return False
+        try:
+            self.command( "getAddress", specificDriver=2 )
+        except ( ValueError, TypeError ):
+            main.log.error( "Error parsing summary output" )
+            currentResult = False
+            return currentResult
         ips = sorted( self.getIps( activeOnly=True ) )
         for i in nodesOutput:
             try: