diff --git a/tests/cloud_tests/instances/nocloudkvm.py b/tests/cloud_tests/instances/nocloudkvm.py
index 76ffb383..ef14157f 100644
--- a/tests/cloud_tests/instances/nocloudkvm.py
+++ b/tests/cloud_tests/instances/nocloudkvm.py
@@ -17,6 +17,7 @@ class NoCloudKVMInstance(base.Instance):
"""NoCloud KVM backed instance."""
platform_name = "nocloud-kvm"
+ _ssh_client = None
def __init__(self, platform, name, properties, config, features,
user_data, meta_data):
@@ -52,6 +53,10 @@ class NoCloudKVMInstance(base.Instance):
os.remove(self.pid_file)
self.pid = None
+ if self._ssh_client:
+ self._ssh_client.close()
+ self._ssh_client = None
+
super(NoCloudKVMInstance, self).destroy()
def _execute(self, command, stdin=None, env=None):
@@ -99,12 +104,13 @@ class NoCloudKVMInstance(base.Instance):
except paramiko.SSHException as e:
raise util.InTargetExecuteError(
b'', b'', -1, command, self.name, reason=e)
- finally:
- client.close()
def _ssh_connect(self, hostname='localhost', username='ubuntu',
banner_timeout=120, retry_attempts=30):
"""Connect via SSH."""
+ if self._ssh_client:
+ return self._ssh_client
+
private_key = paramiko.RSAKey.from_private_key_file(self.ssh_key_file)
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
@@ -113,6 +119,7 @@ class NoCloudKVMInstance(base.Instance):
client.connect(hostname=hostname, username=username,
port=self.ssh_port, pkey=private_key,
banner_timeout=banner_timeout)
+ self._ssh_client = client
return client
except (paramiko.SSHException, TypeError):
time.sleep(1)