diff options
| author | Vishvananda Ishaya <vishvananda@yahoo.com> | 2010-09-09 06:55:54 -0700 |
|---|---|---|
| committer | Vishvananda Ishaya <vishvananda@yahoo.com> | 2010-09-09 06:55:54 -0700 |
| commit | 64d073ca080f194680c14ccdf3b2b08e50d8eade (patch) | |
| tree | 14228578621189c34bb5f7b11e57f840612d6b2d | |
| parent | b8aaebee171876ffd0e115ea3a19d4524ca16d99 (diff) | |
| download | nova-64d073ca080f194680c14ccdf3b2b08e50d8eade.tar.gz nova-64d073ca080f194680c14ccdf3b2b08e50d8eade.tar.xz nova-64d073ca080f194680c14ccdf3b2b08e50d8eade.zip | |
speed up describe by loading fixed and floating ips
| -rw-r--r-- | nova/db/sqlalchemy/api.py | 9 | ||||
| -rw-r--r-- | nova/endpoint/cloud.py | 8 |
2 files changed, 12 insertions, 5 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() diff --git a/nova/endpoint/cloud.py b/nova/endpoint/cloud.py index 709c967bb..6958eacfe 100644 --- a/nova/endpoint/cloud.py +++ b/nova/endpoint/cloud.py @@ -379,11 +379,11 @@ class CloudController(object): 'code': instance['state'], 'name': instance['state_description'] } - floating_addr = db.instance_get_floating_address(context, - instance['id']) + floating_addr = None + if instance['fixed_ip']['floating_ips']: + floating_addr = instance['fixed_ip']['floating_ips'][0]['str_id'] i['publicDnsName'] = floating_addr - fixed_addr = db.instance_get_fixed_address(context, - instance['id']) + fixed_addr = instance['fixed_ip']['str_id'] i['privateDnsName'] = fixed_addr if not i['publicDnsName']: i['publicDnsName'] = i['privateDnsName'] |
