Add server schema for microversion 2.8

This commit adds servers schema for microversion 2.8 [0]:

Add ‘mks’ protocol and ‘webmks’ type for remote consoles.

The appropriate api_schema files are updated with the
2.8 microversion changes.

Note that no test is added to cover this new microversion
since it isn't possible to test mks protocol in Tempest
gates so as per REVIEWING documentation [1] we shouldn't
add such a test. So, we could only cover the vnc protocol
for 2.8 but this would also not be of much value since
the vnc value (instead of mks) would be returned by the
server.

[0] https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id7
[1] https://docs.openstack.org/tempest/latest/REVIEWING.html#ensuring-code-is-executed

partially-implements: blueprint full-schema-for-all-microversions
Change-Id: I5a6d2852db8e2a67013eee71a094e9b521a92524
This commit is contained in:
Felipe Monteiro 2018-08-03 02:18:13 -04:00
parent 6a8d495192
commit 00b3bd55d9
5 changed files with 56 additions and 14 deletions

View File

@ -306,6 +306,10 @@ Microversion tests implemented in Tempest
.. _2.6: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id5
* `2.8`_
.. _2.8: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id7
* `2.9`_
.. _2.9: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id8

View File

@ -0,0 +1,37 @@
# Copyright 2018 AT&T Corporation. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import copy
from tempest.lib.api_schema.response.compute.v2_6 import servers
# 2.8: Add 'mks' protocol and 'webmks' type for remote consoles.
get_remote_consoles = copy.deepcopy(servers.get_remote_consoles)
get_remote_consoles['response_body']['properties']['remote_console'][
'properties']['protocol']['enum'].append('mks')
get_remote_consoles['response_body']['properties']['remote_console'][
'properties']['type']['enum'].append('webmks')
# NOTE: Below are the unchanged schema in this microversion. We need
# to keep this schema in this file to have the generic way to select the
# right schema based on self.schema_versions_info mapping in service client.
# ****** Schemas unchanged since microversion 2.6 ******
list_servers = copy.deepcopy(servers.list_servers)
get_server = copy.deepcopy(servers.get_server)
list_servers_detail = copy.deepcopy(servers.list_servers_detail)
update_server = copy.deepcopy(servers.update_server)
rebuild_server = copy.deepcopy(servers.rebuild_server)
rebuild_server_with_admin_pass = copy.deepcopy(
servers.rebuild_server_with_admin_pass)
show_server_diagnostics = copy.deepcopy(servers.show_server_diagnostics)

View File

@ -14,16 +14,7 @@
import copy
from tempest.lib.api_schema.response.compute.v2_1 import servers as servers_21
from tempest.lib.api_schema.response.compute.v2_6 import servers
# NOTE: Below are the unchanged schema in this microversion. We need
# to keep this schema in this file to have the generic way to select the
# right schema based on self.schema_versions_info mapping in service client.
# ****** Schemas unchanged since microversion 2.6 ******
list_servers = copy.deepcopy(servers.list_servers)
show_server_diagnostics = copy.deepcopy(servers.show_server_diagnostics)
get_remote_consoles = copy.deepcopy(servers.get_remote_consoles)
from tempest.lib.api_schema.response.compute.v2_8 import servers
get_server = copy.deepcopy(servers.get_server)
get_server['response_body']['properties']['server'][
@ -37,21 +28,29 @@ list_servers_detail['response_body']['properties']['servers']['items'][
list_servers_detail['response_body']['properties']['servers']['items'][
'required'].append('locked')
update_server = copy.deepcopy(servers_21.update_server)
update_server = copy.deepcopy(servers.update_server)
update_server['response_body']['properties']['server'][
'properties'].update({'locked': {'type': 'boolean'}})
update_server['response_body']['properties']['server'][
'required'].append('locked')
rebuild_server = copy.deepcopy(servers_21.rebuild_server)
rebuild_server = copy.deepcopy(servers.rebuild_server)
rebuild_server['response_body']['properties']['server'][
'properties'].update({'locked': {'type': 'boolean'}})
rebuild_server['response_body']['properties']['server'][
'required'].append('locked')
rebuild_server_with_admin_pass = copy.deepcopy(
servers_21.rebuild_server_with_admin_pass)
servers.rebuild_server_with_admin_pass)
rebuild_server_with_admin_pass['response_body']['properties']['server'][
'properties'].update({'locked': {'type': 'boolean'}})
rebuild_server_with_admin_pass['response_body']['properties']['server'][
'required'].append('locked')
# NOTE: Below are the unchanged schema in this microversion. We need
# to keep this schema in this file to have the generic way to select the
# right schema based on self.schema_versions_info mapping in service client.
# ****** Schemas unchanged since microversion 2.8 ******
list_servers = copy.deepcopy(servers.list_servers)
show_server_diagnostics = copy.deepcopy(servers.show_server_diagnostics)
get_remote_consoles = copy.deepcopy(servers.get_remote_consoles)

View File

@ -33,6 +33,7 @@ from tempest.lib.api_schema.response.compute.v2_54 import servers as schemav254
from tempest.lib.api_schema.response.compute.v2_57 import servers as schemav257
from tempest.lib.api_schema.response.compute.v2_6 import servers as schemav26
from tempest.lib.api_schema.response.compute.v2_63 import servers as schemav263
from tempest.lib.api_schema.response.compute.v2_8 import servers as schemav28
from tempest.lib.api_schema.response.compute.v2_9 import servers as schemav29
from tempest.lib.common import rest_client
from tempest.lib.services.compute import base_compute_client
@ -44,7 +45,8 @@ class ServersClient(base_compute_client.BaseComputeClient):
schema_versions_info = [
{'min': None, 'max': '2.2', 'schema': schema},
{'min': '2.3', 'max': '2.5', 'schema': schemav23},
{'min': '2.6', 'max': '2.8', 'schema': schemav26},
{'min': '2.6', 'max': '2.7', 'schema': schemav26},
{'min': '2.8', 'max': '2.8', 'schema': schemav28},
{'min': '2.9', 'max': '2.15', 'schema': schemav29},
{'min': '2.16', 'max': '2.18', 'schema': schemav216},
{'min': '2.19', 'max': '2.25', 'schema': schemav219},