Correct stack identity when delete nested
1. Update an aws asg with invalid 'VPCZoneIdentifier', the stack update failed. 2. Update again, the stack is always in 'UPDATE_IN_PROGRESS'. We remove the backup resources first when updating, but the backup of stack_resource can't be deleted, due we set an incorrect name of stack_identity before rpc calling 'delete_stack', due the name is not match the nested_stack's name. Change-Id: I89966d0124607c233ac9a82f1ce14f4f2deb3f9b Closes-Bug: #1478480
This commit is contained in:
parent
7b5012912b
commit
ab234eb658
@ -437,10 +437,15 @@ class StackResource(resource.Resource):
|
||||
'''
|
||||
Delete the nested stack.
|
||||
'''
|
||||
stack_identity = identifier.HeatIdentifier(
|
||||
self.context.tenant_id,
|
||||
self.physical_resource_name(),
|
||||
self.resource_id)
|
||||
try:
|
||||
stack = self.nested()
|
||||
except exception.NotFound:
|
||||
return
|
||||
|
||||
if stack is None:
|
||||
return
|
||||
|
||||
stack_identity = stack.identifier()
|
||||
|
||||
try:
|
||||
self.rpc_client().delete_stack(self.context, stack_identity)
|
||||
|
@ -371,11 +371,12 @@ Outputs:
|
||||
def test_handle_delete(self):
|
||||
self.res.rpc_client = mock.MagicMock()
|
||||
self.res.action = self.res.CREATE
|
||||
self.res.nested = mock.MagicMock()
|
||||
stack_identity = identifier.HeatIdentifier(
|
||||
self.ctx.tenant_id,
|
||||
self.res.physical_resource_name(),
|
||||
self.res.resource_id)
|
||||
|
||||
self.res.nested().identifier.return_value = stack_identity
|
||||
self.res.handle_delete()
|
||||
self.res.rpc_client.return_value.delete_stack.assert_called_once_with(
|
||||
self.ctx, stack_identity)
|
||||
self.ctx, self.res.nested().identifier())
|
||||
|
@ -928,9 +928,13 @@ class TemplateResourceCrudTest(common.HeatTestCase):
|
||||
self.res.uuid = six.text_type(uuid.uuid4())
|
||||
self.res.resource_id = six.text_type(uuid.uuid4())
|
||||
self.res.action = self.res.CREATE
|
||||
self.res.nested = mock.MagicMock()
|
||||
ident = identifier.HeatIdentifier(self.ctx.tenant_id,
|
||||
self.res.physical_resource_name(),
|
||||
self.res.resource_id)
|
||||
self.res.nested().identifier.return_value = ident
|
||||
self.res.handle_delete()
|
||||
rpcc = self.res.rpc_client.return_value
|
||||
rpcc.delete_stack.assert_called_once_with(self.ctx, ident)
|
||||
rpcc.delete_stack.assert_called_once_with(
|
||||
self.ctx,
|
||||
self.res.nested().identifier())
|
||||
|
@ -511,14 +511,19 @@ class StackResourceTest(StackResourceBaseTest):
|
||||
force_reload=True)
|
||||
self.m.VerifyAll()
|
||||
|
||||
def test_delete_nested_not_found_nested_stack(self):
|
||||
|
||||
def test_delete_nested_none_nested_stack(self):
|
||||
self.parent_resource._nested = None
|
||||
self.assertIsNone(self.parent_resource.delete_nested())
|
||||
|
||||
def test_delete_nested_not_found_nested_stack(self):
|
||||
self.parent_resource._nested = mock.MagicMock()
|
||||
rpcc = mock.Mock()
|
||||
self.parent_resource.rpc_client = rpcc
|
||||
rpcc.return_value.delete_stack = mock.Mock(
|
||||
side_effect=exception.NotFound())
|
||||
self.assertIsNone(self.parent_resource.delete_nested())
|
||||
rpcc.return_value.delete_stack.assert_called_once_with(
|
||||
self.parent_resource.context, mock.ANY)
|
||||
|
||||
def test_need_update_for_nested_resource(self):
|
||||
"""
|
||||
|
Loading…
Reference in New Issue
Block a user