summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
authorTrey Morris <trey.morris@rackspace.com>2011-06-22 16:33:06 -0500
committerTrey Morris <trey.morris@rackspace.com>2011-06-22 16:33:06 -0500
commit06c9a7454cc310ddcc059d685b43d75c5167a26b (patch)
treea3d36c3dc2b306dc8bcd41d7d9b5c9dabf841b52 /nova
parentd9966726cb8327ed51d8c11bf447e858df663130 (diff)
fixed ip gets now have floating IPs correctly loaded
Diffstat (limited to 'nova')
-rw-r--r--nova/db/sqlalchemy/api.py28
-rw-r--r--nova/network/api.py2
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',