Merge "ONOS-2388 Error handling for incorrect and blank passwords for the cli driver connect() function"
diff --git a/TestON/drivers/common/clidriver.py b/TestON/drivers/common/clidriver.py
index f75df5f..b4d0251 100644
--- a/TestON/drivers/common/clidriver.py
+++ b/TestON/drivers/common/clidriver.py
@@ -87,24 +87,31 @@
                                     refused,
                                     'teston>',
                                     '>|#|\$' ],
-                		    120 )
+                            120 )
             if i == 0:  # Accept key, then expect either a password prompt or access
                 main.log.info( "ssh key confirmation received, send yes" )
                 self.handle.sendline( 'yes' )
                 i = 5  # Run the loop again
-                continue 
-            if i == 1:
+                continue
+            if i == 1:  # Password required
                 if self.pwd:
                     main.log.info(
-                        "ssh connection asked for password, gave password" )
-                    self.handle.sendline( self.pwd )
-                    self.handle.expect( '>|#|\$' )
+                    "ssh connection asked for password, gave password" )
                 else:
-                    # FIXME: TestON does not support a username having no
-                    #        password
-                    main.log.error( "Server asked for password, but none was "
-                                    "given in the .topo file" )
-                    main.exit()
+                    main.log.info( "Server asked for password, but none was "
+                                    "given in the .topo file. Trying "
+                                    "no password.")
+                    self.pwd = ""
+                self.handle.sendline( self.pwd )
+                j = self.handle.expect( [
+                                        '>|#|\$',
+                                        'password:|Password:',
+                                        pexpect.EOF,
+                                        pexpect.TIMEOUT ],
+                                        120 )
+                if j != 0:
+                    main.log.error( "Incorrect Password" )
+                    return main.FALSE
             elif i == 2:
                 main.log.error( "Connection timeout" )
                 return main.FALSE
@@ -146,11 +153,11 @@
         result = super( CLI, self ).execute( self )
         defaultPrompt = '.*[$>\#]'
         args = utilities.parse_args( [
-				     "CMD",
+                     "CMD",
                                      "TIMEOUT",
                                      "PROMPT",
                                      "MORE" ],
-            			     **execparams )
+                             **execparams )
 
         expectPrompt = args[ "PROMPT" ] if args[ "PROMPT" ] else defaultPrompt
         self.LASTRSP = ""
@@ -165,12 +172,12 @@
         self.handle.sendline( cmd )
         self.lastCommand = cmd
         index = self.handle.expect( [
-				    expectPrompt,
+                    expectPrompt,
                                     "--More--",
                                     'Command not found.',
                                     pexpect.TIMEOUT,
                                     "^:$" ],
-            			    timeout=timeoutVar )
+                            timeout=timeoutVar )
         if index == 0:
             self.LASTRSP = self.LASTRSP + \
                 self.handle.before + self.handle.after
@@ -264,19 +271,19 @@
         ssh_newkey = 'Are you sure you want to continue connecting'
         refused = "ssh: connect to host " + \
             ip_address + " port 22: Connection refused"
-        
-	cmd = 'scp ' + str( user_name ) + '@' + str( ip_address ) + ':' + \
-	      str( filepath ) + ' ' + str(dst_path )
+
+        cmd = 'scp ' + str( user_name ) + '@' + str( ip_address ) + ':' + \
+          str( filepath ) + ' ' + str(dst_path )
 
         main.log.info( "Sending: " + cmd )
         self.handle = pexpect.spawn( cmd )
         i = self.handle.expect( [
-				ssh_newkey,
-                              	'password:',
-                              	pexpect.EOF,
-                              	pexpect.TIMEOUT,
-                              	refused ],
-            			120 )
+                            ssh_newkey,
+                            'password:',
+                            pexpect.EOF,
+                            pexpect.TIMEOUT,
+                            refused ],
+                            120 )
 
         if i == 0:
             main.log.info( "ssh key confirmation received, send yes" )
@@ -309,4 +316,3 @@
         print self.handle.before
 
         return self.handle
-