summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave McCowan <dmccowan@cisco.com>2014-09-15 16:40:39 -0400
committerDave McCowan <dmccowan@cisco.com>2014-09-16 12:39:35 -0400
commit820dbb43bdac992c008ef05e1366adf20b3676af (patch)
treea3f1ad408b07f23e25519b0548f0b1d85580df57
parentb830f38da8b95272e10fed536c89e8dcdf7106b8 (diff)
downloadnova-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.py1
-rw-r--r--nova/tests/compute/test_compute_mgr.py23
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):