summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrabi <ramishra@redhat.com>2018-10-12 13:35:47 +0530
committerEmilien Macchi <emilien@redhat.com>2019-01-21 14:56:45 +0000
commitfd369845b7fbda13478da66262819edee45648ad (patch)
treec5a93608d2b44043899d5c0628fdc408d6259eee
parent9c2ff64360cde8c4cb44b535fadd28b5036f83fd (diff)
downloadheat-fd369845b7fbda13478da66262819edee45648ad.tar.gz
Delete db resources not in template
When migrating stacks to convergence, if there are resources in the database that are not in the current_template_id of the stack, they are possibly of no isue, so it would better to delete those resources from db to avoid any future update issues. Change-Id: Ica99cec6765d22d7ee2262e2d402b2e98cb5bd5e Story: #2004071 Task: 27092 (cherry picked from commit 43583b4a323e15b13e288b3a6f78500e442b7402)
-rw-r--r--heat/engine/stack.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/heat/engine/stack.py b/heat/engine/stack.py
index 65367097e..e0bfe0bec 100644
--- a/heat/engine/stack.py
+++ b/heat/engine/stack.py
@@ -2242,7 +2242,16 @@ class Stack(collections.Mapping):
db_rsrcs = self.db_active_resources_get()
if db_rsrcs is not None:
for res in db_rsrcs.values():
- res.update_and_save(values=values)
+ # delete db resources not in current_template_id
+ try:
+ self.defn.resource_definition(res.name)
+ except KeyError:
+ LOG.warning("Resource %(res)s not found in template "
+ "for stack %(st)s, deleting from db.",
+ {'res': res.name, 'st': self.id})
+ resource_objects.Resource.delete(self.context, res.id)
+ else:
+ res.update_and_save(values=values)
self.set_resource_deps()
self.current_traversal = uuidutils.generate_uuid()
self.convergence = True