diff options
| author | Jenkins <jenkins@review.openstack.org> | 2011-12-12 16:39:34 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2011-12-12 16:39:34 +0000 |
| commit | b43fa8b590850fd50a85f36da8c3046c3a1c19a0 (patch) | |
| tree | 147f94c90d54e9a402bc6b1df578befeb0ef526f /nova | |
| parent | 1b4a0f859e76de4c6e5cb7b51a12e9bf2fb3e295 (diff) | |
| parent | 1e35236519239ef2b4acbb78249502b7bd8ce9b8 (diff) | |
| download | nova-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.py | 4 | ||||
| -rw-r--r-- | nova/db/sqlalchemy/api.py | 5 | ||||
| -rw-r--r-- | nova/exception.py | 4 | ||||
| -rw-r--r-- | nova/network/quantum/nova_ipam_lib.py | 21 |
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""" |
