summaryrefslogtreecommitdiffstats
path: root/nova/db
diff options
context:
space:
mode:
authorVishvananda Ishaya <vishvananda@yahoo.com>2010-09-09 06:55:54 -0700
committerVishvananda Ishaya <vishvananda@yahoo.com>2010-09-09 06:55:54 -0700
commit64d073ca080f194680c14ccdf3b2b08e50d8eade (patch)
tree14228578621189c34bb5f7b11e57f840612d6b2d /nova/db
parentb8aaebee171876ffd0e115ea3a19d4524ca16d99 (diff)
downloadnova-64d073ca080f194680c14ccdf3b2b08e50d8eade.tar.gz
nova-64d073ca080f194680c14ccdf3b2b08e50d8eade.tar.xz
nova-64d073ca080f194680c14ccdf3b2b08e50d8eade.zip
speed up describe by loading fixed and floating ips
Diffstat (limited to 'nova/db')
-rw-r--r--nova/db/sqlalchemy/api.py9
1 files changed, 8 insertions, 1 deletions
diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py
index 817ff9ac3..958036707 100644
--- a/nova/db/sqlalchemy/api.py
+++ b/nova/db/sqlalchemy/api.py
@@ -25,6 +25,7 @@ from nova import flags
from nova.db.sqlalchemy import models
from nova.db.sqlalchemy.session import get_session
from sqlalchemy import or_
+from sqlalchemy.orm import joinedload_all
FLAGS = flags.FLAGS
@@ -251,12 +252,17 @@ def instance_get(context, instance_id):
def instance_get_all(context):
- return models.Instance.all(deleted=_deleted(context))
+ session = get_session()
+ return session.query(models.Instance
+ ).options(joinedload_all('fixed_ip.floating_ips')
+ ).filter_by(deleted=_deleted(context)
+ ).all()
def instance_get_by_project(context, project_id):
session = get_session()
return session.query(models.Instance
+ ).options(joinedload_all('fixed_ip.floating_ips')
).filter_by(project_id=project_id
).filter_by(deleted=_deleted(context)
).all()
@@ -265,6 +271,7 @@ def instance_get_by_project(context, project_id):
def instance_get_by_reservation(_context, reservation_id):
session = get_session()
return session.query(models.Instance
+ ).options(joinedload_all('fixed_ip.floating_ips')
).filter_by(reservation_id=reservation_id
).filter_by(deleted=False
).all()