From: Steven Hardy Date: Wed, 20 Feb 2013 15:16:53 +0000 (+0000) Subject: heat engine : Update stack dependencies during update X-Git-Tag: 2014.1~879^2 X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=d1a7c3fec6c56f38a72af982b76f1fd80482a381;p=openstack-build%2Fheat-build.git heat engine : Update stack dependencies during update We need to update the stack dependencies each time we modify the resources list, otherwise in the event of a failure, the resources returned from the iterator methods don't match with those found via getitem/contains (which is important for rollback) blueprint update-rollback Change-Id: Ia47f84291f50c33fc052b7b33fa0c1f9e8430ab4 --- diff --git a/heat/engine/parser.py b/heat/engine/parser.py index b2e3af45..274d9ab5 100644 --- a/heat/engine/parser.py +++ b/heat/engine/parser.py @@ -298,6 +298,8 @@ class Stack(object): resource_name=res.name) else: del self.resources[res.name] + self.dependencies = self._get_dependencies( + self.resources.itervalues()) # Then create any which are defined in newstack but not self for res in newstack: @@ -306,6 +308,8 @@ class Stack(object): % res.name + " definition, adding") res.stack = self self[res.name] = res + self.dependencies = self._get_dependencies( + self.resources.itervalues()) result = self[res.name].create() if result: logger.error("Failed to add %s : %s" % @@ -356,6 +360,8 @@ class Stack(object): else: res.stack = self self[res.name] = res + self.dependencies = self._get_dependencies( + self.resources.itervalues()) result = self[res.name].create() if result: logger.error("Failed to create %s : %s" % @@ -372,8 +378,6 @@ class Stack(object): self.parameters = newstack.parameters template_outputs = self.t[template.OUTPUTS] self.outputs = self.resolve_static_data(template_outputs) - self.dependencies = self._get_dependencies( - self.resources.itervalues()) self.store() stack_status = self.UPDATE_COMPLETE