diff options
| author | Jenkins <jenkins@review.openstack.org> | 2012-12-12 21:58:15 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2012-12-12 21:58:15 +0000 |
| commit | b2b2bfce72a60b6728cebb446d704544e7cd2599 (patch) | |
| tree | 33758795f37d32aa3f77451c1d15d3232e6aa6db /nova | |
| parent | 4a4c6ded461cc18f3112896400d0585cfad22043 (diff) | |
| parent | f2df5304f1de961ea2c9e1f4101f201b7b99ff53 (diff) | |
| download | nova-b2b2bfce72a60b6728cebb446d704544e7cd2599.tar.gz nova-b2b2bfce72a60b6728cebb446d704544e7cd2599.tar.xz nova-b2b2bfce72a60b6728cebb446d704544e7cd2599.zip | |
Merge "Allow rpc-silent FloatingIP exceptions in n-net"
Diffstat (limited to 'nova')
| -rw-r--r-- | nova/network/manager.py | 5 | ||||
| -rw-r--r-- | nova/tests/network/test_manager.py | 44 |
2 files changed, 49 insertions, 0 deletions
diff --git a/nova/network/manager.py b/nova/network/manager.py index 2c342b706..faeaff87c 100644 --- a/nova/network/manager.py +++ b/nova/network/manager.py @@ -69,6 +69,7 @@ from nova.openstack.common import jsonutils from nova.openstack.common import lockutils from nova.openstack.common import log as logging from nova.openstack.common.notifier import api as notifier +from nova.openstack.common.rpc import common as rpc_common from nova.openstack.common import timeutils from nova.openstack.common import uuidutils import nova.policy @@ -460,6 +461,7 @@ class FloatingIP(object): return floating_ip + @rpc_common.client_exceptions(exception.FloatingIpNotFoundForAddress) @wrap_check_policy def deallocate_floating_ip(self, context, address, affect_auto_assigned=False): @@ -506,6 +508,7 @@ class FloatingIP(object): if reservations: QUOTAS.commit(context, reservations) + @rpc_common.client_exceptions(exception.FloatingIpNotFoundForAddress) @wrap_check_policy def associate_floating_ip(self, context, floating_address, fixed_address, affect_auto_assigned=False): @@ -585,6 +588,7 @@ class FloatingIP(object): 'network.floating_ip.associate', notifier.INFO, payload=payload) + @rpc_common.client_exceptions(exception.FloatingIpNotFoundForAddress) @wrap_check_policy def disassociate_floating_ip(self, context, address, affect_auto_assigned=False): @@ -655,6 +659,7 @@ class FloatingIP(object): 'network.floating_ip.disassociate', notifier.INFO, payload=payload) + @rpc_common.client_exceptions(exception.FloatingIpNotFound) @wrap_check_policy def get_floating_ip(self, context, id): """Returns a floating IP as a dict""" diff --git a/nova/tests/network/test_manager.py b/nova/tests/network/test_manager.py index d17bce0d2..2338e6259 100644 --- a/nova/tests/network/test_manager.py +++ b/nova/tests/network/test_manager.py @@ -30,6 +30,7 @@ from nova.network import manager as network_manager from nova.openstack.common import importutils from nova.openstack.common import log as logging from nova.openstack.common import rpc +from nova.openstack.common.rpc import common as rpc_common import nova.policy from nova import test from nova.tests import fake_ldap @@ -1930,6 +1931,49 @@ class FloatingIPTestCase(test.TestCase): self.network.add_virtual_interface(ctxt, 'fake_uuid', 'fake_net') self.assertEqual(macs, []) + def test_deallocate_client_exceptions(self): + """Ensure that FloatingIpNotFoundForAddress is wrapped""" + self.mox.StubOutWithMock(self.network.db, 'floating_ip_get_by_address') + self.network.db.floating_ip_get_by_address( + self.context, '1.2.3.4').AndRaise( + exception.FloatingIpNotFoundForAddress) + self.mox.ReplayAll() + self.assertRaises(rpc_common.ClientException, + self.network.deallocate_floating_ip, + self.context, '1.2.3.4') + + def test_associate_client_exceptions(self): + """Ensure that FloatingIpNotFoundForAddress is wrapped""" + self.mox.StubOutWithMock(self.network.db, 'floating_ip_get_by_address') + self.network.db.floating_ip_get_by_address( + self.context, '1.2.3.4').AndRaise( + exception.FloatingIpNotFoundForAddress) + self.mox.ReplayAll() + self.assertRaises(rpc_common.ClientException, + self.network.associate_floating_ip, + self.context, '1.2.3.4', '10.0.0.1') + + def test_disassociate_client_exceptions(self): + """Ensure that FloatingIpNotFoundForAddress is wrapped""" + self.mox.StubOutWithMock(self.network.db, 'floating_ip_get_by_address') + self.network.db.floating_ip_get_by_address( + self.context, '1.2.3.4').AndRaise( + exception.FloatingIpNotFoundForAddress) + self.mox.ReplayAll() + self.assertRaises(rpc_common.ClientException, + self.network.disassociate_floating_ip, + self.context, '1.2.3.4') + + def test_get_floating_ip_client_exceptions(self): + """Ensure that FloatingIpNotFoundForAddress is wrapped""" + self.mox.StubOutWithMock(self.network.db, 'floating_ip_get') + self.network.db.floating_ip_get(self.context, 'fake-id').AndRaise( + exception.FloatingIpNotFound) + self.mox.ReplayAll() + self.assertRaises(rpc_common.ClientException, + self.network.get_floating_ip, + self.context, 'fake-id') + class NetworkPolicyTestCase(test.TestCase): def setUp(self): |
