Add microversion schemas for os-instance-actions

I need to use os-instance-actions API in a waiter that is called from
multiple microversion tests in a later patch. So this patch adds the
microversion schemas for this API.

blueprint: qos-minimum-guaranteed-packet-rate
Change-Id: I010fbb4236ccaedb3de663e32eb22f89931d53c7
This commit is contained in:
Balazs Gibizer 2021-10-05 11:19:05 +02:00
parent efa21d3bb9
commit f46bcdf5e4
23 changed files with 194 additions and 38 deletions

View File

@ -171,3 +171,4 @@ get_remote_consoles = copy.deepcopy(servers.get_remote_consoles)
attach_volume = copy.deepcopy(servers.attach_volume)
show_volume_attachment = copy.deepcopy(servers.show_volume_attachment)
list_volume_attachments = copy.deepcopy(servers.list_volume_attachments)
show_instance_action = copy.deepcopy(servers.show_instance_action)

View File

@ -61,3 +61,4 @@ get_remote_consoles = copy.deepcopy(serversv216.get_remote_consoles)
attach_volume = copy.deepcopy(serversv216.attach_volume)
show_volume_attachment = copy.deepcopy(serversv216.show_volume_attachment)
list_volume_attachments = copy.deepcopy(serversv216.list_volume_attachments)
show_instance_action = copy.deepcopy(serversv216.show_instance_action)

View File

@ -104,3 +104,4 @@ get_remote_consoles = copy.deepcopy(servers219.get_remote_consoles)
attach_volume = copy.deepcopy(servers219.attach_volume)
show_volume_attachment = copy.deepcopy(servers219.show_volume_attachment)
list_volume_attachments = copy.deepcopy(servers219.list_volume_attachments)
show_instance_action = copy.deepcopy(servers219.show_instance_action)

View File

@ -176,3 +176,4 @@ show_server_diagnostics = copy.deepcopy(servers.show_server_diagnostics)
attach_volume = copy.deepcopy(servers.attach_volume)
show_volume_attachment = copy.deepcopy(servers.show_volume_attachment)
list_volume_attachments = copy.deepcopy(servers.list_volume_attachments)
show_instance_action = copy.deepcopy(servers.show_instance_action)

View File

@ -69,3 +69,4 @@ list_servers = copy.deepcopy(servers226.list_servers)
attach_volume = copy.deepcopy(servers226.attach_volume)
show_volume_attachment = copy.deepcopy(servers226.show_volume_attachment)
list_volume_attachments = copy.deepcopy(servers226.list_volume_attachments)
show_instance_action = copy.deepcopy(servers226.show_instance_action)

View File

@ -132,3 +132,4 @@ rebuild_server_with_admin_pass = copy.deepcopy(
attach_volume = copy.deepcopy(servers247.attach_volume)
show_volume_attachment = copy.deepcopy(servers247.show_volume_attachment)
list_volume_attachments = copy.deepcopy(servers247.list_volume_attachments)
show_instance_action = copy.deepcopy(servers247.show_instance_action)

View File

@ -0,0 +1,42 @@
# 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_48 import servers as servers248
# microversion 2.51 made events a mandatory field in the response
show_instance_action = copy.deepcopy(servers248.show_instance_action)
show_instance_action['response_body'][
'properties']['instanceAction']['required'].append('events')
# 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.
list_servers = copy.deepcopy(servers248.list_servers)
show_server_diagnostics = copy.deepcopy(servers248.show_server_diagnostics)
get_remote_consoles = copy.deepcopy(servers248.get_remote_consoles)
list_tags = copy.deepcopy(servers248.list_tags)
update_all_tags = copy.deepcopy(servers248.update_all_tags)
delete_all_tags = copy.deepcopy(servers248.delete_all_tags)
check_tag_existence = copy.deepcopy(servers248.check_tag_existence)
update_tag = copy.deepcopy(servers248.update_tag)
delete_tag = copy.deepcopy(servers248.delete_tag)
get_server = copy.deepcopy(servers248.get_server)
list_servers_detail = copy.deepcopy(servers248.list_servers_detail)
update_server = copy.deepcopy(servers248.update_server)
rebuild_server = copy.deepcopy(servers248.rebuild_server)
rebuild_server_with_admin_pass = copy.deepcopy(
servers248.rebuild_server_with_admin_pass)
attach_volume = copy.deepcopy(servers248.attach_volume)
show_volume_attachment = copy.deepcopy(servers248.show_volume_attachment)
list_volume_attachments = copy.deepcopy(servers248.list_volume_attachments)

View File

@ -12,7 +12,7 @@
import copy
from tempest.lib.api_schema.response.compute.v2_48 import servers as servers248
from tempest.lib.api_schema.response.compute.v2_51 import servers as servers251
# ****** Schemas changed in microversion 2.54 *****************
# Note(gmann): This is schema for microversion 2.54 which includes the
@ -26,14 +26,14 @@ key_name = {
]
}
rebuild_server = copy.deepcopy(servers248.rebuild_server)
rebuild_server = copy.deepcopy(servers251.rebuild_server)
rebuild_server['response_body']['properties']['server'][
'properties'].update({'key_name': key_name})
rebuild_server['response_body']['properties']['server'][
'required'].append('key_name')
rebuild_server_with_admin_pass = copy.deepcopy(
servers248.rebuild_server_with_admin_pass)
servers251.rebuild_server_with_admin_pass)
rebuild_server_with_admin_pass['response_body']['properties']['server'][
'properties'].update({'key_name': key_name})
rebuild_server_with_admin_pass['response_body']['properties']['server'][
@ -43,18 +43,19 @@ rebuild_server_with_admin_pass['response_body']['properties']['server'][
# 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 in microversion 2.54 since microversion 2.48 ***
get_server = copy.deepcopy(servers248.get_server)
list_servers_detail = copy.deepcopy(servers248.list_servers_detail)
update_server = copy.deepcopy(servers248.update_server)
list_servers = copy.deepcopy(servers248.list_servers)
show_server_diagnostics = copy.deepcopy(servers248.show_server_diagnostics)
get_remote_consoles = copy.deepcopy(servers248.get_remote_consoles)
list_tags = copy.deepcopy(servers248.list_tags)
update_all_tags = copy.deepcopy(servers248.update_all_tags)
delete_all_tags = copy.deepcopy(servers248.delete_all_tags)
check_tag_existence = copy.deepcopy(servers248.check_tag_existence)
update_tag = copy.deepcopy(servers248.update_tag)
delete_tag = copy.deepcopy(servers248.delete_tag)
attach_volume = copy.deepcopy(servers248.attach_volume)
show_volume_attachment = copy.deepcopy(servers248.show_volume_attachment)
list_volume_attachments = copy.deepcopy(servers248.list_volume_attachments)
get_server = copy.deepcopy(servers251.get_server)
list_servers_detail = copy.deepcopy(servers251.list_servers_detail)
update_server = copy.deepcopy(servers251.update_server)
list_servers = copy.deepcopy(servers251.list_servers)
show_server_diagnostics = copy.deepcopy(servers251.show_server_diagnostics)
get_remote_consoles = copy.deepcopy(servers251.get_remote_consoles)
list_tags = copy.deepcopy(servers251.list_tags)
update_all_tags = copy.deepcopy(servers251.update_all_tags)
delete_all_tags = copy.deepcopy(servers251.delete_all_tags)
check_tag_existence = copy.deepcopy(servers251.check_tag_existence)
update_tag = copy.deepcopy(servers251.update_tag)
delete_tag = copy.deepcopy(servers251.delete_tag)
attach_volume = copy.deepcopy(servers251.attach_volume)
show_volume_attachment = copy.deepcopy(servers251.show_volume_attachment)
list_volume_attachments = copy.deepcopy(servers251.list_volume_attachments)
show_instance_action = copy.deepcopy(servers251.show_instance_action)

View File

@ -62,3 +62,4 @@ delete_tag = copy.deepcopy(servers254.delete_tag)
attach_volume = copy.deepcopy(servers254.attach_volume)
show_volume_attachment = copy.deepcopy(servers254.show_volume_attachment)
list_volume_attachments = copy.deepcopy(servers254.list_volume_attachments)
show_instance_action = copy.deepcopy(servers254.show_instance_action)

View File

@ -0,0 +1,44 @@
# 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_1 import parameter_types
from tempest.lib.api_schema.response.compute.v2_57 import servers as servers257
# microversion 2.58 added updated_at to the response
show_instance_action = copy.deepcopy(servers257.show_instance_action)
show_instance_action['response_body']['properties']['instanceAction'][
'properties']['updated_at'] = parameter_types.date_time
show_instance_action['response_body']['properties']['instanceAction'][
'required'].append('updated_at')
# 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.
list_servers = copy.deepcopy(servers257.list_servers)
show_server_diagnostics = copy.deepcopy(servers257.show_server_diagnostics)
get_remote_consoles = copy.deepcopy(servers257.get_remote_consoles)
list_tags = copy.deepcopy(servers257.list_tags)
update_all_tags = copy.deepcopy(servers257.update_all_tags)
delete_all_tags = copy.deepcopy(servers257.delete_all_tags)
check_tag_existence = copy.deepcopy(servers257.check_tag_existence)
update_tag = copy.deepcopy(servers257.update_tag)
delete_tag = copy.deepcopy(servers257.delete_tag)
get_server = copy.deepcopy(servers257.get_server)
list_servers_detail = copy.deepcopy(servers257.list_servers_detail)
update_server = copy.deepcopy(servers257.update_server)
rebuild_server = copy.deepcopy(servers257.rebuild_server)
rebuild_server_with_admin_pass = copy.deepcopy(
servers257.rebuild_server_with_admin_pass)
attach_volume = copy.deepcopy(servers257.attach_volume)
show_volume_attachment = copy.deepcopy(servers257.show_volume_attachment)
list_volume_attachments = copy.deepcopy(servers257.list_volume_attachments)

View File

@ -31,6 +31,7 @@ show_server_diagnostics = copy.deepcopy(servers.show_server_diagnostics)
attach_volume = copy.deepcopy(servers.attach_volume)
show_volume_attachment = copy.deepcopy(servers.show_volume_attachment)
list_volume_attachments = copy.deepcopy(servers.list_volume_attachments)
show_instance_action = copy.deepcopy(servers.show_instance_action)
# NOTE: The consolidated remote console API got introduced with v2.6
# with bp/consolidate-console-api. See Nova commit 578bafeda

View File

@ -0,0 +1,47 @@
# 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_58 import servers as servers258
# microversion 2.62 added hostId and host to the event, but only hostId is
# mandatory
show_instance_action = copy.deepcopy(servers258.show_instance_action)
show_instance_action['response_body']['properties']['instanceAction'][
'properties']['events']['items'][
'properties']['hostId'] = {'type': 'string'}
show_instance_action['response_body']['properties']['instanceAction'][
'properties']['events']['items']['properties']['host'] = {'type': 'string'}
show_instance_action['response_body']['properties']['instanceAction'][
'properties']['events']['items']['required'].append('hostId')
# 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.
list_servers = copy.deepcopy(servers258.list_servers)
show_server_diagnostics = copy.deepcopy(servers258.show_server_diagnostics)
get_remote_consoles = copy.deepcopy(servers258.get_remote_consoles)
list_tags = copy.deepcopy(servers258.list_tags)
update_all_tags = copy.deepcopy(servers258.update_all_tags)
delete_all_tags = copy.deepcopy(servers258.delete_all_tags)
check_tag_existence = copy.deepcopy(servers258.check_tag_existence)
update_tag = copy.deepcopy(servers258.update_tag)
delete_tag = copy.deepcopy(servers258.delete_tag)
get_server = copy.deepcopy(servers258.get_server)
list_servers_detail = copy.deepcopy(servers258.list_servers_detail)
update_server = copy.deepcopy(servers258.update_server)
rebuild_server = copy.deepcopy(servers258.rebuild_server)
rebuild_server_with_admin_pass = copy.deepcopy(
servers258.rebuild_server_with_admin_pass)
attach_volume = copy.deepcopy(servers258.attach_volume)
show_volume_attachment = copy.deepcopy(servers258.show_volume_attachment)
list_volume_attachments = copy.deepcopy(servers258.list_volume_attachments)

View File

@ -12,7 +12,7 @@
import copy
from tempest.lib.api_schema.response.compute.v2_57 import servers as servers257
from tempest.lib.api_schema.response.compute.v2_62 import servers as servers262
# Nova microversion 2.63 adds 'trusted_image_certificates' (a list of
# certificate IDs) to the server rebuild and servers details responses.
@ -29,32 +29,32 @@ trusted_certs = {
}
}
list_servers_detail = copy.deepcopy(servers257.list_servers_detail)
list_servers_detail = copy.deepcopy(servers262.list_servers_detail)
list_servers_detail['response_body']['properties']['servers']['items'][
'properties'].update({'trusted_image_certificates': trusted_certs})
list_servers_detail['response_body']['properties']['servers']['items'][
'required'].append('trusted_image_certificates')
rebuild_server = copy.deepcopy(servers257.rebuild_server)
rebuild_server = copy.deepcopy(servers262.rebuild_server)
rebuild_server['response_body']['properties']['server'][
'properties'].update({'trusted_image_certificates': trusted_certs})
rebuild_server['response_body']['properties']['server'][
'required'].append('trusted_image_certificates')
rebuild_server_with_admin_pass = copy.deepcopy(
servers257.rebuild_server_with_admin_pass)
servers262.rebuild_server_with_admin_pass)
rebuild_server_with_admin_pass['response_body']['properties']['server'][
'properties'].update({'trusted_image_certificates': trusted_certs})
rebuild_server_with_admin_pass['response_body']['properties']['server'][
'required'].append('trusted_image_certificates')
update_server = copy.deepcopy(servers257.update_server)
update_server = copy.deepcopy(servers262.update_server)
update_server['response_body']['properties']['server'][
'properties'].update({'trusted_image_certificates': trusted_certs})
update_server['response_body']['properties']['server'][
'required'].append('trusted_image_certificates')
get_server = copy.deepcopy(servers257.get_server)
get_server = copy.deepcopy(servers262.get_server)
get_server['response_body']['properties']['server'][
'properties'].update({'trusted_image_certificates': trusted_certs})
get_server['response_body']['properties']['server'][
@ -64,15 +64,16 @@ get_server['response_body']['properties']['server'][
# 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.57 ***
list_servers = copy.deepcopy(servers257.list_servers)
show_server_diagnostics = copy.deepcopy(servers257.show_server_diagnostics)
get_remote_consoles = copy.deepcopy(servers257.get_remote_consoles)
list_tags = copy.deepcopy(servers257.list_tags)
update_all_tags = copy.deepcopy(servers257.update_all_tags)
delete_all_tags = copy.deepcopy(servers257.delete_all_tags)
check_tag_existence = copy.deepcopy(servers257.check_tag_existence)
update_tag = copy.deepcopy(servers257.update_tag)
delete_tag = copy.deepcopy(servers257.delete_tag)
attach_volume = copy.deepcopy(servers257.attach_volume)
show_volume_attachment = copy.deepcopy(servers257.show_volume_attachment)
list_volume_attachments = copy.deepcopy(servers257.list_volume_attachments)
list_servers = copy.deepcopy(servers262.list_servers)
show_server_diagnostics = copy.deepcopy(servers262.show_server_diagnostics)
get_remote_consoles = copy.deepcopy(servers262.get_remote_consoles)
list_tags = copy.deepcopy(servers262.list_tags)
update_all_tags = copy.deepcopy(servers262.update_all_tags)
delete_all_tags = copy.deepcopy(servers262.delete_all_tags)
check_tag_existence = copy.deepcopy(servers262.check_tag_existence)
update_tag = copy.deepcopy(servers262.update_tag)
delete_tag = copy.deepcopy(servers262.delete_tag)
attach_volume = copy.deepcopy(servers262.attach_volume)
show_volume_attachment = copy.deepcopy(servers262.show_volume_attachment)
list_volume_attachments = copy.deepcopy(servers262.list_volume_attachments)
show_instance_action = copy.deepcopy(servers262.show_instance_action)

View File

@ -78,3 +78,4 @@ delete_all_tags = copy.deepcopy(servers263.delete_all_tags)
check_tag_existence = copy.deepcopy(servers263.check_tag_existence)
update_tag = copy.deepcopy(servers263.update_tag)
delete_tag = copy.deepcopy(servers263.delete_tag)
show_instance_action = copy.deepcopy(servers263.show_instance_action)

View File

@ -82,3 +82,4 @@ delete_tag = copy.deepcopy(servers270.delete_tag)
attach_volume = copy.deepcopy(servers270.attach_volume)
show_volume_attachment = copy.deepcopy(servers270.show_volume_attachment)
list_volume_attachments = copy.deepcopy(servers270.list_volume_attachments)
show_instance_action = copy.deepcopy(servers270.show_instance_action)

View File

@ -79,3 +79,4 @@ delete_tag = copy.deepcopy(servers271.delete_tag)
attach_volume = copy.deepcopy(servers271.attach_volume)
show_volume_attachment = copy.deepcopy(servers271.show_volume_attachment)
list_volume_attachments = copy.deepcopy(servers271.list_volume_attachments)
show_instance_action = copy.deepcopy(servers271.show_instance_action)

View File

@ -65,3 +65,4 @@ delete_all_tags = copy.deepcopy(servers273.delete_all_tags)
check_tag_existence = copy.deepcopy(servers273.check_tag_existence)
update_tag = copy.deepcopy(servers273.update_tag)
delete_tag = copy.deepcopy(servers273.delete_tag)
show_instance_action = copy.deepcopy(servers273.show_instance_action)

View File

@ -38,3 +38,4 @@ show_server_diagnostics = copy.deepcopy(servers.show_server_diagnostics)
attach_volume = copy.deepcopy(servers.attach_volume)
show_volume_attachment = copy.deepcopy(servers.show_volume_attachment)
list_volume_attachments = copy.deepcopy(servers.list_volume_attachments)
show_instance_action = copy.deepcopy(servers.show_instance_action)

View File

@ -57,3 +57,4 @@ get_remote_consoles = copy.deepcopy(servers.get_remote_consoles)
attach_volume = copy.deepcopy(servers.attach_volume)
show_volume_attachment = copy.deepcopy(servers.show_volume_attachment)
list_volume_attachments = copy.deepcopy(servers.list_volume_attachments)
show_instance_action = copy.deepcopy(servers.show_instance_action)

View File

@ -29,9 +29,12 @@ from tempest.lib.api_schema.response.compute.v2_26 import servers as schemav226
from tempest.lib.api_schema.response.compute.v2_3 import servers as schemav23
from tempest.lib.api_schema.response.compute.v2_47 import servers as schemav247
from tempest.lib.api_schema.response.compute.v2_48 import servers as schemav248
from tempest.lib.api_schema.response.compute.v2_51 import servers as schemav251
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_58 import servers as schemav258
from tempest.lib.api_schema.response.compute.v2_6 import servers as schemav26
from tempest.lib.api_schema.response.compute.v2_62 import servers as schemav262
from tempest.lib.api_schema.response.compute.v2_63 import servers as schemav263
from tempest.lib.api_schema.response.compute.v2_70 import servers as schemav270
from tempest.lib.api_schema.response.compute.v2_71 import servers as schemav271
@ -56,9 +59,12 @@ class ServersClient(base_compute_client.BaseComputeClient):
{'min': '2.19', 'max': '2.25', 'schema': schemav219},
{'min': '2.26', 'max': '2.46', 'schema': schemav226},
{'min': '2.47', 'max': '2.47', 'schema': schemav247},
{'min': '2.48', 'max': '2.53', 'schema': schemav248},
{'min': '2.48', 'max': '2.50', 'schema': schemav248},
{'min': '2.51', 'max': '2.53', 'schema': schemav251},
{'min': '2.54', 'max': '2.56', 'schema': schemav254},
{'min': '2.57', 'max': '2.62', 'schema': schemav257},
{'min': '2.57', 'max': '2.57', 'schema': schemav257},
{'min': '2.58', 'max': '2.61', 'schema': schemav258},
{'min': '2.62', 'max': '2.62', 'schema': schemav262},
{'min': '2.63', 'max': '2.69', 'schema': schemav263},
{'min': '2.70', 'max': '2.70', 'schema': schemav270},
{'min': '2.71', 'max': '2.72', 'schema': schemav271},
@ -715,6 +721,7 @@ class ServersClient(base_compute_client.BaseComputeClient):
resp, body = self.get("servers/%s/os-instance-actions/%s" %
(server_id, request_id))
body = json.loads(body)
schema = self.get_schema(self.schema_versions_info)
self.validate_response(schema.show_instance_action, resp, body)
return rest_client.ResponseBody(resp, body)