From 7678f0c29c7678a2030eae71695ddb02c877c803 Mon Sep 17 00:00:00 2001 From: Steve Baker Date: Wed, 23 Apr 2014 09:31:36 +1200 Subject: [PATCH] Prefetch data in resource_get_by_name_and_stack This loads resource and resource data in a single query, which means one less sql query per stack resource in a call to describe_stack_resource. Change-Id: Ic2e1ab68cf651f290be75206fd5c0c841de4ef82 Related-Bug: #1306743 --- heat/db/sqlalchemy/api.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/heat/db/sqlalchemy/api.py b/heat/db/sqlalchemy/api.py index 86973b30ea..3ea2e67729 100644 --- a/heat/db/sqlalchemy/api.py +++ b/heat/db/sqlalchemy/api.py @@ -18,6 +18,7 @@ import sys from oslo.config import cfg import sqlalchemy +from sqlalchemy import orm from sqlalchemy.orm.session import Session from heat.common import crypt @@ -112,7 +113,8 @@ def resource_get(context, resource_id): def resource_get_by_name_and_stack(context, resource_name, stack_id): result = model_query(context, models.Resource).\ filter_by(name=resource_name).\ - filter_by(stack_id=stack_id).first() + filter_by(stack_id=stack_id).\ + options(orm.joinedload("data")).first() return result