]> git-server-git.apps.pok.os.sepia.ceph.com Git - teuthology.git/commitdiff
openstack: TeuthologyOpenStack.ssh continuous output
authorLoic Dachary <ldachary@redhat.com>
Sun, 29 Nov 2015 18:07:36 +0000 (19:07 +0100)
committerLoic Dachary <ldachary@redhat.com>
Wed, 16 Dec 2015 00:39:09 +0000 (01:39 +0100)
Instead of waiting for the completion of the ssh command,
display stdout/stderr continously.

Signed-off-by: Loic Dachary <loic@dachary.org>
teuthology/openstack/__init__.py
teuthology/openstack/test/test_openstack.py

index 4fcb8d77b65a053aa0d8e9ed2a04a9fcd512f9f1..009a1d1a3c93da36ef115192064cdf6eb82b5c05 100644 (file)
@@ -523,17 +523,17 @@ ssh access           : ssh {identity}{username}@{ip} # logs in /usr/share/nginx/
             log.debug("ssh overriding key with " + self.key_filename)
             client_args['key_filename'] = self.key_filename
         client = connection.connect(**client_args)
-        stdin, stdout, stderr = client.exec_command(command)
-        stdout.channel.settimeout(300)
-        out = ''
-        try:
-            out = stdout.read()
-            log.debug('ssh stdout ' + command + ' ' + out)
-        except Exception:
-            log.exception('ssh ' + command + ' failed')
-        err = stderr.read()
-        log.debug('ssh stderr ' + command + ' ' + err)
-        return out + ' ' + err
+        # get the I/O channel to iterate line by line
+        transport = client.get_transport()
+        channel = transport.open_session()
+        channel.get_pty()
+        channel.settimeout(900)
+        output = channel.makefile('r', 1)
+        log.debug(":ssh@" + ip + ":" + command)
+        channel.exec_command(command)
+        for line in iter(output.readline, b''):
+            log.info(line.strip())
+        return channel.recv_exit_status()
 
     def verify_openstack(self):
         """
index c46287be3f9339962efd7907347fd4833015d4ea..06bd9486cc75cc799d3a874a6de5b7a7e603a164 100644 (file)
@@ -280,15 +280,16 @@ openstack keypair delete {key_name} || true
         teuthology.teuthology_suite = 'echo --'
 
         teuthology.main()
-        assert 'Ubuntu 14.04' in teuthology.ssh("lsb_release -a")
-        variables = teuthology.ssh("grep 'substituded variables' /var/log/cloud-init.log")
-        assert "nworkers=" + str(args.simultaneous_jobs) in variables
-        assert "username=" + teuthology.username in variables
-        assert "upload=--archive-upload user@archive:/tmp" in variables
-        assert "clone=git clone" in variables
-        assert os.environ['OS_AUTH_URL'] in variables
-
-        assert " ".join(teuthology_argv) in caplog.text()
+        assert 0 == teuthology.ssh("lsb_release -a")
+        assert 0 == teuthology.ssh("grep 'substituded variables' /var/log/cloud-init.log")
+        l = caplog.text()
+        assert 'Ubuntu 14.04' in l
+        assert "nworkers=" + str(args.simultaneous_jobs) in l
+        assert "username=" + teuthology.username in l
+        assert "upload=--archive-upload user@archive:/tmp" in l
+        assert "clone=git clone" in l
+        assert os.environ['OS_AUTH_URL'] in l
+        assert " ".join(teuthology_argv) in l
 
         if self.can_create_floating_ips:
             ip = teuthology.get_floating_ip(self.name)