]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
Initialize resources to DELETE-COMPLETE if missing during stack delete
authorRandall Burt <randall.burt@rackspace.com>
Fri, 26 Jul 2013 16:18:23 +0000 (11:18 -0500)
committerRandall Burt <randall.burt@rackspace.com>
Tue, 30 Jul 2013 17:38:13 +0000 (12:38 -0500)
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
heat/tests/test_resource.py

index 33d0527825f7e91330946b016c2d788a7b06056a..143a28d90d3a4151e8bbb0f440cfa05f030b8685 100644 (file)
@@ -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
index b69c7ac52c6766a808e4a6ea07e0b9418b8461b3..a5c16463ddd90048e6af25ffee2744e77fffcf99 100644 (file)
@@ -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)