Set correct deployment_status in deployment stages

We need to set the deployment status before stack deployment
and for playbook failure after the stack deployment.

Change-Id: Ic353b6552d28d66bcc53a7a4df318e60de5bd320
This commit is contained in:
Rabi Mishra 2020-04-11 16:03:24 +05:30
parent a947b57094
commit 9a6b7fa663
4 changed files with 32 additions and 16 deletions

View File

@ -1420,7 +1420,7 @@ class TestDeployOvercloud(fakes.TestDeployOvercloud):
self.assertTrue(fixture.mock_config_download.called) self.assertTrue(fixture.mock_config_download.called)
self.assertTrue(fixture.mock_set_deployment_status.called) self.assertTrue(fixture.mock_set_deployment_status.called)
self.assertEqual( self.assertEqual(
'deploying', 'DEPLOY_SUCCESS',
fixture.mock_set_deployment_status.call_args[-1]['status'] fixture.mock_set_deployment_status.call_args[-1]['status']
) )
mock_copy.assert_called_once() mock_copy.assert_called_once()
@ -1457,7 +1457,7 @@ class TestDeployOvercloud(fakes.TestDeployOvercloud):
self.assertTrue(fixture.mock_config_download.called) self.assertTrue(fixture.mock_config_download.called)
self.assertTrue(fixture.mock_set_deployment_status.called) self.assertTrue(fixture.mock_set_deployment_status.called)
self.assertEqual( self.assertEqual(
'deploying', 'DEPLOY_SUCCESS',
fixture.mock_set_deployment_status.call_args[-1]['status']) fixture.mock_set_deployment_status.call_args[-1]['status'])
mock_copy.assert_called_once() mock_copy.assert_called_once()
@ -1501,7 +1501,7 @@ class TestDeployOvercloud(fakes.TestDeployOvercloud):
self.assertTrue(fixture.mock_config_download.called) self.assertTrue(fixture.mock_config_download.called)
self.assertTrue(fixture.mock_set_deployment_status.called) self.assertTrue(fixture.mock_set_deployment_status.called)
self.assertEqual( self.assertEqual(
'failed', 'DEPLOY_FAILED',
fixture.mock_set_deployment_status.call_args[-1]['status']) fixture.mock_set_deployment_status.call_args[-1]['status'])
@mock.patch('tripleoclient.utils.copy_clouds_yaml') @mock.patch('tripleoclient.utils.copy_clouds_yaml')

View File

@ -257,12 +257,15 @@ class TestOvercloudDeployPlan(utils.TestCommand):
self.addCleanup(sleep_patch.stop) self.addCleanup(sleep_patch.stop)
sleep_patch.start() sleep_patch.start()
@mock.patch("tripleoclient.utils.update_deployment_status", autospec=True)
@mock.patch("tripleoclient.utils.run_ansible_playbook", autospec=True) @mock.patch("tripleoclient.utils.run_ansible_playbook", autospec=True)
@mock.patch('tripleoclient.utils.wait_for_stack_ready', autospec=True) @mock.patch('tripleoclient.utils.wait_for_stack_ready', autospec=True)
@mock.patch('os.chdir', autospec=True) @mock.patch('os.chdir', autospec=True)
@mock.patch('tempfile.mkdtemp', autospec=True) @mock.patch('tempfile.mkdtemp', autospec=True)
def test_overcloud_deploy_plan(self, mock_tmp, mock_cd, def test_overcloud_deploy_plan(self, mock_tmp, mock_cd,
mock_for_stack_ready, mock_run_playbook): mock_for_stack_ready,
mock_run_playbook,
mock_update_status):
# Setup # Setup
arglist = ['--run-validations', 'overcast'] arglist = ['--run-validations', 'overcast']
@ -295,6 +298,7 @@ class TestOvercloudDeployPlan(utils.TestCommand):
}, },
verbosity=3, verbosity=3,
) )
mock_update_status.assert_called()
class TestOvercloudExportPlan(utils.TestCommand): class TestOvercloudExportPlan(utils.TestCommand):

View File

@ -1010,7 +1010,7 @@ class DeployOvercloud(command.Command):
deployment.set_deployment_status( deployment.set_deployment_status(
clients=self.clients, clients=self.clients,
plan=stack.stack_name, plan=stack.stack_name,
status='deploying' status='DEPLOYING'
) )
try: try:
@ -1051,11 +1051,15 @@ class DeployOvercloud(command.Command):
in_flight_validations=parsed_args.inflight, in_flight_validations=parsed_args.inflight,
deployment_timeout=timeout deployment_timeout=timeout
) )
deployment.set_deployment_status(
clients=self.clients,
plan=stack.stack_name,
status='DEPLOY_SUCCESS')
except Exception: except Exception:
deployment.set_deployment_status( deployment.set_deployment_status(
clients=self.clients, clients=self.clients,
plan=stack.stack_name, plan=stack.stack_name,
status='failed' status='DEPLOY_FAILED'
) )
raise raise

View File

@ -92,13 +92,22 @@ def deploy_and_wait(log, clients, stack, plan_name, verbose_level,
marker = events[0].id if events else None marker = events[0].id if events else None
action = 'UPDATE' action = 'UPDATE'
deploy( set_deployment_status(clients=clients,
container=plan_name, plan=plan_name,
run_validations=run_validations, status='DEPLOYING')
skip_deploy_identifier=skip_deploy_identifier,
timeout=timeout, try:
verbosity=verbose_level deploy(
) container=plan_name,
run_validations=run_validations,
skip_deploy_identifier=skip_deploy_identifier,
timeout=timeout,
verbosity=verbose_level)
except Exception:
set_deployment_status(clients=clients,
plan=plan_name,
status='DEPLOY_FAILED')
raise
verbose_events = verbose_level >= 1 verbose_events = verbose_level >= 1
@ -111,7 +120,7 @@ def deploy_and_wait(log, clients, stack, plan_name, verbose_level,
set_deployment_status( set_deployment_status(
clients=clients, clients=clients,
plan=plan_name, plan=plan_name,
status='failed' status='DEPLOY_FAILED'
) )
if stack is None: if stack is None:
raise exceptions.DeploymentError("Heat Stack create failed.") raise exceptions.DeploymentError("Heat Stack create failed.")
@ -593,8 +602,7 @@ def set_deployment_status(clients, plan, status):
:param status: Current status of the deployment. :param status: Current status of the deployment.
:type status: String :type status: String
""" """
deploy_status = '{}'.format(status.upper())
deploy_status = 'DEPLOY_{}'.format(status.upper())
utils.update_deployment_status( utils.update_deployment_status(
clients=clients, clients=clients,
plan=plan, plan=plan,