Fix AWS::EC2::VPC resource delete failure
Check resource_id is not None before deleting the resource. Change-Id: Ib8e8de5badc54c79cee248a9fcc86ebc50397b00 Closes-bug: #1365924
This commit is contained in:
parent
35d7465c11
commit
d870865ffb
|
@ -78,9 +78,8 @@ class VPC(resource.Resource):
|
|||
router_props = {'name': self.physical_resource_name()}
|
||||
|
||||
net = client.create_network({'network': net_props})['network']
|
||||
client.create_router({'router': router_props})['router']
|
||||
|
||||
self.resource_id_set(net['id'])
|
||||
client.create_router({'router': router_props})['router']
|
||||
|
||||
@staticmethod
|
||||
def network_for_vpc(client, network_id):
|
||||
|
@ -109,10 +108,14 @@ class VPC(resource.Resource):
|
|||
return neutron.NeutronResource.is_built(router)
|
||||
|
||||
def handle_delete(self):
|
||||
if self.resource_id is None:
|
||||
return
|
||||
client = self.neutron()
|
||||
router = self.router_for_vpc(client, self.resource_id)
|
||||
|
||||
try:
|
||||
client.delete_router(router['id'])
|
||||
router = self.router_for_vpc(client, self.resource_id)
|
||||
if router:
|
||||
client.delete_router(router['id'])
|
||||
except Exception as ex:
|
||||
self.client_plugin().ignore_not_found(ex)
|
||||
|
||||
|
|
|
@ -346,6 +346,13 @@ Resources:
|
|||
Properties: {CidrBlock: '10.0.0.0/16'}
|
||||
'''
|
||||
|
||||
def mock_create_network_failed(self):
|
||||
self.vpc_name = utils.PhysName('test_stack', 'the_vpc')
|
||||
neutronclient.Client.create_network(
|
||||
{
|
||||
'network': {'name': self.vpc_name}
|
||||
}).AndRaise(NeutronClientException())
|
||||
|
||||
def test_vpc(self):
|
||||
self.mock_create_network()
|
||||
self.mock_delete_network()
|
||||
|
@ -358,6 +365,18 @@ Resources:
|
|||
scheduler.TaskRunner(vpc.delete)()
|
||||
self.m.VerifyAll()
|
||||
|
||||
def test_vpc_delete_successful_if_created_failed(self):
|
||||
self.mock_create_network_failed()
|
||||
self.m.ReplayAll()
|
||||
|
||||
t = template_format.parse(self.test_template)
|
||||
stack = self.parse_stack(t)
|
||||
scheduler.TaskRunner(stack.create)()
|
||||
self.assertEqual(stack.state, (stack.CREATE, stack.FAILED))
|
||||
scheduler.TaskRunner(stack.delete)()
|
||||
|
||||
self.m.VerifyAll()
|
||||
|
||||
|
||||
class SubnetTest(VPCTestBase):
|
||||
|
||||
|
|
Loading…
Reference in New Issue