Convergence: fix input to check_stack_complete

The input to check stack complete should be the resource ID of the
resource that the current resource replaces instead of its own. Failing
to do so will result in stack being in in_progress state for ever.

Change-Id: I6f2856c82c8cc73f628976b7296ab0fb20af5ff3
Closes-Bug: #1614960
This commit is contained in:
Anant Patil 2016-08-19 19:00:58 +05:30 committed by Anant Patil
parent 50ee32f846
commit 78d56b1e0d
2 changed files with 21 additions and 1 deletions

View File

@ -206,7 +206,7 @@ class CheckResource(object):
stack.adopt_stack_data)
check_stack_complete(cnxt, stack, current_traversal,
resource_id, deps, is_update)
graph_key[0], deps, graph_key[1])
except exception.EntityNotFound as e:
if e.entity == "Sync Point":
# Reload the stack to determine the current traversal, and

View File

@ -336,6 +336,26 @@ class CheckWorkflowUpdateTest(common.HeatTestCase):
mock_rcr.assert_called_once_with(self.ctx, self.is_update,
self.resource.id, updated_stack)
def test_check_stack_complete_is_invoked_for_replaced_resource(
self, mock_cru, mock_crc, mock_pcr, mock_csc, mock_cid):
resC = self.stack['C']
# lets say C is update-replaced
is_update = True
replacementC_id = resC.make_replacement(self.stack.t.id)
replacementC, stack, _ = resource.Resource.load(self.ctx,
replacementC_id,
is_update, {})
self.cr._initiate_propagate_resource(self.ctx, replacementC_id,
self.stack.current_traversal,
is_update, replacementC,
self.stack)
# check_stack_complete should be called with resC.id not
# replacementC.id
mock_csc.assert_called_once_with(self.ctx, self.stack,
self.stack.current_traversal,
resC.id, mock.ANY,
is_update)
@mock.patch.object(sync_point, 'sync')
def test_retrigger_check_resource(self, mock_sync, mock_cru, mock_crc,
mock_pcr, mock_csc, mock_cid):