diff --git a/broker/hosts.py b/broker/hosts.py index 93a9f7c2..ccffa8bb 100644 --- a/broker/hosts.py +++ b/broker/hosts.py @@ -26,6 +26,7 @@ def __init__(self, hostname=None, name=None, from_dict=False, **kwargs): self.port = kwargs.get("port", settings.HOST_SSH_PORT) self.key_filename = kwargs.get("key_filename", settings.HOST_SSH_KEY_FILENAME) self._session = None + self.socket_connect_timeout = kwargs.get("socket_connect_timeout", 60) def __del__(self): """Try to close the connection on garbage collection of the host instance""" @@ -45,7 +46,7 @@ def session(self): return self._session def connect( - self, username=None, password=None, timeout=None, port=22, key_filename=None + self, username=None, password=None, timeout=None, port=22, key_filename=None, ): username = username or self.username password = password or self.password @@ -63,6 +64,7 @@ def connect( password=password, port=_port, key_filename=key_filename, + socket_connect_timeout=self.socket_connect_timeout ) def close(self): diff --git a/broker/session.py b/broker/session.py index e3552dc4..3f4cee3a 100644 --- a/broker/session.py +++ b/broker/session.py @@ -31,7 +31,8 @@ def __init__(self, **kwargs): sock.settimeout(kwargs.get("timeout")) port = kwargs.get("port", 22) key_filename = kwargs.get("key_filename") - helpers.simple_retry(sock.connect, [(host, port)]) + socket_connect_timeout = kwargs.get("socket_connect_timeout", 60) + helpers.simple_retry(sock.connect, [(host, port)], max_timeout=socket_connect_timeout) self.session = ssh2_Session() self.session.handshake(sock) if key_filename: