From 344fa18a6e00eec3916f648c1abb9f55dbab74df Mon Sep 17 00:00:00 2001 From: ramishra Date: Tue, 5 Jan 2021 21:42:06 +0530 Subject: [PATCH] Use same code path for UpdatePrepare We don't do anything different here other than updating the stack. Change-Id: I1050b3e0760153266ecf03d87140365ee9c8d072 --- .../overcloud_update/test_overcloud_update.py | 36 +++------- tripleoclient/v1/overcloud_update.py | 15 +---- tripleoclient/workflows/package_update.py | 65 ------------------- 3 files changed, 13 insertions(+), 103 deletions(-) delete mode 100644 tripleoclient/workflows/package_update.py diff --git a/tripleoclient/tests/v1/overcloud_update/test_overcloud_update.py b/tripleoclient/tests/v1/overcloud_update/test_overcloud_update.py index 8cd2f8175..83750ed37 100644 --- a/tripleoclient/tests/v1/overcloud_update/test_overcloud_update.py +++ b/tripleoclient/tests/v1/overcloud_update/test_overcloud_update.py @@ -44,25 +44,19 @@ class TestOvercloudUpdatePrepare(fakes.TestOvercloudUpdatePrepare): @mock.patch('tripleoclient.v1.overcloud_deploy.DeployOvercloud.' '_get_undercloud_host_entry', autospec=True, return_value='192.168.0.1 uc.ctlplane.localhost uc.ctlplane') - @mock.patch('tripleoclient.utils.get_stack', - autospec=True) @mock.patch('tripleoclient.v1.overcloud_update.UpdatePrepare.log', autospec=True) - @mock.patch('tripleoclient.workflows.package_update.update', - autospec=True) @mock.patch('os.path.abspath') @mock.patch('yaml.safe_load') @mock.patch('shutil.copytree', autospec=True) @mock.patch('six.moves.builtins.open') @mock.patch('tripleoclient.v1.overcloud_deploy.DeployOvercloud.' - '_deploy_tripleo_heat_templates_tmpdir', autospec=True) + 'take_action', autospec=True) def test_update_out(self, mock_deploy, mock_open, mock_copy, mock_yaml, - mock_abspath, mock_update, mock_logger, - mock_get_stack, mock_get_undercloud_host_entry, - mock_confirm, mock_usercheck, mock_get_ctlplane_attrs): - mock_stack = mock.Mock(parameters={'DeployIdentifier': ''}) - mock_stack.stack_name = 'overcloud' - mock_get_stack.return_value = mock_stack + mock_abspath, mock_logger, + mock_get_undercloud_host_entry, + mock_confirm, mock_usercheck, + mock_get_ctlplane_attrs): mock_yaml.return_value = {'fake_container': 'fake_value'} argslist = ['--stack', 'overcloud', '--templates'] @@ -79,31 +73,21 @@ class TestOvercloudUpdatePrepare(fakes.TestOvercloudUpdatePrepare): mock_isfile.return_value = True self.cmd.take_action(parsed_args) mock_usercheck.assert_called_once() - mock_update.assert_called_once_with( - self.app.client_manager, - container='overcloud', - ) + mock_deploy.assert_called_once() @mock.patch('tripleoclient.utils.ensure_run_as_normal_user') @mock.patch('tripleoclient.utils.prompt_user_for_confirmation', return_value=True) - @mock.patch('tripleoclient.utils.get_stack', - autospec=True) - @mock.patch('tripleoclient.workflows.package_update.update', - autospec=True) @mock.patch('six.moves.builtins.open') @mock.patch('os.path.abspath') @mock.patch('yaml.safe_load') @mock.patch('shutil.copytree', autospec=True) @mock.patch('tripleoclient.v1.overcloud_deploy.DeployOvercloud.' - '_deploy_tripleo_heat_templates', autospec=True) + 'take_action', autospec=True) def test_update_failed(self, mock_deploy, mock_copy, mock_yaml, - mock_abspath, mock_open, mock_update, - mock_get_stack, mock_confirm, mock_usercheck): - mock_stack = mock.Mock(parameters={'DeployIdentifier': ''}) - mock_stack.stack_name = 'overcloud' - mock_get_stack.return_value = mock_stack - mock_update.side_effect = exceptions.DeploymentError() + mock_abspath, mock_open, + mock_confirm, mock_usercheck): + mock_deploy.side_effect = exceptions.DeploymentError() mock_yaml.return_value = {'fake_container': 'fake_value'} argslist = ['--stack', 'overcloud', '--templates', ] verifylist = [ diff --git a/tripleoclient/v1/overcloud_update.py b/tripleoclient/v1/overcloud_update.py index aa65a6727..708fad193 100644 --- a/tripleoclient/v1/overcloud_update.py +++ b/tripleoclient/v1/overcloud_update.py @@ -25,7 +25,6 @@ from tripleoclient import constants from tripleoclient import utils as oooutils from tripleoclient.v1.overcloud_deploy import DeployOvercloud from tripleoclient.workflows import deployment -from tripleoclient.workflows import package_update CONF = cfg.CONF @@ -62,17 +61,10 @@ class UpdatePrepare(DeployOvercloud): constants.UPDATE_PROMPT, self.log)): raise OvercloudUpdateNotConfirmed(constants.UPDATE_NO) - clients = self.app.client_manager - - stack = oooutils.get_stack(clients.orchestration, - parsed_args.stack) - - stack_name = stack.stack_name - # In case of update and upgrade we need to force the - # update_plan_only. The heat stack update is done by the - # packag_update mistral action - parsed_args.update_plan_only = True + # config_download to false. The heat stack update will be performed + # by DeployOvercloud class but skipping the config download part. + parsed_args.config_download = False # Add the update-prepare.yaml environment to set noops etc templates_dir = (parsed_args.templates or @@ -88,7 +80,6 @@ class UpdatePrepare(DeployOvercloud): parsed_args.environment_files) super(UpdatePrepare, self).take_action(parsed_args) - package_update.update(clients, container=stack_name) self.log.info("Update init on stack {0} complete.".format( parsed_args.stack)) diff --git a/tripleoclient/workflows/package_update.py b/tripleoclient/workflows/package_update.py deleted file mode 100644 index 4052fbb2f..000000000 --- a/tripleoclient/workflows/package_update.py +++ /dev/null @@ -1,65 +0,0 @@ -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -from heatclient.common import event_utils -from tripleo_common.utils import plan -from tripleo_common.utils import stack - -from tripleoclient import exceptions -from tripleoclient import utils - -_STACK_TIMEOUT = 120 # 2h - - -def update(clients, container): - """Update the heat stack outputs for purposes of update/upgrade. - - This workflow assumes that previously the - plan_management.update_deployment_plan workflow has already been - run to process the templates and environments (the same way as - 'deploy' command processes them). - - :param clients: Application client object. - :type clients: Object - - :param container: Container name to pull from. - :type container: String. - """ - - tripleoclients = clients.tripleoclient - - orchestration_client = clients.orchestration - object_client = tripleoclients.object_store - plan.update_plan_environment_with_image_parameters( - object_client, container) - - events = event_utils.get_events(orchestration_client, - stack_id=container, - event_args={'sort_dir': 'desc', - 'limit': 1}) - marker = events[0].id if events else None - - stack.stack_update(object_client, orchestration_client, - _STACK_TIMEOUT, container) - - create_result = utils.wait_for_stack_ready( - clients.orchestration, - container, - marker, - 'UPDATE', - ) - if not create_result: - raise exceptions.DeploymentError( - 'Heat Stack update failed, run the following command' - ' `openstack --os-cloud undercloud stack failures list {}`' - ' to investigate these failures further.'.format(container) - )