From 8adfc448e5d719cbadcc040f0f1e765c5453db7f Mon Sep 17 00:00:00 2001 From: Zane Bitter Date: Mon, 26 Aug 2013 21:11:58 +0200 Subject: [PATCH] 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 --- heat/engine/resource.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) 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) -- 2.45.2