diff --git a/releasenotes/notes/upgrade-always-use-tripleo-admin-53505e9ce380cd4c.yaml b/releasenotes/notes/upgrade-always-use-tripleo-admin-53505e9ce380cd4c.yaml new file mode 100644 index 000000000..e5a3633e3 --- /dev/null +++ b/releasenotes/notes/upgrade-always-use-tripleo-admin-53505e9ce380cd4c.yaml @@ -0,0 +1,12 @@ +--- +upgrade: + - | + Upgrades and updates are now use tripleo-admin user to connect to + the overcloud by default, which makes it work the same in this + regard as fresh deployment. +deprecations: + - | + The `--ssh-user` parameter for `overcloud upgrade run` command and + similar commands is now deprecated and will be removed. In the + future, `tripleo-admin` user will be used always, which will make + it work the same as deployment workflow. diff --git a/tripleoclient/tests/fixture_data/deployment.py b/tripleoclient/tests/fixture_data/deployment.py index b34578111..33258d1b4 100644 --- a/tripleoclient/tests/fixture_data/deployment.py +++ b/tripleoclient/tests/fixture_data/deployment.py @@ -20,11 +20,9 @@ class DeploymentWorkflowFixture(fixtures.Fixture): def _setUp(self): super(DeploymentWorkflowFixture, self)._setUp() - self.mock_get_overcloud_hosts = self.useFixture(fixtures.MockPatch( - 'tripleoclient.workflows.deployment.get_overcloud_hosts') - ).mock - self.mock_enable_ssh_admin = self.useFixture(fixtures.MockPatch( - 'tripleoclient.workflows.deployment.enable_ssh_admin') + self.mock_get_hosts_and_enable_ssh_admin = self.useFixture( + fixtures.MockPatch('tripleoclient.workflows.deployment.' + 'get_hosts_and_enable_ssh_admin') ).mock self.mock_config_download = self.useFixture(fixtures.MockPatch( 'tripleoclient.workflows.deployment.config_download') diff --git a/tripleoclient/tests/v1/overcloud_deploy/test_overcloud_deploy.py b/tripleoclient/tests/v1/overcloud_deploy/test_overcloud_deploy.py index 0823a1dc9..c50245d0c 100644 --- a/tripleoclient/tests/v1/overcloud_deploy/test_overcloud_deploy.py +++ b/tripleoclient/tests/v1/overcloud_deploy/test_overcloud_deploy.py @@ -1479,8 +1479,7 @@ class TestDeployOvercloud(fakes.TestDeployOvercloud): self.cmd.take_action(parsed_args) self.assertTrue(mock_deploy_tmpdir.called) - self.assertTrue(fixture.mock_enable_ssh_admin.called) - self.assertTrue(fixture.mock_get_overcloud_hosts.called) + self.assertTrue(fixture.mock_get_hosts_and_enable_ssh_admin.called) self.assertTrue(fixture.mock_config_download.called) self.assertTrue(fixture.mock_set_deployment_status.called) self.assertEqual( @@ -1511,8 +1510,7 @@ class TestDeployOvercloud(fakes.TestDeployOvercloud): self.cmd.take_action(parsed_args) self.assertFalse(mock_deploy_tmpdir.called) - self.assertTrue(fixture.mock_enable_ssh_admin.called) - self.assertTrue(fixture.mock_get_overcloud_hosts.called) + self.assertTrue(fixture.mock_get_hosts_and_enable_ssh_admin.called) self.assertTrue(fixture.mock_config_download.called) self.assertTrue(fixture.mock_set_deployment_status.called) self.assertEqual( @@ -1552,8 +1550,7 @@ class TestDeployOvercloud(fakes.TestDeployOvercloud): self.cmd.take_action, parsed_args) self.assertFalse(mock_deploy_tmpdir.called) - self.assertTrue(fixture.mock_enable_ssh_admin.called) - self.assertTrue(fixture.mock_get_overcloud_hosts.called) + self.assertTrue(fixture.mock_get_hosts_and_enable_ssh_admin.called) self.assertTrue(fixture.mock_config_download.called) self.assertTrue(fixture.mock_set_deployment_status.called) self.assertEqual( @@ -1584,8 +1581,7 @@ class TestDeployOvercloud(fakes.TestDeployOvercloud): parsed_args = self.check_parser(self.cmd, arglist, verifylist) self.cmd.take_action(parsed_args) - self.assertTrue(fixture.mock_enable_ssh_admin.called) - self.assertTrue(fixture.mock_get_overcloud_hosts.called) + self.assertTrue(fixture.mock_get_hosts_and_enable_ssh_admin.called) self.assertTrue(fixture.mock_config_download.called) self.assertEqual('ansible.cfg', fixture.mock_config_download.call_args[0][8]) diff --git a/tripleoclient/tests/v1/overcloud_ffwd_upgrade/test_overcloud_ffwd_upgrade.py b/tripleoclient/tests/v1/overcloud_ffwd_upgrade/test_overcloud_ffwd_upgrade.py index 8d5d266ce..94544bb3a 100644 --- a/tripleoclient/tests/v1/overcloud_ffwd_upgrade/test_overcloud_ffwd_upgrade.py +++ b/tripleoclient/tests/v1/overcloud_ffwd_upgrade/test_overcloud_ffwd_upgrade.py @@ -38,6 +38,8 @@ class TestFFWDUpgradePrepare(fakes.TestFFWDUpgradePrepare): @mock.patch('tripleoclient.v1.overcloud_deploy.DeployOvercloud.' 'take_action') + @mock.patch('tripleoclient.workflows.deployment.' + 'get_hosts_and_enable_ssh_admin', autospec=True) @mock.patch('tripleoclient.workflows.deployment.create_overcloudrc', autospec=True) @mock.patch('tripleoclient.utils.write_overcloudrc', autospec=True) @@ -67,6 +69,7 @@ class TestFFWDUpgradePrepare(fakes.TestFFWDUpgradePrepare): mock_prepend_env, mock_write_overcloudrc, mock_overcloudrc, + mock_enable_ssh_admin, mock_overcloud_deploy): mock_stack = mock.Mock() @@ -93,6 +96,10 @@ class TestFFWDUpgradePrepare(fakes.TestFFWDUpgradePrepare): container="mystack") mock_write_overcloudrc.assert_called_once_with("mystack", mock.ANY) + mock_enable_ssh_admin.assert_called_once_with( + self.cmd.log, self.app.client_manager, mock_stack, + parsed_args.overcloud_ssh_network, + parsed_args.overcloud_ssh_user, parsed_args.overcloud_ssh_key) mock_overcloud_deploy.assert_called_once_with(parsed_args) @mock.patch('tripleoclient.v1.overcloud_deploy.DeployOvercloud.' diff --git a/tripleoclient/tests/v1/overcloud_upgrade/test_overcloud_upgrade.py b/tripleoclient/tests/v1/overcloud_upgrade/test_overcloud_upgrade.py index 089836d57..f50a87715 100644 --- a/tripleoclient/tests/v1/overcloud_upgrade/test_overcloud_upgrade.py +++ b/tripleoclient/tests/v1/overcloud_upgrade/test_overcloud_upgrade.py @@ -36,6 +36,8 @@ class TestOvercloudUpgradePrepare(fakes.TestOvercloudUpgradePrepare): self.mock_uuid4 = uuid4_patcher.start() self.addCleanup(self.mock_uuid4.stop) + @mock.patch('tripleoclient.workflows.deployment.' + 'get_hosts_and_enable_ssh_admin', autospec=True) @mock.patch('tripleoclient.workflows.deployment.create_overcloudrc', autospec=True) @mock.patch('tripleoclient.utils.write_overcloudrc', autospec=True) @@ -63,7 +65,8 @@ class TestOvercloudUpgradePrepare(fakes.TestOvercloudUpgradePrepare): mock_get_stack, add_env, mock_write_overcloudrc, - mock_overcloudrc): + mock_overcloudrc, + mock_enable_ssh_admin): mock_stack = mock.Mock() mock_stack.stack_name = 'overcloud' @@ -88,6 +91,10 @@ class TestOvercloudUpgradePrepare(fakes.TestOvercloudUpgradePrepare): container="overcloud") mock_write_overcloudrc.assert_called_once_with("overcloud", mock.ANY) + mock_enable_ssh_admin.assert_called_once_with( + self.cmd.log, self.app.client_manager, mock_stack, + parsed_args.overcloud_ssh_network, + parsed_args.overcloud_ssh_user, parsed_args.overcloud_ssh_key) @mock.patch('tripleoclient.utils.prepend_environment', autospec=True) @mock.patch('tripleoclient.workflows.package_update.update', @@ -189,7 +196,7 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun): inventory_file=mock_open().read(), playbook=book, ansible_queue_name=constants.UPGRADE_QUEUE, - node_user='heat-admin', + node_user='tripleo-admin', tags='', skip_tags='validation' ) @@ -220,7 +227,7 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun): inventory_file=mock_open().read(), playbook='fake-playbook.yaml', ansible_queue_name=constants.UPGRADE_QUEUE, - node_user='heat-admin', + node_user='tripleo-admin', tags='', skip_tags='' ) @@ -251,7 +258,7 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun): inventory_file=mock_open().read(), playbook=book, ansible_queue_name=constants.UPGRADE_QUEUE, - node_user='heat-admin', + node_user='tripleo-admin', tags='', skip_tags='' ) @@ -284,7 +291,7 @@ class TestOvercloudUpgradeRun(fakes.TestOvercloudUpgradeRun): inventory_file=mock_open().read(), playbook=book, ansible_queue_name=constants.UPGRADE_QUEUE, - node_user='heat-admin', + node_user='tripleo-admin', tags='', skip_tags='pre-upgrade,validation' ) diff --git a/tripleoclient/utils.py b/tripleoclient/utils.py index 796b294fd..204d430a5 100644 --- a/tripleoclient/utils.py +++ b/tripleoclient/utils.py @@ -922,7 +922,7 @@ def load_environment_directories(directories): def get_tripleo_ansible_inventory(inventory_file='', - ssh_user='heat-admin', + ssh_user='tripleo-admin', stack='overcloud'): if not inventory_file: inventory_file = '%s/%s' % (os.path.expanduser('~'), diff --git a/tripleoclient/v1/overcloud_deploy.py b/tripleoclient/v1/overcloud_deploy.py index 7ef518708..c716d65c4 100644 --- a/tripleoclient/v1/overcloud_deploy.py +++ b/tripleoclient/v1/overcloud_deploy.py @@ -905,12 +905,9 @@ class DeployOvercloud(command.Command): plan=stack.stack_name) try: - hosts = deployment.get_overcloud_hosts( - stack, parsed_args.overcloud_ssh_network) - deployment.enable_ssh_admin( - self.log, self.clients, - stack.stack_name, - hosts, + deployment.get_hosts_and_enable_ssh_admin( + self.log, self.clients, stack, + parsed_args.overcloud_ssh_network, parsed_args.overcloud_ssh_user, parsed_args.overcloud_ssh_key) diff --git a/tripleoclient/v1/overcloud_external_update.py b/tripleoclient/v1/overcloud_external_update.py index e7e48623b..3ba3ce399 100644 --- a/tripleoclient/v1/overcloud_external_update.py +++ b/tripleoclient/v1/overcloud_external_update.py @@ -54,9 +54,9 @@ class ExternalUpdateRun(command.Command): parser.add_argument("--ssh-user", dest="ssh_user", action="store", - default="heat-admin", - help=_("The ssh user name for connecting to " - "the overcloud nodes.") + default="tripleo-admin", + help=_("DEPRECATED: Only tripleo-admin should be " + "used as ssh user.") ) parser.add_argument('--tags', dest='tags', diff --git a/tripleoclient/v1/overcloud_external_upgrade.py b/tripleoclient/v1/overcloud_external_upgrade.py index e6f1b3c39..d1d92f1bd 100644 --- a/tripleoclient/v1/overcloud_external_upgrade.py +++ b/tripleoclient/v1/overcloud_external_upgrade.py @@ -54,9 +54,9 @@ class ExternalUpgradeRun(command.Command): parser.add_argument("--ssh-user", dest="ssh_user", action="store", - default="heat-admin", - help=_("The ssh user name for connecting to " - "the overcloud nodes.") + default="tripleo-admin", + help=_("DEPRECATED: Only tripleo-admin should be " + "used as ssh user.") ) parser.add_argument('--tags', dest='tags', diff --git a/tripleoclient/v1/overcloud_ffwd_upgrade.py b/tripleoclient/v1/overcloud_ffwd_upgrade.py index a015a6501..deb0630b2 100644 --- a/tripleoclient/v1/overcloud_ffwd_upgrade.py +++ b/tripleoclient/v1/overcloud_ffwd_upgrade.py @@ -90,6 +90,12 @@ class FFWDUpgradePrepare(DeployOvercloud): clients, container=stack_name) oooutils.write_overcloudrc(stack_name, overcloudrcs) + # refresh stack info and enable ssh admin for Ansible-via-Mistral + stack = oooutils.get_stack(clients.orchestration, parsed_args.stack) + deployment.get_hosts_and_enable_ssh_admin( + self.log, clients, stack, parsed_args.overcloud_ssh_network, + parsed_args.overcloud_ssh_user, parsed_args.overcloud_ssh_key) + self.log.info("FFWD Upgrade Prepare on stack {0} complete.".format( parsed_args.stack)) @@ -124,9 +130,9 @@ class FFWDUpgradeRun(command.Command): parser.add_argument("--ssh-user", dest="ssh_user", action="store", - default="heat-admin", - help=_("The ssh user name for connecting to " - "the overcloud nodes.") + default="tripleo-admin", + help=_("DEPRECATED: Only tripleo-admin should be " + "used as ssh user.") ) parser.add_argument('--stack', dest='stack', help=_('Name or ID of heat stack ' diff --git a/tripleoclient/v1/overcloud_update.py b/tripleoclient/v1/overcloud_update.py index 726ebe04a..83244ccab 100644 --- a/tripleoclient/v1/overcloud_update.py +++ b/tripleoclient/v1/overcloud_update.py @@ -118,8 +118,8 @@ class UpdateRun(command.Command): dest="ssh_user", action="store", default="tripleo-admin", - help=_("The ssh user name for connecting to " - "the overcloud nodes.") + help=_("DEPRECATED: Only tripleo-admin should be " + "used as ssh user.") ) parser.add_argument('--static-inventory', dest='static_inventory', diff --git a/tripleoclient/v1/overcloud_upgrade.py b/tripleoclient/v1/overcloud_upgrade.py index fcf1394f3..0612215f8 100644 --- a/tripleoclient/v1/overcloud_upgrade.py +++ b/tripleoclient/v1/overcloud_upgrade.py @@ -72,6 +72,12 @@ class UpgradePrepare(DeployOvercloud): clients, container=stack_name) oooutils.write_overcloudrc(stack_name, overcloudrcs) + # refresh stack info and enable ssh admin for Ansible-via-Mistral + stack = oooutils.get_stack(clients.orchestration, parsed_args.stack) + deployment.get_hosts_and_enable_ssh_admin( + self.log, clients, stack, parsed_args.overcloud_ssh_network, + parsed_args.overcloud_ssh_user, parsed_args.overcloud_ssh_key) + self.log.info("Completed Overcloud Upgrade Prepare for stack " "{0}".format(stack_name)) @@ -145,9 +151,9 @@ class UpgradeRun(command.Command): parser.add_argument("--ssh-user", dest="ssh_user", action="store", - default="heat-admin", - help=_("The ssh user name for connecting to " - "the overcloud nodes.") + default="tripleo-admin", + help=_("DEPRECATED: Only tripleo-admin should be " + "used as ssh user.") ) parser.add_argument('--skip-tags', dest='skip_tags', diff --git a/tripleoclient/workflows/deployment.py b/tripleoclient/workflows/deployment.py index 4dba86dca..420089897 100644 --- a/tripleoclient/workflows/deployment.py +++ b/tripleoclient/workflows/deployment.py @@ -173,6 +173,13 @@ def wait_for_ssh_port(host): time.sleep(1) +def get_hosts_and_enable_ssh_admin(log, clients, stack, overcloud_ssh_network, + overcloud_ssh_user, overcloud_ssh_key): + hosts = get_overcloud_hosts(stack, overcloud_ssh_network) + enable_ssh_admin(log, clients, stack.stack_name, hosts, + overcloud_ssh_user, overcloud_ssh_key) + + def enable_ssh_admin(log, clients, plan_name, hosts, ssh_user, ssh_key): print("Enabling ssh admin (tripleo-admin) for hosts:") print(" ".join(hosts))