From de02376d549ee22b4e1e37bd3e47ac6cb89cb9db Mon Sep 17 00:00:00 2001 From: Zane Bitter Date: Tue, 3 Jul 2012 14:55:30 +0200 Subject: [PATCH] Use a consistent stack ID Generate the StackId field of various API responses in the same place, so it is consistent and can be easily modified later. Change-Id: I09a3e170b5825533d8cf9c7dbf08a0ef6700a682 Signed-off-by: Zane Bitter --- heat/engine/manager.py | 8 ++++---- heat/engine/parser.py | 7 +++++++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/heat/engine/manager.py b/heat/engine/manager.py index cce0747792..f96b98789d 100644 --- a/heat/engine/manager.py +++ b/heat/engine/manager.py @@ -107,7 +107,7 @@ class EngineManager(manager.Manager): for s in stacks: stack = parser.Stack.load(context, s.id) mem = {} - mem['StackId'] = "/".join([s.name, str(s.id)]) + mem['StackId'] = stack.stack_id() mem['StackName'] = s.name mem['CreationTime'] = heat_utils.strtime(s.created_at) mem['TemplateDescription'] = stack.t[parser.DESCRIPTION] @@ -143,7 +143,7 @@ class EngineManager(manager.Manager): if s: stack = parser.Stack.load(context, s.id) mem = {} - mem['StackId'] = "/".join([s.name, str(s.id)]) + mem['StackId'] = stack.stack_id() mem['StackName'] = s.name mem['CreationTime'] = heat_utils.strtime(s.created_at) mem['LastUpdatedTimestamp'] = heat_utils.strtime(s.updated_at) @@ -191,7 +191,7 @@ class EngineManager(manager.Manager): stack_id = stack.store() greenpool.spawn_n(stack.create, **_extract_args(params)) - return {'StackId': "/".join([stack.name, str(stack.id)])} + return {'StackId': stack.stack_id()} def validate_template(self, context, template, params): """ @@ -519,7 +519,7 @@ def format_stack_resource(resource): rs = db_api.resource_get(resource.stack.context, resource.id) last_updated_time = rs.updated_at or rs.created_at return { - 'StackId': resource.stack.id, + 'StackId': resource.stack.stack_id(), 'StackName': resource.stack.name, 'LogicalResourceId': resource.name, 'PhysicalResourceId': resource.instance_id or '', diff --git a/heat/engine/parser.py b/heat/engine/parser.py index ec770a8c48..e1244a80be 100644 --- a/heat/engine/parser.py +++ b/heat/engine/parser.py @@ -328,6 +328,13 @@ class Stack(object): '''Return a human-readable string representation of the stack''' return 'Stack "%s"' % self.name + def stack_id(self): + ''' + Return a unique ID for this stack suitable for displaying to the + user + ''' + return '/'.join([self.name, str(self.id)]) + def validate(self): ''' http://docs.amazonwebservices.com/AWSCloudFormation/latest/\