From: Zane Bitter Date: Mon, 26 Aug 2013 19:11:58 +0000 (+0200) Subject: Always resolve properties against the current stack X-Git-Tag: 2014.1~129^2 X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=8adfc448e5d719cbadcc040f0f1e765c5453db7f;p=openstack-build%2Fheat-build.git Always resolve properties against the current stack During an update, resources can get moved around between stacks. Ensure that the properties are always resolved against whatever the current stack is, without needing to replace self.properties. Change-Id: I09f984cdf4478ca7dda2b0a0f1aa5a63dd2c19bc --- diff --git a/heat/engine/resource.py b/heat/engine/resource.py index e242840b..302693ff 100644 --- a/heat/engine/resource.py +++ b/heat/engine/resource.py @@ -138,7 +138,7 @@ class Resource(object): self.t = stack.resolve_static_data(json_snippet) self.properties = Properties(self.properties_schema, self.t.get('Properties', {}), - self.stack.resolve_runtime_data, + self._resolve_runtime_data, self.name) self.attributes = Attributes(self.name, self.attributes_schema, @@ -184,6 +184,9 @@ class Resource(object): def type(self): return self.t['Type'] + def _resolve_runtime_data(self, snippet): + return self.stack.resolve_runtime_data(snippet) + def has_interface(self, resource_type): """Check to see if this resource is either mapped to resource_type or is a "resource_type". @@ -209,7 +212,7 @@ class Resource(object): template = self.t else: template = self.t.get(section, default) - return self.stack.resolve_runtime_data(template) + return self._resolve_runtime_data(template) def update_template_diff(self, after, before): ''' @@ -386,7 +389,7 @@ class Resource(object): self.t = self.stack.resolve_static_data(self.json_snippet) self.properties = Properties(self.properties_schema, self.t.get('Properties', {}), - self.stack.resolve_runtime_data, + self._resolve_runtime_data, self.name) return self._do_action(action, self.properties.validate) @@ -411,7 +414,7 @@ class Resource(object): self.state_set(action, self.IN_PROGRESS) properties = Properties(self.properties_schema, after.get('Properties', {}), - self.stack.resolve_runtime_data, + self._resolve_runtime_data, self.name) properties.validate() tmpl_diff = self.update_template_diff(after, before)