]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
Allow nested stacks to be retrieved by name
authorAngus Salkeld <asalkeld@redhat.com>
Thu, 19 Jul 2012 08:35:59 +0000 (18:35 +1000)
committerAngus Salkeld <asalkeld@redhat.com>
Thu, 19 Jul 2012 08:35:59 +0000 (18:35 +1000)
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 <asalkeld@redhat.com>
heat/db/sqlalchemy/api.py
heat/engine/manager.py

index 3d5b4bbd0692ace602140343ce9bf14afc121cb8..31bd1393c4e66bd0bcc9ef7088b146ba0aa3ccdb 100644 (file)
@@ -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
index a39d4223e9f5104baecaf0247c63dbb7fa5493aa..31c95e9e1ad8610665d38ccaee3b12e62bdbe9d4 100644 (file)
@@ -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]