Merge "Try deleting stack if not soft deleted yet"
This commit is contained in:
commit
98a6d988df
|
@ -1415,13 +1415,14 @@ class EngineService(service.ServiceBase):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
st = self._get_stack(cnxt, stack_identity)
|
st = self._get_stack(cnxt, stack_identity)
|
||||||
if (st.status == parser.Stack.COMPLETE and
|
|
||||||
st.action == parser.Stack.DELETE):
|
|
||||||
raise exception.EntityNotFound(entity='Stack', name=st.name)
|
|
||||||
|
|
||||||
LOG.info('Deleting stack %s', st.name)
|
LOG.info('Deleting stack %s', st.name)
|
||||||
stack = parser.Stack.load(cnxt, stack=st)
|
stack = parser.Stack.load(cnxt, stack=st)
|
||||||
self.resource_enforcer.enforce_stack(stack, is_registered_policy=True)
|
self.resource_enforcer.enforce_stack(stack, is_registered_policy=True)
|
||||||
|
if (stack.status == stack.COMPLETE and stack.action == stack.DELETE):
|
||||||
|
# In convergence try to soft delete the stack again
|
||||||
|
if stack.convergence:
|
||||||
|
self.thread_group_mgr.start(stack.id, stack.purge_db)
|
||||||
|
raise exception.EntityNotFound(entity='Stack', name=stack.name)
|
||||||
|
|
||||||
if stack.convergence:
|
if stack.convergence:
|
||||||
stack.thread_group_mgr = self.thread_group_mgr
|
stack.thread_group_mgr = self.thread_group_mgr
|
||||||
|
|
|
@ -956,15 +956,22 @@ class StackServiceTest(common.HeatTestCase):
|
||||||
self.assertEqual([], outputs)
|
self.assertEqual([], outputs)
|
||||||
|
|
||||||
def test_stack_delete_complete_is_not_found(self):
|
def test_stack_delete_complete_is_not_found(self):
|
||||||
mock_get_stack = self.patchobject(self.eng, '_get_stack')
|
t = template_format.parse(tools.wp_template)
|
||||||
mock_get_stack.return_value = mock.MagicMock()
|
tmpl = templatem.Template(t)
|
||||||
mock_get_stack.return_value.status = parser.Stack.COMPLETE
|
stack = parser.Stack(self.ctx, 'delete_complete_stack', tmpl)
|
||||||
mock_get_stack.return_value.action = parser.Stack.DELETE
|
self.patchobject(self.eng, '_get_stack')
|
||||||
|
self.patchobject(parser.Stack, 'load', return_value=stack)
|
||||||
|
stack.status = stack.COMPLETE
|
||||||
|
stack.action = stack.DELETE
|
||||||
|
stack.convergence = True
|
||||||
|
self.eng.thread_group_mgr.start = mock.MagicMock()
|
||||||
ex = self.assertRaises(dispatcher.ExpectedException,
|
ex = self.assertRaises(dispatcher.ExpectedException,
|
||||||
self.eng.delete_stack,
|
self.eng.delete_stack,
|
||||||
'irrelevant',
|
'irrelevant',
|
||||||
'irrelevant')
|
'irrelevant')
|
||||||
self.assertEqual(exception.EntityNotFound, ex.exc_info[0])
|
self.assertEqual(exception.EntityNotFound, ex.exc_info[0])
|
||||||
|
self.eng.thread_group_mgr.start.assert_called_once_with(
|
||||||
|
None, stack.purge_db)
|
||||||
|
|
||||||
def test_get_environment(self):
|
def test_get_environment(self):
|
||||||
# Setup
|
# Setup
|
||||||
|
|
Loading…
Reference in New Issue