summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2011-12-12 16:39:34 +0000
committerGerrit Code Review <review@openstack.org>2011-12-12 16:39:34 +0000
commitb43fa8b590850fd50a85f36da8c3046c3a1c19a0 (patch)
tree147f94c90d54e9a402bc6b1df578befeb0ef526f /nova
parent1b4a0f859e76de4c6e5cb7b51a12e9bf2fb3e295 (diff)
parent1e35236519239ef2b4acbb78249502b7bd8ce9b8 (diff)
downloadnova-b43fa8b590850fd50a85f36da8c3046c3a1c19a0.tar.gz
nova-b43fa8b590850fd50a85f36da8c3046c3a1c19a0.tar.xz
nova-b43fa8b590850fd50a85f36da8c3046c3a1c19a0.zip
Merge "fixed_ips by vif does not raise"
Diffstat (limited to 'nova')
-rw-r--r--nova/db/api.py4
-rw-r--r--nova/db/sqlalchemy/api.py5
-rw-r--r--nova/exception.py4
-rw-r--r--nova/network/quantum/nova_ipam_lib.py21
4 files changed, 13 insertions, 21 deletions
diff --git a/nova/db/api.py b/nova/db/api.py
index 0e459ae67..eafa5664f 100644
--- a/nova/db/api.py
+++ b/nova/db/api.py
@@ -416,9 +416,9 @@ def fixed_ip_get_by_network_host(context, network_id, host):
return IMPL.fixed_ip_get_by_network_host(context, network_id, host)
-def fixed_ip_get_by_virtual_interface(context, vif_id):
+def fixed_ips_by_virtual_interface(context, vif_id):
"""Get fixed ips by virtual interface or raise if none exist."""
- return IMPL.fixed_ip_get_by_virtual_interface(context, vif_id)
+ return IMPL.fixed_ips_by_virtual_interface(context, vif_id)
def fixed_ip_get_network(context, address):
diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py
index 04f59256e..c59ecf5cd 100644
--- a/nova/db/sqlalchemy/api.py
+++ b/nova/db/sqlalchemy/api.py
@@ -876,15 +876,12 @@ def fixed_ip_get_by_network_host(context, network_id, host):
@require_context
-def fixed_ip_get_by_virtual_interface(context, vif_id):
+def fixed_ips_by_virtual_interface(context, vif_id):
result = model_query(context, models.FixedIp, read_deleted="no").\
options(joinedload('floating_ips')).\
filter_by(virtual_interface_id=vif_id).\
all()
- if not result:
- raise exception.FixedIpNotFoundForVirtualInterface(vif_id=vif_id)
-
return result
diff --git a/nova/exception.py b/nova/exception.py
index 9d9ce16f5..8d0371b96 100644
--- a/nova/exception.py
+++ b/nova/exception.py
@@ -515,10 +515,6 @@ class FixedIpNotFoundForSpecificInstance(FixedIpNotFound):
message = _("Instance %(instance_id)s doesn't have fixed ip '%(ip)s'.")
-class FixedIpNotFoundForVirtualInterface(FixedIpNotFound):
- message = _("Virtual interface %(vif_id)s has zero associated fixed ips.")
-
-
class FixedIpNotFoundForHost(FixedIpNotFound):
message = _("Host %(host)s has zero fixed ips.")
diff --git a/nova/network/quantum/nova_ipam_lib.py b/nova/network/quantum/nova_ipam_lib.py
index 72abe20c8..9a50d5da7 100644
--- a/nova/network/quantum/nova_ipam_lib.py
+++ b/nova/network/quantum/nova_ipam_lib.py
@@ -172,7 +172,7 @@ class QuantumNovaIPAMLib(object):
the specified virtual interface, based on the fixed_ips table.
"""
vif_rec = db.virtual_interface_get_by_uuid(context, vif_id)
- fixed_ips = db.fixed_ip_get_by_virtual_interface(context,
+ fixed_ips = db.fixed_ips_by_virtual_interface(context,
vif_rec['id'])
return [fixed_ip['address'] for fixed_ip in fixed_ips]
@@ -203,17 +203,16 @@ class QuantumNovaIPAMLib(object):
"""Deallocate all fixed IPs associated with the specified
virtual interface.
"""
- try:
- admin_context = context.elevated()
- fixed_ips = db.fixed_ip_get_by_virtual_interface(admin_context,
- vif_ref['id'])
- for fixed_ip in fixed_ips:
- db.fixed_ip_update(admin_context, fixed_ip['address'],
- {'allocated': False,
- 'virtual_interface_id': None})
- except exception.FixedIpNotFoundForInstance:
+ admin_context = context.elevated()
+ fixed_ips = db.fixed_ips_by_virtual_interface(admin_context,
+ vif_ref['id'])
+ for fixed_ip in fixed_ips:
+ db.fixed_ip_update(admin_context, fixed_ip['address'],
+ {'allocated': False,
+ 'virtual_interface_id': None})
+ if len(fixed_ips) == 0:
LOG.error(_('No fixed IPs to deallocate for vif %s' %
- vif_ref['id']))
+ vif_ref['id']))
def get_allocated_ips(self, context, subnet_id, project_id):
"""Returns a list of (ip, vif_id) pairs"""