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):
"""
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)