Merge "Always run upgrades/updates as tripleo-admin"

This commit is contained in:
Zuul 2018-11-05 18:42:33 +00:00 committed by Gerrit Code Review
commit 71b80730e8
13 changed files with 75 additions and 39 deletions

View File

@ -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.

View File

@ -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')

View File

@ -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])

View File

@ -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.'

View File

@ -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'
)

View File

@ -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('~'),

View File

@ -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)

View File

@ -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',

View File

@ -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',

View File

@ -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 '

View File

@ -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',

View File

@ -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',

View File

@ -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))