Add response schemas for show_instance_action 2.84

In microversion 2.84, the 'details' field was added to the GET
/servers/{server_id}/os-instance-actions/{request_id} API response.

Schemas had not been updated for this in the past, causing tests
calling the API with newer microversions to fail response schema
validation.

This adds the missing schemas.

Change-Id: I3d2b633dea44b6a29f9396366b2e6a5543027ab6
Signed-off-by: melanie witt <melwittt@gmail.com>
diff --git a/tempest/lib/api_schema/response/compute/v2_80/servers.py b/tempest/lib/api_schema/response/compute/v2_80/servers.py
index ad58594..74463dd 100644
--- a/tempest/lib/api_schema/response/compute/v2_80/servers.py
+++ b/tempest/lib/api_schema/response/compute/v2_80/servers.py
@@ -59,3 +59,4 @@
 attach_volume = copy.deepcopy(servers279.attach_volume)
 show_volume_attachment = copy.deepcopy(servers279.show_volume_attachment)
 list_volume_attachments = copy.deepcopy(servers279.list_volume_attachments)
+list_live_migrations = copy.deepcopy(servers279.list_live_migrations)
diff --git a/tempest/lib/api_schema/response/compute/v2_84/servers.py b/tempest/lib/api_schema/response/compute/v2_84/servers.py
new file mode 100644
index 0000000..360fb9a
--- /dev/null
+++ b/tempest/lib/api_schema/response/compute/v2_84/servers.py
@@ -0,0 +1,45 @@
+#    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_80 import servers as servers280
+
+# microversion 2.84 added details to events in the response
+show_instance_action = copy.deepcopy(servers280.show_instance_action)
+show_instance_action['response_body']['properties']['instanceAction'][
+    'properties']['events']['items']['properties'][
+    'details'] = {'type': ['string', 'null']}
+
+# 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.
+rebuild_server = copy.deepcopy(servers280.rebuild_server)
+rebuild_server_with_admin_pass = copy.deepcopy(
+    servers280.rebuild_server_with_admin_pass)
+update_server = copy.deepcopy(servers280.update_server)
+get_server = copy.deepcopy(servers280.get_server)
+list_servers_detail = copy.deepcopy(servers280.list_servers_detail)
+list_servers = copy.deepcopy(servers280.list_servers)
+show_server_diagnostics = copy.deepcopy(servers280.show_server_diagnostics)
+get_remote_consoles = copy.deepcopy(servers280.get_remote_consoles)
+list_tags = copy.deepcopy(servers280.list_tags)
+update_all_tags = copy.deepcopy(servers280.update_all_tags)
+delete_all_tags = copy.deepcopy(servers280.delete_all_tags)
+check_tag_existence = copy.deepcopy(servers280.check_tag_existence)
+update_tag = copy.deepcopy(servers280.update_tag)
+delete_tag = copy.deepcopy(servers280.delete_tag)
+list_instance_actions = copy.deepcopy(servers280.list_instance_actions)
+create_backup = copy.deepcopy(servers280.create_backup)
+attach_volume = copy.deepcopy(servers280.attach_volume)
+show_volume_attachment = copy.deepcopy(servers280.show_volume_attachment)
+list_volume_attachments = copy.deepcopy(servers280.list_volume_attachments)
+list_live_migrations = copy.deepcopy(servers280.list_live_migrations)
diff --git a/tempest/lib/api_schema/response/compute/v2_89/servers.py b/tempest/lib/api_schema/response/compute/v2_89/servers.py
index 389fc08..4351e03 100644
--- a/tempest/lib/api_schema/response/compute/v2_89/servers.py
+++ b/tempest/lib/api_schema/response/compute/v2_89/servers.py
@@ -12,7 +12,7 @@
 
 import copy
 
-from tempest.lib.api_schema.response.compute.v2_80 import servers as servers280
+from tempest.lib.api_schema.response.compute.v2_84 import servers as servers284
 
 
 ###########################################################################
@@ -27,11 +27,11 @@
 # - POST /servers/{server_id}/os-volume_attachments
 ###########################################################################
 
-attach_volume = copy.deepcopy(servers280.attach_volume)
+attach_volume = copy.deepcopy(servers284.attach_volume)
 
-show_volume_attachment = copy.deepcopy(servers280.show_volume_attachment)
+show_volume_attachment = copy.deepcopy(servers284.show_volume_attachment)
 
-list_volume_attachments = copy.deepcopy(servers280.list_volume_attachments)
+list_volume_attachments = copy.deepcopy(servers284.list_volume_attachments)
 
 # Remove properties
 # 'id' is available unti v2.88
@@ -65,22 +65,22 @@
 # 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.80 ***
-rebuild_server = copy.deepcopy(servers280.rebuild_server)
+rebuild_server = copy.deepcopy(servers284.rebuild_server)
 rebuild_server_with_admin_pass = copy.deepcopy(
-    servers280.rebuild_server_with_admin_pass)
-update_server = copy.deepcopy(servers280.update_server)
-get_server = copy.deepcopy(servers280.get_server)
-list_servers_detail = copy.deepcopy(servers280.list_servers_detail)
-list_servers = copy.deepcopy(servers280.list_servers)
-show_server_diagnostics = copy.deepcopy(servers280.show_server_diagnostics)
-get_remote_consoles = copy.deepcopy(servers280.get_remote_consoles)
-list_tags = copy.deepcopy(servers280.list_tags)
-update_all_tags = copy.deepcopy(servers280.update_all_tags)
-delete_all_tags = copy.deepcopy(servers280.delete_all_tags)
-check_tag_existence = copy.deepcopy(servers280.check_tag_existence)
-update_tag = copy.deepcopy(servers280.update_tag)
-delete_tag = copy.deepcopy(servers280.delete_tag)
-show_instance_action = copy.deepcopy(servers280.show_instance_action)
-list_instance_actions = copy.deepcopy(servers280.list_instance_actions)
-create_backup = copy.deepcopy(servers280.create_backup)
-list_live_migrations = copy.deepcopy(servers280.list_live_migrations)
+    servers284.rebuild_server_with_admin_pass)
+update_server = copy.deepcopy(servers284.update_server)
+get_server = copy.deepcopy(servers284.get_server)
+list_servers_detail = copy.deepcopy(servers284.list_servers_detail)
+list_servers = copy.deepcopy(servers284.list_servers)
+show_server_diagnostics = copy.deepcopy(servers284.show_server_diagnostics)
+get_remote_consoles = copy.deepcopy(servers284.get_remote_consoles)
+list_tags = copy.deepcopy(servers284.list_tags)
+update_all_tags = copy.deepcopy(servers284.update_all_tags)
+delete_all_tags = copy.deepcopy(servers284.delete_all_tags)
+check_tag_existence = copy.deepcopy(servers284.check_tag_existence)
+update_tag = copy.deepcopy(servers284.update_tag)
+delete_tag = copy.deepcopy(servers284.delete_tag)
+show_instance_action = copy.deepcopy(servers284.show_instance_action)
+list_instance_actions = copy.deepcopy(servers284.list_instance_actions)
+create_backup = copy.deepcopy(servers284.create_backup)
+list_live_migrations = copy.deepcopy(servers284.list_live_migrations)
diff --git a/tempest/lib/services/compute/servers_client.py b/tempest/lib/services/compute/servers_client.py
index 56a8721..5822754 100644
--- a/tempest/lib/services/compute/servers_client.py
+++ b/tempest/lib/services/compute/servers_client.py
@@ -44,6 +44,7 @@
 from tempest.lib.api_schema.response.compute.v2_79 import servers as schemav279
 from tempest.lib.api_schema.response.compute.v2_8 import servers as schemav28
 from tempest.lib.api_schema.response.compute.v2_80 import servers as schemav280
+from tempest.lib.api_schema.response.compute.v2_84 import servers as schemav284
 from tempest.lib.api_schema.response.compute.v2_89 import servers as schemav289
 from tempest.lib.api_schema.response.compute.v2_9 import servers as schemav29
 from tempest.lib.api_schema.response.compute.v2_96 import servers as schemav296
@@ -81,7 +82,8 @@
         {'min': '2.73', 'max': '2.74', 'schema': schemav273},
         {'min': '2.75', 'max': '2.78', 'schema': schemav275},
         {'min': '2.79', 'max': '2.79', 'schema': schemav279},
-        {'min': '2.80', 'max': '2.88', 'schema': schemav280},
+        {'min': '2.80', 'max': '2.83', 'schema': schemav280},
+        {'min': '2.84', 'max': '2.88', 'schema': schemav284},
         {'min': '2.89', 'max': '2.95', 'schema': schemav289},
         {'min': '2.96', 'max': '2.97', 'schema': schemav296},
         {'min': '2.98', 'max': '2.98', 'schema': schemav298},