[dts] [PATCH V1 5/5]framework/ssh_pexpect: add retry when connect to vm

Xiao Qimai qimaix.xiao at intel.com
Tue Jun 30 11:46:38 CEST 2020


Signed-off-by: Xiao Qimai <qimaix.xiao at intel.com>
---
 framework/ssh_pexpect.py | 25 +++++++++++++++++++------
 1 file changed, 19 insertions(+), 6 deletions(-)

diff --git a/framework/ssh_pexpect.py b/framework/ssh_pexpect.py
index 0230207..1f839d4 100644
--- a/framework/ssh_pexpect.py
+++ b/framework/ssh_pexpect.py
@@ -34,15 +34,28 @@ class SSHPexpect:
         threads number is limited to 8 which less than 10. Lock number can
         be modified along with MaxStartups value.
         """
+        retry_times = 10
         try:
-            self.session = pxssh.pxssh(encoding='utf-8')
             if ':' in self.host:
-                self.ip = self.host.split(':')[0]
-                self.port = int(self.host.split(':')[1])
-                self.session.login(self.ip, self.username,
-                                   self.password, original_prompt='[$#>]',
-                                   port=self.port, login_timeout=20)
+                while retry_times:
+                    self.ip = self.host.split(':')[0]
+                    self.port = int(self.host.split(':')[1])
+                    self.session = pxssh.pxssh(encoding='utf-8')
+                    try:
+                        self.session.login(self.ip, self.username,
+                                           self.password, original_prompt='[$#>]',
+                                           port=self.port, login_timeout=20)
+                    except Exception as e:
+                        print(e)
+                        time.sleep(2)
+                        retry_times -= 1
+                        print("retry %d times connecting..." % (10-retry_times))
+                    else:
+                        break
+                else:
+                    raise Exception('connect to %s:%s failed' % (self.ip, self.port))
             else:
+                self.session = pxssh.pxssh(encoding='utf-8')
                 self.session.login(self.host, self.username,
                                    self.password, original_prompt='[$#>]')
             self.send_expect('stty -echo', '#')
-- 
1.8.3.1



More information about the dts mailing list