Merge "Update Heat stack on update/upgrade/ffwd converge"

This commit is contained in:
Zuul 2018-05-09 23:09:17 +00:00 committed by Gerrit Code Review
commit 858529b4a7
5 changed files with 25 additions and 77 deletions

View File

@ -190,33 +190,10 @@ class TestFFWDUpgradeConverge(fakes.TestFFWDUpgradeConverge):
app_args.verbose_level = 1 app_args.verbose_level = 1
self.cmd = overcloud_ffwd_upgrade.FFWDUpgradeConverge(self.app, self.cmd = overcloud_ffwd_upgrade.FFWDUpgradeConverge(self.app,
app_args) app_args)
uuid4_patcher = mock.patch('uuid.uuid4', return_value="UUID4")
self.mock_uuid4 = uuid4_patcher.start()
self.addCleanup(self.mock_uuid4.stop)
@mock.patch('tripleoclient.utils.prepend_environment', autospec=True) @mock.patch(
@mock.patch('tripleoclient.utils.get_stack', autospec=True) 'tripleoclient.v1.overcloud_deploy.DeployOvercloud.take_action')
@mock.patch('tripleoclient.workflows.package_update.ffwd_converge_nodes', def test_ffwd_upgrade_converge(self, deploy_action):
autospec=True)
@mock.patch('os.path.expanduser')
@mock.patch('oslo_concurrency.processutils.execute')
@mock.patch('six.moves.builtins.open')
@mock.patch('tripleoclient.v1.overcloud_deploy.DeployOvercloud.'
'_deploy_tripleo_heat_templates_tmpdir', autospec=True)
def test_ffwd_upgrade_converge(
self,
mock_deploy,
mock_open,
mock_execute,
mock_expanduser,
ffwd_converge_nodes,
mock_get_stack,
mock_prepend_env):
mock_expanduser.return_value = '/home/fake/'
mock_stack = mock.Mock()
mock_stack.stack_name = 'le_overcloud'
mock_get_stack.return_value = mock_stack
argslist = ['--stack', 'le_overcloud', '--templates', '--yes'] argslist = ['--stack', 'le_overcloud', '--templates', '--yes']
verifylist = [ verifylist = [
('stack', 'le_overcloud'), ('stack', 'le_overcloud'),
@ -224,10 +201,13 @@ class TestFFWDUpgradeConverge(fakes.TestFFWDUpgradeConverge):
('yes', True) ('yes', True)
] ]
parsed_args = self.check_parser(self.cmd, argslist, verifylist) parsed_args = self.check_parser(self.cmd, argslist, verifylist)
with mock.patch('os.path.exists') as mock_exists:
with mock.patch('os.path.exists') as mock_exists, \
mock.patch('os.path.isfile') as mock_isfile:
mock_exists.return_value = True mock_exists.return_value = True
mock_isfile.return_value = True
self.cmd.take_action(parsed_args) self.cmd.take_action(parsed_args)
ffwd_converge_nodes.assert_called_once_with( assert('/usr/share/openstack-tripleo-heat-templates/'
self.app.client_manager, 'environments/lifecycle/ffwd-upgrade-converge.yaml'
queue_name=constants.FFWD_UPGRADE_QUEUE, in parsed_args.environment_files)
container='le_overcloud') deploy_action.assert_called_once_with(parsed_args)

View File

@ -240,14 +240,9 @@ class TestOvercloudUpdateConverge(fakes.TestOvercloudUpdateConverge):
app_args.verbose_level = 1 app_args.verbose_level = 1
self.cmd = overcloud_update.UpdateConverge(self.app, app_args) self.cmd = overcloud_update.UpdateConverge(self.app, app_args)
@mock.patch('tripleoclient.utils.get_stack')
@mock.patch('tripleoclient.workflows.package_update.update_converge_nodes')
@mock.patch( @mock.patch(
'tripleoclient.v1.overcloud_deploy.DeployOvercloud.take_action') 'tripleoclient.v1.overcloud_deploy.DeployOvercloud.take_action')
def test_update_converge(self, deploy_action, converge_workflow, def test_update_converge(self, deploy_action):
get_stack):
get_stack.return_value.stack_name = 'cloud'
argslist = ['--templates', '--stack', 'cloud'] argslist = ['--templates', '--stack', 'cloud']
verifylist = [ verifylist = [
('stack', 'cloud') ('stack', 'cloud')
@ -263,6 +258,3 @@ class TestOvercloudUpdateConverge(fakes.TestOvercloudUpdateConverge):
'environments/lifecycle/update-converge.yaml' 'environments/lifecycle/update-converge.yaml'
in parsed_args.environment_files) in parsed_args.environment_files)
deploy_action.assert_called_once_with(parsed_args) deploy_action.assert_called_once_with(parsed_args)
converge_workflow.assert_called_once_with(
self.app.client_manager, container='cloud',
queue_name='update')

View File

@ -164,11 +164,11 @@ class FFWDUpgradeConverge(DeployOvercloud):
"""Converge the fast-forward upgrade on Overcloud Nodes """Converge the fast-forward upgrade on Overcloud Nodes
This is the last step for completion of a fast forward upgrade. This is the last step for completion of a fast forward upgrade.
There is no heat stack update performed here. The main task is updating The main task is updating the plan and stack to unblock future
the plan to unblock future stack updates. For the ffwd upgrade workflow stack updates. For the ffwd upgrade workflow we have set and
we have set and used the config-download Software/Structured Deployment used the config-download Software/Structured Deployment for the
for the OS::TripleO and OS::Heat resources. This unsets those back OS::TripleO and OS::Heat resources. This unsets those back to
to their default values, in the swift stored plan. their default values.
""" """
log = logging.getLogger(__name__ + ".FFWDUpgradeConverge") log = logging.getLogger(__name__ + ".FFWDUpgradeConverge")
@ -187,13 +187,6 @@ class FFWDUpgradeConverge(DeployOvercloud):
self.log.debug("take_action(%s)" % parsed_args) self.log.debug("take_action(%s)" % parsed_args)
oooutils.ffwd_upgrade_operator_confirm(parsed_args.yes, self.log) oooutils.ffwd_upgrade_operator_confirm(parsed_args.yes, self.log)
clients = self.app.client_manager
stack = oooutils.get_stack(clients.orchestration,
parsed_args.stack)
stack_name = stack.stack_name
parsed_args.update_plan_only = True
# Add the converge environment into the args to unset noop etc # Add the converge environment into the args to unset noop etc
templates_dir = (parsed_args.templates or templates_dir = (parsed_args.templates or
constants.TRIPLEO_HEAT_TEMPLATES) constants.TRIPLEO_HEAT_TEMPLATES)
@ -204,9 +197,5 @@ class FFWDUpgradeConverge(DeployOvercloud):
constants.FFWD_UPGRADE_CONVERGE_ENV) constants.FFWD_UPGRADE_CONVERGE_ENV)
super(FFWDUpgradeConverge, self).take_action(parsed_args) super(FFWDUpgradeConverge, self).take_action(parsed_args)
# Run converge steps
package_update.ffwd_converge_nodes(
clients, container=stack_name,
queue_name=constants.FFWD_UPGRADE_QUEUE)
print("FFWD Upgrade Converge on stack {0} complete.".format( print("FFWD Upgrade Converge on stack {0} complete.".format(
parsed_args.stack)) parsed_args.stack))

View File

@ -171,21 +171,14 @@ class UpdateRun(command.Command):
class UpdateConverge(DeployOvercloud): class UpdateConverge(DeployOvercloud):
"""Converge the update on Overcloud nodes. """Converge the update on Overcloud nodes.
This restores the plan environment so that normal deployment This restores the plan and stack so that normal deployment
workflow is back in place. The action does not perform a Heat workflow is back in place.
stack update.
""" """
log = logging.getLogger(__name__ + ".UpdateConverge") log = logging.getLogger(__name__ + ".UpdateConverge")
def take_action(self, parsed_args): def take_action(self, parsed_args):
self.log.debug("take_action(%s)" % parsed_args) self.log.debug("take_action(%s)" % parsed_args)
clients = self.app.client_manager
stack_name = oooutils.get_stack(
clients.orchestration, parsed_args.stack).stack_name
# Only update plan, do not perform stack update.
parsed_args.update_plan_only = True
# Add the update-converge.yaml environment to unset noops # Add the update-converge.yaml environment to unset noops
templates_dir = (parsed_args.templates or templates_dir = (parsed_args.templates or
@ -195,7 +188,5 @@ class UpdateConverge(DeployOvercloud):
constants.UPDATE_CONVERGE_ENV) constants.UPDATE_CONVERGE_ENV)
super(UpdateConverge, self).take_action(parsed_args) super(UpdateConverge, self).take_action(parsed_args)
package_update.update_converge_nodes(
clients, container=stack_name, queue_name=constants.UPDATE_QUEUE)
print("Update converge on stack {0} complete.".format( print("Update converge on stack {0} complete.".format(
parsed_args.stack)) parsed_args.stack))

View File

@ -225,11 +225,11 @@ class UpgradeRun(command.Command):
class UpgradeConvergeOvercloud(DeployOvercloud): class UpgradeConvergeOvercloud(DeployOvercloud):
"""Major upgrade converge - reset Heat resources in the stored plan """Major upgrade converge - reset Heat resources in the stored plan
This is the last step for completion of a overcloud major upgrade. This is the last step for completion of a overcloud major
There is no heat stack update performed here. The main task is updating upgrade. The main task is updating the plan and stack to
the plan to unblock future stack updates. For the major upgrade workflow unblock future stack updates. For the major upgrade workflow we
we have set specific values for some stack Heat resources. This unsets have set specific values for some stack Heat resources. This
those back to their default values, in the swift stored plan. unsets those back to their default values.
""" """
log = logging.getLogger(__name__ + ".UpgradeConvergeOvercloud") log = logging.getLogger(__name__ + ".UpgradeConvergeOvercloud")
@ -244,9 +244,7 @@ class UpgradeConvergeOvercloud(DeployOvercloud):
stack = oooutils.get_stack(clients.orchestration, stack = oooutils.get_stack(clients.orchestration,
parsed_args.stack) parsed_args.stack)
stack_name = stack.stack_name
parsed_args.update_plan_only = True
# Add the converge environment into the args to unset noop etc # Add the converge environment into the args to unset noop etc
templates_dir = (parsed_args.templates or templates_dir = (parsed_args.templates or
constants.TRIPLEO_HEAT_TEMPLATES) constants.TRIPLEO_HEAT_TEMPLATES)
@ -255,7 +253,5 @@ class UpgradeConvergeOvercloud(DeployOvercloud):
constants.UPGRADE_CONVERGE_ENV) constants.UPGRADE_CONVERGE_ENV)
super(UpgradeConvergeOvercloud, self).take_action(parsed_args) super(UpgradeConvergeOvercloud, self).take_action(parsed_args)
# Run converge steps
package_update.converge_nodes(clients, container=stack_name)
print("Completed Overcloud Upgrade Converge for stack {0}".format( print("Completed Overcloud Upgrade Converge for stack {0}".format(
stack_name)) stack.stack_name))