summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-12-12 21:58:15 +0000
committerGerrit Code Review <review@openstack.org>2012-12-12 21:58:15 +0000
commitb2b2bfce72a60b6728cebb446d704544e7cd2599 (patch)
tree33758795f37d32aa3f77451c1d15d3232e6aa6db
parent4a4c6ded461cc18f3112896400d0585cfad22043 (diff)
parentf2df5304f1de961ea2c9e1f4101f201b7b99ff53 (diff)
downloadnova-b2b2bfce72a60b6728cebb446d704544e7cd2599.tar.gz
nova-b2b2bfce72a60b6728cebb446d704544e7cd2599.tar.xz
nova-b2b2bfce72a60b6728cebb446d704544e7cd2599.zip
Merge "Allow rpc-silent FloatingIP exceptions in n-net"
-rw-r--r--nova/network/manager.py5
-rw-r--r--nova/tests/network/test_manager.py44
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):