diff options
Diffstat (limited to 'modules/opnfv/utils/ssh_utils.py')
-rw-r--r-- | modules/opnfv/utils/ssh_utils.py | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/modules/opnfv/utils/ssh_utils.py b/modules/opnfv/utils/ssh_utils.py index d17f5ae81..4c5ff5c1b 100644 --- a/modules/opnfv/utils/ssh_utils.py +++ b/modules/opnfv/utils/ssh_utils.py @@ -15,6 +15,27 @@ import paramiko from opnfv.utils import opnfv_logger as logger logger = logger.Logger("SSH utils").getLogger() +SSH_TIMEOUT = 60 + +''' Monkey Patch paramiko _custom_start_client ''' +# We are using paramiko 2.1.1 and in the CI in the SFC +# test we are facing this issue: +# https://github.com/robotframework/SSHLibrary/issues/158 +# The fix was merged in paramiko 2.1.3 in this PR: +# https://github.com/robotframework/SSHLibrary/pull/159/files +# Until we upgrade we can use this monkey patch to work +# around the issue + + +def _custom_start_client(self, *args, **kwargs): + self.banner_timeout = 45 + self._orig_start_client(*args, **kwargs) + + +paramiko.transport.Transport._orig_start_client = \ + paramiko.transport.Transport.start_client +paramiko.transport.Transport.start_client = _custom_start_client +''' Monkey Patch paramiko _custom_start_client ''' def get_ssh_client(hostname, @@ -40,11 +61,13 @@ def get_ssh_client(hostname, client.load_system_host_keys() client.connect(hostname, username=username, - pkey=key) + pkey=key, + timeout=SSH_TIMEOUT) else: client.connect(hostname, username=username, - password=password) + password=password, + timeout=SSH_TIMEOUT) return client except Exception as e: @@ -96,7 +119,8 @@ class ProxyHopClient(paramiko.SSHClient): self.proxy_ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) self.proxy_ssh.connect(jh_ip, username=jh_user, - password=jh_pass) + password=jh_pass, + timeout=SSH_TIMEOUT) self.proxy_transport = self.proxy_ssh.get_transport() def connect(self, hostname, port=22, username='root', password=None, @@ -126,7 +150,8 @@ class ProxyHopClient(paramiko.SSHClient): super(ProxyHopClient, self).connect(hostname, username=username, pkey=proxy_key, - sock=self.proxy_channel) + sock=self.proxy_channel, + timeout=timeout) os.remove(self.local_ssh_key) except Exception as e: logger.error(e) |