diff options
-rwxr-xr-x | nova/compute/manager.py | 3 | ||||
-rw-r--r-- | nova/tests/compute/test_compute.py | 34 |
2 files changed, 37 insertions, 0 deletions
diff --git a/nova/compute/manager.py b/nova/compute/manager.py index 53ab3a2ed..3d3a094a2 100755 --- a/nova/compute/manager.py +++ b/nova/compute/manager.py @@ -65,6 +65,7 @@ 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 import rpc +from nova.openstack.common.rpc import common as rpc_common from nova.openstack.common import timeutils from nova import paths from nova import quota @@ -2579,6 +2580,7 @@ class ComputeManager(manager.SchedulerDependentManager): else: return '\n'.join(log.split('\n')[-int(length):]) + @rpc_common.client_exceptions(exception.ConsoleTypeInvalid) @exception.wrap_exception(notifier=notifier, publisher_id=publisher_id()) @wrap_instance_fault def get_vnc_console(self, context, console_type, instance): @@ -2607,6 +2609,7 @@ class ComputeManager(manager.SchedulerDependentManager): return connect_info + @rpc_common.client_exceptions(exception.ConsoleTypeInvalid) @exception.wrap_exception(notifier=notifier, publisher_id=publisher_id()) @wrap_instance_fault def get_spice_console(self, context, console_type, instance): diff --git a/nova/tests/compute/test_compute.py b/nova/tests/compute/test_compute.py index 0e41678b3..7be3cf9a0 100644 --- a/nova/tests/compute/test_compute.py +++ b/nova/tests/compute/test_compute.py @@ -172,6 +172,12 @@ class BaseTestCase(test.TestCase): fake.restore_nodes() super(BaseTestCase, self).tearDown() + def stub_out_client_exceptions(self): + def passthru(exceptions, func, *args, **kwargs): + return func(*args, **kwargs) + + self.stubs.Set(rpc_common, 'catch_client_exception', passthru) + def _create_fake_instance(self, params=None, type_name='m1.tiny'): """Create a test instance.""" if not params: @@ -1529,9 +1535,16 @@ class ComputeTestCase(BaseTestCase): instance = jsonutils.to_primitive(self._create_fake_instance()) self.compute.run_instance(self.context, instance=instance) + self.assertRaises(rpc_common.ClientException, + self.compute.get_vnc_console, + self.context, 'invalid', instance=instance) + + self.stub_out_client_exceptions() + self.assertRaises(exception.ConsoleTypeInvalid, self.compute.get_vnc_console, self.context, 'invalid', instance=instance) + self.compute.terminate_instance(self.context, instance=instance) def test_missing_vnc_console_type(self): @@ -1542,9 +1555,16 @@ class ComputeTestCase(BaseTestCase): instance = jsonutils.to_primitive(self._create_fake_instance()) self.compute.run_instance(self.context, instance=instance) + self.assertRaises(rpc_common.ClientException, + self.compute.get_vnc_console, + self.context, None, instance=instance) + + self.stub_out_client_exceptions() + self.assertRaises(exception.ConsoleTypeInvalid, self.compute.get_vnc_console, self.context, None, instance=instance) + self.compute.terminate_instance(self.context, instance=instance) def test_spicehtml5_spice_console(self): @@ -1570,9 +1590,16 @@ class ComputeTestCase(BaseTestCase): instance = jsonutils.to_primitive(self._create_fake_instance()) self.compute.run_instance(self.context, instance=instance) + self.assertRaises(rpc_common.ClientException, + self.compute.get_spice_console, + self.context, 'invalid', instance=instance) + + self.stub_out_client_exceptions() + self.assertRaises(exception.ConsoleTypeInvalid, self.compute.get_spice_console, self.context, 'invalid', instance=instance) + self.compute.terminate_instance(self.context, instance=instance) def test_missing_spice_console_type(self): @@ -1583,9 +1610,16 @@ class ComputeTestCase(BaseTestCase): instance = jsonutils.to_primitive(self._create_fake_instance()) self.compute.run_instance(self.context, instance=instance) + self.assertRaises(rpc_common.ClientException, + self.compute.get_spice_console, + self.context, None, instance=instance) + + self.stub_out_client_exceptions() + self.assertRaises(exception.ConsoleTypeInvalid, self.compute.get_spice_console, self.context, None, instance=instance) + self.compute.terminate_instance(self.context, instance=instance) def test_diagnostics(self): |