From 54c0626f388497bed4342a26e728f1e34dffeca0 Mon Sep 17 00:00:00 2001 From: Randall Burt Date: Fri, 26 Jul 2013 11:18:23 -0500 Subject: [PATCH] Initialize resources to DELETE-COMPLETE if missing during stack delete If the parent stack is being deleted and a given resource cannot be found in the data store, initialize its state to DELETE:COMPLETE instead of INIT:COMPLETE. fixes bug 1204268 Change-Id: I5074d63928c3b39fe6ad85dc6af1d02db777acc8 --- heat/engine/resource.py | 6 +++++- heat/tests/test_resource.py | 8 ++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/heat/engine/resource.py b/heat/engine/resource.py index 33d05278..143a28d9 100644 --- a/heat/engine/resource.py +++ b/heat/engine/resource.py @@ -182,7 +182,11 @@ class Resource(object): self.data = resource.data else: self.resource_id = None - self.action = self.INIT + # if the stack is being deleted, assume we've already been deleted + if stack.action == stack.DELETE: + self.action = self.DELETE + else: + self.action = self.INIT self.status = self.COMPLETE self.status_reason = '' self.id = None diff --git a/heat/tests/test_resource.py b/heat/tests/test_resource.py index b69c7ac5..a5c16463 100644 --- a/heat/tests/test_resource.py +++ b/heat/tests/test_resource.py @@ -78,6 +78,14 @@ class ResourceTest(HeatTestCase): self.assertRaises(ValueError, res.state_set, 'foo', res.COMPLETE) self.assertRaises(ValueError, res.state_set, res.CREATE, 'bla') + def test_state_del_stack(self): + tmpl = {'Type': 'Foo'} + self.stack.action = self.stack.DELETE + self.stack.status = self.stack.IN_PROGRESS + res = generic_rsrc.GenericResource('test_resource', tmpl, self.stack) + self.assertEqual(res.DELETE, res.action) + self.assertEqual(res.COMPLETE, res.status) + def test_type(self): tmpl = {'Type': 'Foo'} res = generic_rsrc.GenericResource('test_resource', tmpl, self.stack) -- 2.45.2