From a8ace7228744ff3b22fe84bfe63352361cf98219 Mon Sep 17 00:00:00 2001 From: ghanshyam Date: Fri, 20 Apr 2018 08:45:10 +0000 Subject: [PATCH] Fill update, rebuild, list API response schema for 2.47 Microversion 2.47 has changed the response of update list, and rebuild API also but we did not updated corresponding response schema. Also this commits add single test which covers the schema change of microversions 2.9, 2.19, 2.26 and 2.47. -https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id42 Change-Id: I64cc37c78bcded9d4dd85b7003319a17f3ac2137 --- doc/source/microversion_testing.rst | 12 +++++++++++ tempest/api/compute/servers/test_servers.py | 20 +++++++++++++++++++ .../response/compute/v2_47/servers.py | 16 +++++++++++++++ .../lib/services/compute/servers_client.py | 4 ++-- 4 files changed, 50 insertions(+), 2 deletions(-) diff --git a/doc/source/microversion_testing.rst b/doc/source/microversion_testing.rst index 942f9691d1..c22888dfe1 100644 --- a/doc/source/microversion_testing.rst +++ b/doc/source/microversion_testing.rst @@ -306,10 +306,18 @@ Microversion tests implemented in Tempest .. _2.6: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id5 + * `2.9`_ + + .. _2.9: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id8 + * `2.10`_ .. _2.10: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id9 + * `2.19`_ + + .. _2.19: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id17 + * `2.20`_ .. _2.20: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id18 @@ -322,6 +330,10 @@ Microversion tests implemented in Tempest .. _2.25: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#maximum-in-mitaka + * `2.26`_ + + .. _2.26: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id23 + * `2.32`_ .. _2.32: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id29 diff --git a/tempest/api/compute/servers/test_servers.py b/tempest/api/compute/servers/test_servers.py index 2904976236..543fa1ccbc 100644 --- a/tempest/api/compute/servers/test_servers.py +++ b/tempest/api/compute/servers/test_servers.py @@ -184,8 +184,28 @@ class ServerShowV247Test(base.BaseV2ComputeTest): min_microversion = '2.47' max_microversion = 'latest' + # NOTE(gmann): This test tests the server APIs response schema + # Along with 2.47 microversion schema this test class tests the + # other microversions 2.9, 2.19 and 2.26 server APIs response schema + # also. 2.47 APIs schema are on top of 2.9->2.19->2.26 schema so + # below tests cover all of the schema. + @decorators.idempotent_id('88b0bdb2-494c-11e7-a919-92ebcb67fe33') def test_show_server(self): server = self.create_test_server() # All fields will be checked by API schema self.servers_client.show_server(server['id']) + + @decorators.idempotent_id('8de397c2-57d0-4b90-aa30-e5d668f21a8b') + def test_update_rebuild_list_server(self): + server = self.create_test_server() + # Checking update API response schema + self.servers_client.update_server(server['id']) + waiters.wait_for_server_status(self.servers_client, server['id'], + 'ACTIVE') + # Checking rebuild API response schema + self.servers_client.rebuild_server(server['id'], self.image_ref_alt) + waiters.wait_for_server_status(self.servers_client, + server['id'], 'ACTIVE') + # Checking list details API response schema + self.servers_client.list_servers(detail=True) diff --git a/tempest/lib/api_schema/response/compute/v2_47/servers.py b/tempest/lib/api_schema/response/compute/v2_47/servers.py index 37a084f1cd..935be7050f 100644 --- a/tempest/lib/api_schema/response/compute/v2_47/servers.py +++ b/tempest/lib/api_schema/response/compute/v2_47/servers.py @@ -37,3 +37,19 @@ flavor = { get_server = copy.deepcopy(servers226.get_server) get_server['response_body']['properties']['server'][ 'properties'].update({'flavor': flavor}) +list_servers_detail = copy.deepcopy(servers226.list_servers_detail) +list_servers_detail['response_body']['properties']['servers']['items'][ + 'properties'].update({'flavor': flavor}) + +update_server = copy.deepcopy(servers226.update_server) +update_server['response_body']['properties']['server'][ + 'properties'].update({'flavor': flavor}) + +rebuild_server = copy.deepcopy(servers226.rebuild_server) +rebuild_server['response_body']['properties']['server'][ + 'properties'].update({'flavor': flavor}) + +rebuild_server_with_admin_pass = copy.deepcopy( + servers226.rebuild_server_with_admin_pass) +rebuild_server_with_admin_pass['response_body']['properties']['server'][ + 'properties'].update({'flavor': flavor}) diff --git a/tempest/lib/services/compute/servers_client.py b/tempest/lib/services/compute/servers_client.py index 09bccab098..c85af1f9a1 100644 --- a/tempest/lib/services/compute/servers_client.py +++ b/tempest/lib/services/compute/servers_client.py @@ -156,11 +156,11 @@ class ServersClient(base_compute_client.BaseComputeClient): url = 'servers' schema = self.get_schema(self.schema_versions_info) - _schema = schema.list_servers - if detail: url += '/detail' _schema = schema.list_servers_detail + else: + _schema = schema.list_servers if params: url += '?%s' % urllib.urlencode(params)