From: Angus Salkeld Date: Thu, 19 Jul 2012 08:35:59 +0000 (+1000) Subject: Allow nested stacks to be retrieved by name X-Git-Tag: 2014.1~1581 X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=be3c066ab87cc6e1a2ca8c097eeccd9217d7329a;p=openstack-build%2Fheat-build.git Allow nested stacks to be retrieved by name When getting the stack by name in the metadata server we don't know the owner_id so allow retrieval just by name. I suspect this will be a short term solution until we get proper stack names. Change-Id: I8845b2b33a5bae30aae66c06af01c1a27c990305 Signed-off-by: Angus Salkeld --- diff --git a/heat/db/sqlalchemy/api.py b/heat/db/sqlalchemy/api.py index 3d5b4bbd..31bd1393 100644 --- a/heat/db/sqlalchemy/api.py +++ b/heat/db/sqlalchemy/api.py @@ -111,9 +111,13 @@ def resource_get_all_by_stack(context, stack_id): def stack_get_by_name(context, stack_name, owner_id=None): - result = model_query(context, models.Stack).\ - filter_by(owner_id=owner_id).\ - filter_by(name=stack_name).first() + if owner_id: + result = model_query(context, models.Stack).\ + filter_by(owner_id=owner_id).\ + filter_by(name=stack_name).first() + else: + result = model_query(context, models.Stack).\ + filter_by(name=stack_name).first() if (result is not None and context is not None and result.username != context.username): return None diff --git a/heat/engine/manager.py b/heat/engine/manager.py index a39d4223..31c95e9e 100644 --- a/heat/engine/manager.py +++ b/heat/engine/manager.py @@ -331,10 +331,13 @@ class EngineManager(manager.Manager): s = db_api.stack_get_by_name(None, stack_name) if not s: + logger.warn("Stack %s not found" % stack_name) return ['stack', None] stack = parser.Stack.load(None, s.id) if resource_name not in stack: + logger.warn("Resource not found %s:%s." % (stack_name, + resource_name)) return ['resource', None] resource = stack[resource_name]