diff --git a/nova/api/openstack/compute/console_auth_tokens.py b/nova/api/openstack/compute/console_auth_tokens.py index 894bf279e0..f35855122b 100644 --- a/nova/api/openstack/compute/console_auth_tokens.py +++ b/nova/api/openstack/compute/console_auth_tokens.py @@ -93,11 +93,13 @@ class ConsoleAuthTokensController(wsgi.Controller): @wsgi.Controller.api_version("2.31", "2.98") # noqa @wsgi.expected_errors((400, 404)) @validation.query_schema(schema.show_query) + @validation.response_body_schema(schema.show_response) def show(self, req, id): # noqa return self._show(req, id, include_tls_port=False) @wsgi.Controller.api_version("2.99") # noqa @wsgi.expected_errors((400, 404)) @validation.query_schema(schema.show_query) + @validation.response_body_schema(schema.show_response_v299) def show(self, req, id): # noqa return self._show(req, id, include_tls_port=True) diff --git a/nova/api/openstack/compute/schemas/console_auth_tokens.py b/nova/api/openstack/compute/schemas/console_auth_tokens.py index 6f7166dd3c..f700d780c8 100644 --- a/nova/api/openstack/compute/schemas/console_auth_tokens.py +++ b/nova/api/openstack/compute/schemas/console_auth_tokens.py @@ -10,6 +10,8 @@ # License for the specific language governing permissions and limitations # under the License. +import copy + # TODO(stephenfin): Remove additionalProperties in a future API version show_query = { 'type': 'object', @@ -47,3 +49,8 @@ show_response = { 'required': ['console'], 'additionalProperties': False, } + +show_response_v299 = copy.deepcopy(show_response) +show_response_v299['properties']['console']['properties'].update({ + 'tls_port': {'type': ['integer', 'null']}, +}) diff --git a/nova/tests/unit/api/openstack/compute/test_console_auth_tokens.py b/nova/tests/unit/api/openstack/compute/test_console_auth_tokens.py index 09050b25ba..debce06e49 100644 --- a/nova/tests/unit/api/openstack/compute/test_console_auth_tokens.py +++ b/nova/tests/unit/api/openstack/compute/test_console_auth_tokens.py @@ -35,7 +35,7 @@ class ConsoleAuthTokensExtensionTestV21(test.NoDBTestCase): 'instance_uuid': fakes.FAKE_UUID, 'host': 'fake_host', 'port': '1234', - 'internal_access_path': 'fake_access_path' + 'internal_access_path': fakes.FAKE_UUID, } } _EXPECTED_OUTPUT_SPICE = { @@ -53,11 +53,11 @@ class ConsoleAuthTokensExtensionTestV21(test.NoDBTestCase): _EXPECTED_OUTPUT_DB = copy.deepcopy(_EXPECTED_OUTPUT) _EXPECTED_OUTPUT_DB['console'].update( {'host': 'fake_host', 'port': 1234, - 'internal_access_path': 'fake_access_path'}) + 'internal_access_path': fakes.FAKE_UUID}) _EXPECTED_OUTPUT_DB_SPICE = copy.deepcopy(_EXPECTED_OUTPUT_SPICE) _EXPECTED_OUTPUT_DB_SPICE['console'].update( - {'host': u'fake_host', 'port': 5900, 'tls_port': 5901}) + {'host': 'fake_host', 'port': 5900, 'tls_port': 5901}) def setUp(self): super(ConsoleAuthTokensExtensionTestV21, self).setUp() @@ -82,7 +82,7 @@ class ConsoleAuthTokensExtensionTestV231(ConsoleAuthTokensExtensionTestV21): @mock.patch('nova.objects.ConsoleAuthToken.validate', return_value=objects.ConsoleAuthToken( instance_uuid=fakes.FAKE_UUID, host='fake_host', - port='1234', internal_access_path='fake_access_path', + port='1234', internal_access_path=fakes.FAKE_UUID, console_type='webmks', token=fakes.FAKE_UUID)) def test_get_console_connect_info(self, mock_validate): @@ -108,7 +108,7 @@ class ConsoleAuthTokensExtensionTestV299(ConsoleAuthTokensExtensionTestV21): @mock.patch('nova.objects.ConsoleAuthToken.validate', return_value=objects.ConsoleAuthToken( instance_uuid=fakes.FAKE_UUID, host='fake_host', - port='1234', internal_access_path='fake_access_path', + port='1234', internal_access_path=fakes.FAKE_UUID, console_type='webmks', token=fakes.FAKE_UUID)) def test_get_console_connect_info(self, mock_validate): output = self.controller.show(self.req, fakes.FAKE_UUID)