Return any errors from called actions in node delete

The node delete action (ScaleDownAction) wasn't passing errors back
from called actions. This results in the workflow continuing to look
for a stack to go to INPROGRESS that never will.

Change-Id: Ia43e0a06215ad19d4b49f1721026db7519220799
Partial-Bug: #1749426
This commit is contained in:
Brad P. Crochet
2018-02-15 09:59:25 -05:00
parent 32977ecb62
commit 71e30eebe0
2 changed files with 53 additions and 2 deletions

View File

@@ -149,4 +149,4 @@ class ScaleDownAction(templates.ProcessTemplatesAction):
stack_params = self._get_removal_params_from_heat(
resources_by_role, resources)
self._update_stack(parameters=stack_params, context=context)
return self._update_stack(parameters=stack_params, context=context)

View File

@@ -16,6 +16,7 @@ import collections
import mock
import yaml
from mistral_lib import actions
from swiftclient import exceptions as swiftexceptions
from tripleo_common.actions import scale
@@ -130,7 +131,7 @@ class ScaleDownActionTest(base.TestCase):
# Test
action = scale.ScaleDownAction(
constants.STACK_TIMEOUT_DEFAULT, ['resource_id'], 'stack')
action.run(mock_ctx)
result = action.run(mock_ctx)
heatclient.stacks.validate.assert_called_once_with(
environment=env,
@@ -151,3 +152,53 @@ class ScaleDownActionTest(base.TestCase):
"stack",
"tripleo.parameters.get"
)
self.assertEqual(None, result)
@mock.patch('tripleo_common.actions.scale.ScaleDownAction.'
'_get_removal_params_from_heat')
@mock.patch('tripleo_common.actions.scale.ScaleDownAction._update_stack')
@mock.patch('tripleo_common.actions.base.TripleOAction.'
'get_orchestration_client')
def test_run_bad_update(self, mock_get_heat_client,
mock__update_stack,
mock__get_removal_params_from_heat):
mock__update_stack.return_value = actions.Result(error='Update error')
mock__get_removal_params_from_heat.return_value = {}
heatclient = mock.MagicMock()
heatclient.resources.list.return_value = [
mock.MagicMock(
links=[{'rel': 'stack',
'href': 'http://192.0.2.1:8004/v1/'
'a959ac7d6a4a475daf2428df315c41ef/'
'stacks/overcloud/123'}],
logical_resource_id='logical_id',
physical_resource_id='resource_id',
resource_type='OS::Heat::ResourceGroup',
resource_name='Compute'
),
mock.MagicMock(
links=[{'rel': 'stack',
'href': 'http://192.0.2.1:8004/v1/'
'a959ac7d6a4a475daf2428df315c41ef/'
'stacks/overcloud/124'}],
logical_resource_id='node0',
physical_resource_id='123',
resource_type='OS::TripleO::Compute',
parent_resource='Compute',
resource_name='node0',
)
]
heatclient.stacks.get.return_value = mock_stack()
heatclient.stacks.validate.return_value = {}
mock_get_heat_client.return_value = heatclient
mock_ctx = mock.MagicMock()
# Test
action = scale.ScaleDownAction(
constants.STACK_TIMEOUT_DEFAULT, ['resource_id'], 'stack')
result = action.run(mock_ctx)
self.assertEqual(actions.Result(error='Update error'), result)