Allow disabling of long-lived SSH connections.

Currently, SSHPool connections are kept alive indefinitely.  This can
be good for many cases, but sometimes it is not desirable.  For
example, this causes unit tests which use SSH to not complete because
of the open connections.  This patch allows users to revert back
to paramiko's regular timeout policy.

Change-Id: Ifa96508b38d90610390c9ec3d48a7de75d02f08b
This commit is contained in:
Avishay Traeger
2013-02-06 23:04:15 +02:00
parent da5bfac8c9
commit b8d7170711

View File

@@ -277,7 +277,7 @@ class SSHPool(pools.Pool):
self.port = port
self.login = login
self.password = password
self.conn_timeout = conn_timeout
self.conn_timeout = conn_timeout if conn_timeout else None
self.privatekey = privatekey
super(SSHPool, self).__init__(*args, **kwargs)
@@ -310,9 +310,10 @@ class SSHPool(pools.Pool):
# the sockettimeout to None and setting a keepalive packet so that,
# the server will keep the connection open. All that does is send
# a keepalive packet every ssh_conn_timeout seconds.
transport = ssh.get_transport()
transport.sock.settimeout(None)
transport.set_keepalive(self.conn_timeout)
if self.conn_timeout:
transport = ssh.get_transport()
transport.sock.settimeout(None)
transport.set_keepalive(self.conn_timeout)
return ssh
except Exception as e:
msg = _("Error connecting via ssh: %s") % e