API: Mapping ConsoleTypeInvalid exception to HTTPBadRequest

We need to catch up ConsoleTypeInvalid in API layer to avoid 500 error
in case we passed invalid console type (> v2.6).

Closes-Bug: #1551104
Change-Id: I8be6dd1efd9057fb582713e0fe9fe0d626832fda
This commit is contained in:
Eli Qiao
2016-02-29 15:23:33 +08:00
parent 3781ef8e0c
commit 7c2cab6208
2 changed files with 12 additions and 1 deletions
@@ -178,7 +178,8 @@ class RemoteConsolesController(wsgi.Controller):
raise webob.exc.HTTPNotFound(explanation=e.format_message())
except exception.InstanceNotReady as e:
raise webob.exc.HTTPConflict(explanation=e.format_message())
except (exception.ConsoleTypeUnavailable,
except (exception.ConsoleTypeInvalid,
exception.ConsoleTypeUnavailable,
exception.ImageSerialPortNumberInvalid,
exception.ImageSerialPortNumberExceedFlavorValue,
exception.SocketPortRangeExhaustedException) as e:
@@ -572,6 +572,16 @@ class ConsolesExtensionTestV26(test.NoDBTestCase):
self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create,
self.req, fakes.FAKE_UUID, body=body)
@mock.patch.object(compute_api.API, 'get', return_value='fake_instance')
def test_create_console_invalid_type(self, mock_get):
mock_handler = mock.MagicMock()
mock_handler.side_effect = (
exception.ConsoleTypeInvalid(console_type='invalid_type'))
self.controller.handlers['serial'] = mock_handler
body = {'remote_console': {'protocol': 'serial', 'type': 'xvpvnc'}}
self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create,
self.req, fakes.FAKE_UUID, body=body)
class ConsolesExtensionTestV28(ConsolesExtensionTestV26):
def setUp(self):