From 6e6d0b42225aee8e5eb351e66ae07363099ff38d Mon Sep 17 00:00:00 2001 From: Zane Bitter Date: Wed, 20 Jun 2012 13:58:26 +0200 Subject: [PATCH] Don't remove resources from the DB during HA restart 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 --- heat/engine/parser.py | 2 +- heat/engine/resources.py | 31 +++++++++++++++++++------------ 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/heat/engine/parser.py b/heat/engine/parser.py index 2ae68a5548..955e3d2793 100644 --- a/heat/engine/parser.py +++ b/heat/engine/parser.py @@ -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)) diff --git a/heat/engine/resources.py b/heat/engine/resources.py index f21e709c7f..3c5d7b6b63 100644 --- a/heat/engine/resources.py +++ b/heat/engine/resources.py @@ -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