diff options
author | Dave McCowan <dmccowan@cisco.com> | 2014-09-15 16:40:39 -0400 |
---|---|---|
committer | Dave McCowan <dmccowan@cisco.com> | 2014-09-16 12:39:35 -0400 |
commit | 820dbb43bdac992c008ef05e1366adf20b3676af (patch) | |
tree | a3f1ad408b07f23e25519b0548f0b1d85580df57 | |
parent | b830f38da8b95272e10fed536c89e8dcdf7106b8 (diff) | |
download | nova-820dbb43bdac992c008ef05e1366adf20b3676af.tar.gz |
Catch NotImplementedError on reset_network for xen
This patch adds a decorator around reset_network for
NotImplementedError.
Closes-Bug: #1306404
Change-Id: If337304d2cba2f3a91374d50cd6ea3a6b80285de
-rw-r--r-- | nova/compute/manager.py | 1 | ||||
-rw-r--r-- | nova/tests/compute/test_compute_mgr.py | 23 |
2 files changed, 24 insertions, 0 deletions
diff --git a/nova/compute/manager.py b/nova/compute/manager.py index c41fef34ae..ce45568520 100644 --- a/nova/compute/manager.py +++ b/nova/compute/manager.py @@ -4232,6 +4232,7 @@ class ComputeManager(manager.Manager): instance.save(expected_task_state=task_states.SPAWNING) self._notify_about_instance_usage(context, instance, 'unshelve.end') + @messaging.expected_exceptions(NotImplementedError) @wrap_instance_fault def reset_network(self, context, instance): """Reset networking on the given instance.""" diff --git a/nova/tests/compute/test_compute_mgr.py b/nova/tests/compute/test_compute_mgr.py index 23d46a23a9..d2f74e848b 100644 --- a/nova/tests/compute/test_compute_mgr.py +++ b/nova/tests/compute/test_compute_mgr.py @@ -20,6 +20,7 @@ from eventlet import event as eventlet_event import mock import mox from oslo.config import cfg +from oslo import messaging from nova.compute import power_state from nova.compute import task_states @@ -40,6 +41,7 @@ from nova.tests import fake_block_device from nova.tests import fake_instance from nova.tests.objects import test_instance_fault from nova.tests.objects import test_instance_info_cache +from nova import utils CONF = cfg.CONF @@ -1909,6 +1911,27 @@ class ComputeManagerUnitTestCase(test.NoDBTestCase): do_test() + def test_reset_network_driver_not_implemented(self): + instance = fake_instance.fake_instance_obj(self.context) + + @mock.patch.object(self.compute.driver, 'reset_network', + side_effect=NotImplementedError()) + @mock.patch.object(compute_utils, 'add_instance_fault_from_exc') + def do_test(mock_add_fault, mock_reset): + self.assertRaises(messaging.ExpectedException, + self.compute.reset_network, + self.context, + instance) + + self.compute = utils.ExceptionHelper(self.compute) + + self.assertRaises(NotImplementedError, + self.compute.reset_network, + self.context, + instance) + + do_test() + class ComputeManagerBuildInstanceTestCase(test.NoDBTestCase): def setUp(self): |