From ac84fae5d3847a2fc10ca95d1ba2be28e7fab08f Mon Sep 17 00:00:00 2001 From: Steven Hardy Date: Mon, 28 Jan 2013 14:38:20 +0000 Subject: [PATCH] heat engine : don't replace resource template before update We want to validate the pre-update properties without touching the existing template, because the resource implementation will need to compare old/new json snippets to decide if a and update can be performed or not. ref blueprint instance-update-stack Change-Id: I37ce6e799242819de6104a53f8458d8bbc3abf1c Signed-off-by: Steven Hardy --- heat/engine/resource.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/heat/engine/resource.py b/heat/engine/resource.py index 52f1c34a..b3de66ad 100644 --- a/heat/engine/resource.py +++ b/heat/engine/resource.py @@ -252,8 +252,11 @@ class Resource(object): result = self.UPDATE_NOT_IMPLEMENTED try: self.state_set(self.UPDATE_IN_PROGRESS) - self.t = self.stack.resolve_static_data(json_snippet) - err = self.properties.validate() + properties = Properties(self.properties_schema, + json_snippet.get('Properties', {}), + self.stack.resolve_runtime_data, + self.name) + err = properties.validate() if err: raise ValueError(err) if callable(getattr(self, 'handle_update', None)): @@ -266,6 +269,7 @@ class Resource(object): # If resource was updated (with or without interruption), # then we set the resource to UPDATE_COMPLETE if not result == self.UPDATE_REPLACE: + self.t = self.stack.resolve_static_data(json_snippet) self.state_set(self.UPDATE_COMPLETE) return result -- 2.45.2