Merge "Obtain overcloud ssh username based on RHOSP release"

This commit is contained in:
Zuul 2023-03-23 16:11:48 +00:00 committed by Gerrit Code Review
commit 71eda42d8e
7 changed files with 22 additions and 6 deletions

View File

@ -206,7 +206,7 @@ def run_command_on_amphora(command: str,
start_agent_cmd = f'eval {ssh_agent_output} {ssh_add_command}; '
# Example: ssh -A -t heat-admin@192.168.24.13
controller_user = CONF.tobiko.tripleo.overcloud_ssh_username
controller_user = tripleo.get_overcloud_ssh_username()
controller_ssh_command = f'ssh -A -t {controller_user}@{controller_ip}'
amphora_user = CONF.tobiko.octavia.amphora_user

View File

@ -97,7 +97,7 @@ class OvercloudMetalsmithApiTest(testtools.TestCase):
netaddr.IPAddress(host_config.hostname)
self.assertEqual(CONF.tobiko.tripleo.overcloud_ssh_port,
host_config.port)
self.assertEqual(CONF.tobiko.tripleo.overcloud_ssh_username,
self.assertEqual(tripleo.get_overcloud_ssh_username(),
host_config.username)
key_filename = tobiko.tobiko_config_path(
CONF.tobiko.tripleo.overcloud_ssh_key_filename)

View File

@ -61,7 +61,9 @@ class OvercloudConfigTest(unit.TobikoUnitTest):
self.assertLess(value, 2 ** 16)
def test_overcloud_ssh_username(self):
self.assertIsInstance(TRIPLEO_CONF.overcloud_ssh_username, str)
value = TRIPLEO_CONF.overcloud_ssh_username
if value is not None:
self.assertIsInstance(value, str)
def test_overcloud_rcfile(self):
for rcfile in TRIPLEO_CONF.overcloud_rcfile:

View File

@ -51,6 +51,7 @@ overcloud_ssh_client = overcloud.overcloud_ssh_client
overcloud_version = overcloud.overcloud_version
skip_if_missing_overcloud = overcloud.skip_if_missing_overcloud
skip_unless_has_overcloud = overcloud.skip_unless_has_overcloud
get_overcloud_ssh_username = overcloud.get_overcloud_ssh_username
skip_if_ceph_rgw = containers.skip_if_ceph_rgw
get_rhosp_release = _rhosp.get_rhosp_release

View File

@ -26,6 +26,7 @@ import tobiko
from tobiko.shell import ansible
from tobiko.shell import sh
from tobiko.shell import ssh
from tobiko.tripleo import _overcloud
from tobiko.tripleo import _undercloud
from tobiko.tripleo import _config
@ -129,7 +130,7 @@ def read_tripleo_ansible_inventory():
ssh_client = _undercloud.undercloud_ssh_client()
script = READ_TRIPLEO_ANSIBLE_INVENTORY_SCRIPT.format(
undercloud_rcfile=tripleo.undercloud_rcfile[0],
overcloud_ssh_username=tripleo.overcloud_ssh_username)
overcloud_ssh_username=_overcloud.get_overcloud_ssh_username())
return sh.execute('/bin/bash', stdin=script, ssh_client=ssh_client).stdout

View File

@ -236,7 +236,7 @@ class OvercloudHostConfig(tobiko.SharedFixture):
if self.port is None:
self.port = CONF.tobiko.tripleo.overcloud_ssh_port
if self.username is None:
self.username = CONF.tobiko.tripleo.overcloud_ssh_username
self.username = get_overcloud_ssh_username()
if self.key_filename is None:
self.key_filename = self.key_file.key_filename
@ -378,6 +378,18 @@ def check_overcloud(min_version: str = None,
mismatch_error=OvercloudVersionMismatch)
@functools.lru_cache()
def get_overcloud_ssh_username():
if CONF.tobiko.tripleo.overcloud_ssh_username is not None:
return CONF.tobiko.tripleo.overcloud_ssh_username
if tobiko.check_version(_undercloud.undercloud_version(),
min_version='17.0'):
return "tripleo-admin"
else:
return "heat-admin"
class OvercloudNotFound(tobiko.ObjectNotFound):
message = 'overcloud not found: {cause}'

View File

@ -48,7 +48,7 @@ OPTIONS = [
default=None,
help="TCP port of SSH server on overcloud hosts"),
cfg.StrOpt('overcloud_ssh_username',
default='heat-admin',
default=None,
help="Default username used to connect to overcloud nodes"),
cfg.StrOpt('overcloud_ssh_key_filename',
default='~/.ssh/id_overcloud',