diff options
| author | Trey Morris <trey.morris@rackspace.com> | 2011-06-22 16:33:06 -0500 |
|---|---|---|
| committer | Trey Morris <trey.morris@rackspace.com> | 2011-06-22 16:33:06 -0500 |
| commit | 06c9a7454cc310ddcc059d685b43d75c5167a26b (patch) | |
| tree | a3d36c3dc2b306dc8bcd41d7d9b5c9dabf841b52 /nova | |
| parent | d9966726cb8327ed51d8c11bf447e858df663130 (diff) | |
fixed ip gets now have floating IPs correctly loaded
Diffstat (limited to 'nova')
| -rw-r--r-- | nova/db/sqlalchemy/api.py | 28 | ||||
| -rw-r--r-- | nova/network/api.py | 2 |
2 files changed, 18 insertions, 12 deletions
diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py index 805054951..31ddeaaad 100644 --- a/nova/db/sqlalchemy/api.py +++ b/nova/db/sqlalchemy/api.py @@ -702,7 +702,9 @@ def fixed_ip_disassociate_all_by_timeout(_context, host, time): def fixed_ip_get_all(context, session=None): if not session: session = get_session() - result = session.query(models.FixedIp).all() + result = session.query(models.FixedIp).\ + options(joinedload('floating_ips')).\ + all() if not result: raise exception.NoFixedIpsDefined() @@ -714,10 +716,11 @@ def fixed_ip_get_all_by_host(context, host=None): session = get_session() result = session.query(models.FixedIp).\ - join(models.FixedIp.instance).\ - filter_by(state=1).\ - filter_by(host=host).\ - all() + options(joinedload('floating_ips')).\ + join(models.FixedIp.instance).\ + filter_by(state=1).\ + filter_by(host=host).\ + all() if not result: raise exception.NoFixedIpsDefinedForHost(host=host) @@ -732,6 +735,7 @@ def fixed_ip_get_by_address(context, address, session=None): result = session.query(models.FixedIp).\ filter_by(address=address).\ filter_by(deleted=can_read_deleted(context)).\ + options(joinedload('floating_ips')).\ options(joinedload('network')).\ options(joinedload('instance')).\ first() @@ -745,15 +749,10 @@ def fixed_ip_get_by_address(context, address, session=None): @require_context -def fixed_ip_get_instance(context, address): - fixed_ip_ref = fixed_ip_get_by_address(context, address) - return fixed_ip_ref.instance - - -@require_context def fixed_ip_get_by_instance(context, instance_id): session = get_session() rv = session.query(models.FixedIp).\ + options(joinedload('floating_ips')).\ filter_by(instance_id=instance_id).\ filter_by(deleted=False).\ all() @@ -766,6 +765,7 @@ def fixed_ip_get_by_instance(context, instance_id): def fixed_ip_get_by_virtual_interface(context, vif_id): session = get_session() rv = session.query(models.FixedIp).\ + options(joinedload('floating_ips')).\ filter_by(virtual_interface_id=vif_id).\ filter_by(deleted=False).\ all() @@ -775,6 +775,12 @@ def fixed_ip_get_by_virtual_interface(context, vif_id): @require_context +def fixed_ip_get_instance(context, address): + fixed_ip_ref = fixed_ip_get_by_address(context, address) + return fixed_ip_ref.instance + + +@require_context def fixed_ip_get_instance_v6(context, address): session = get_session() diff --git a/nova/network/api.py b/nova/network/api.py index a43e76d2a..39d468a92 100644 --- a/nova/network/api.py +++ b/nova/network/api.py @@ -107,7 +107,7 @@ class API(base.Base): return if not floating_ip.get('fixed_ip'): raise exception.ApiError('Address is not associated.') - host = floating_ip['host'] + host = floating_ip['fixed_ip']['network']['host'] rpc.call(context, self.db.queue_get_for(context, FLAGS.network_topic, host), {'method': 'disassociate_floating_ip', |
