summaryrefslogtreecommitdiffstats
path: root/nova/db
diff options
context:
space:
mode:
authorSoren Hansen <soren.hansen@rackspace.com>2010-09-22 21:36:15 +0200
committerSoren Hansen <soren.hansen@rackspace.com>2010-09-22 21:36:15 +0200
commit41fa6058f9eecc1492833846acfc1bb8762aecc2 (patch)
treee22141c3d3fa4b8cb460e9c5c784855a9f86f414 /nova/db
parentd42e168763d232476407a07b79056fb745c6075e (diff)
parentd6104d8302057d45fa150079b5911f941cc311ce (diff)
downloadnova-41fa6058f9eecc1492833846acfc1bb8762aecc2.tar.gz
nova-41fa6058f9eecc1492833846acfc1bb8762aecc2.tar.xz
nova-41fa6058f9eecc1492833846acfc1bb8762aecc2.zip
Merge trunk.
Diffstat (limited to 'nova/db')
-rw-r--r--nova/db/sqlalchemy/api.py6
-rw-r--r--nova/db/sqlalchemy/models.py12
2 files changed, 10 insertions, 8 deletions
diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py
index 858b955f3..3f925d2ae 100644
--- a/nova/db/sqlalchemy/api.py
+++ b/nova/db/sqlalchemy/api.py
@@ -380,10 +380,8 @@ def instance_destroy(_context, instance_id):
def instance_get(context, instance_id):
- session = get_session()
- return session.query(models.Instance
- ).options(eagerload('security_groups')
- ).find(instance_id, deleted=_deleted(context))
+ return models.Instance().find(instance_id, deleted=_deleted(context),
+ options=eagerload('security_groups'))
def instance_get_all(context):
diff --git a/nova/db/sqlalchemy/models.py b/nova/db/sqlalchemy/models.py
index 2392f1c86..3c5b853a5 100644
--- a/nova/db/sqlalchemy/models.py
+++ b/nova/db/sqlalchemy/models.py
@@ -69,15 +69,19 @@ class NovaBase(object):
).count()
@classmethod
- def find(cls, obj_id, session=None, deleted=False):
+ def find(cls, obj_id, session=None, deleted=False, options=None):
"""Find object by id"""
if not session:
session = get_session()
try:
- return session.query(cls
+ query = session.query(cls
).filter_by(id=obj_id
- ).filter_by(deleted=deleted
- ).one()
+ ).filter_by(deleted=deleted)
+
+ if options:
+ query = query.options(options)
+
+ return query.one()
except exc.NoResultFound:
new_exc = exception.NotFound("No model for id %s" % obj_id)
raise new_exc.__class__, new_exc, sys.exc_info()[2]