]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
Don't remove resources from the DB during HA restart
authorZane Bitter <zbitter@redhat.com>
Wed, 20 Jun 2012 11:58:26 +0000 (13:58 +0200)
committerZane Bitter <zbitter@redhat.com>
Wed, 20 Jun 2012 12:06:29 +0000 (14:06 +0200)
This was broken by 3b91d100a6c6424961e1ec06cf7afd9a1c9cf49c. Resources
should be removed from the DB only when the stack is deleted.

Change-Id: I6822aee8453afd6076793cff9206a035cff33588
Signed-off-by: Zane Bitter <zbitter@redhat.com>
heat/engine/parser.py
heat/engine/resources.py

index 2ae68a5548441a2464f789b0418108fcd3a78196..955e3d279338d04171092dc6d2f72ce973d4af5c 100644 (file)
@@ -241,7 +241,7 @@ class Stack(object):
         failures = []
 
         for res in reversed(self):
-            result = res.delete()
+            result = res.destroy()
             if result:
                 failures.append(str(res))
 
index f21e709c7fd8485b03e3dfd2eeb478c6841a1eb1..3c5d7b6b63a1b1c6ec418114a33cde269297579f 100644 (file)
@@ -190,19 +190,26 @@ class Resource(object):
             logger.exception('Delete %s', str(self))
             self.state_set(self.DELETE_FAILED, str(ex))
             return str(ex)
-        else:
-            try:
-                db_api.resource_get(self.stack.context, self.id).delete()
-            except exception.NotFound:
-                # Don't fail on delete if the db entry has
-                # not been created yet.
-                pass
-            except Exception as ex:
-                self.state_set(self.DELETE_FAILED)
-                logger.exception('Delete %s from DB' % str(self))
-                return str(ex)
 
-            self.state_set(self.DELETE_COMPLETE)
+        self.state_set(self.DELETE_COMPLETE)
+
+    def destroy(self):
+        '''
+        Delete the resource and remove it from the database.
+        '''
+        result = self.delete()
+        if result:
+            return result
+
+        try:
+            db_api.resource_get(self.stack.context, self.id).delete()
+        except exception.NotFound:
+            # Don't fail on delete if the db entry has
+            # not been created yet.
+            pass
+        except Exception as ex:
+            logger.exception('Delete %s from DB' % str(self))
+            return str(ex)
 
     def instance_id_set(self, inst):
         self.instance_id = inst