Implement "get_hostname" in SSH client class

This method will retrieve the remote machine host name first
executing "hostname" command. If that command fails, it will try
to read "/etc/hostname" file.

Change-Id: I2e4de049d77858e5bf11b7d0758c9494099802f7
Closes-Bug: #1903982
This commit is contained in:
Rodolfo Alonso Hernandez 2020-11-12 14:26:13 +00:00
parent 1f719e26b6
commit af394dd5f8
3 changed files with 9 additions and 2 deletions

View File

@ -286,6 +286,13 @@ class Client(ssh.Client):
command=shell, host=self.host, script=script, stderr=stderr,
stdout=stdout, exit_status=exit_status)
def get_hostname(self):
"""Retrieve the remote machine hostname"""
try:
return self.exec_command('hostname')
except exceptions.SSHExecCommandFailed:
return self.exec_command('cat /etc/hostname')
def _buffer_to_string(data_buffer, encoding):
return data_buffer.decode(encoding).replace("\r\n", "\n").replace(

View File

@ -513,7 +513,7 @@ class BaseTempestTestCase(base_api.BaseNetworkTest):
pkey=self.keypair['private_key'],
**kwargs)
self.assertIn(server['name'],
ssh_client.exec_command('hostname'))
ssh_client.get_hostname())
except (lib_exc.SSHTimeout, ssh_exc.AuthenticationException) as ssh_e:
LOG.debug(ssh_e)
if log_errors:

View File

@ -59,7 +59,7 @@ class InternalDNSTest(base.BaseTempestTestCase):
CONF.validation.image_ssh_user,
pkey=self.keypair['private_key'])
self.assertIn('luke', ssh_client.exec_command('hostname'))
self.assertIn('luke', ssh_client.get_hostname())
leia_port = self.client.list_ports(
network_id=self.network['id'],