Add support for Storperf job status
[yardstick.git] / yardstick / ssh.py
index 339f834..8b71fe6 100644 (file)
@@ -69,6 +69,8 @@ import logging
 
 LOG = logging.getLogger(__name__)
 
+DEFAULT_PORT = 22
+
 
 class SSHError(Exception):
     pass
@@ -81,7 +83,7 @@ class SSHTimeout(SSHError):
 class SSH(object):
     """Represent ssh connection."""
 
-    def __init__(self, user, host, port=22, pkey=None,
+    def __init__(self, user, host, port=DEFAULT_PORT, pkey=None,
                  key_filename=None, password=None):
         """Initialize SSH client.
 
@@ -95,7 +97,8 @@ class SSH(object):
 
         self.user = user
         self.host = host
-        self.port = port
+        # we may get text port from YAML, convert to int
+        self.port = int(port)
         self.pkey = self._get_pkey(pkey) if pkey else None
         self.password = password
         self.key_filename = key_filename
@@ -121,7 +124,9 @@ class SSH(object):
             self._client.connect(self.host, username=self.user,
                                  port=self.port, pkey=self.pkey,
                                  key_filename=self.key_filename,
-                                 password=self.password, timeout=1)
+                                 password=self.password,
+                                 allow_agent=False, look_for_keys=False,
+                                 timeout=1)
             return self._client
         except Exception as e:
             message = ("Exception %(exception_type)s was raised "
@@ -261,3 +266,8 @@ class SSH(object):
 
         with SCPClient(client.get_transport()) as scp:
             scp.put(files, remote_path, recursive)
+
+    # keep shell running in the background, e.g. screen
+    def send_command(self, command):
+        client = self._get_client()
+        client.exec_command(command, get_pty=True)