summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeorg Kunz <georg.kunz@ericsson.com>2018-06-06 15:16:06 +0200
committerGeorg Kunz <georg.kunz@ericsson.com>2018-06-07 14:49:40 +0000
commitb5b26bfa187c4db16ed4089119371fb164da12cb (patch)
tree1acb8e668897737941d0db2b5b3b5ae879e278fd
parent772983d58e28848f3945eccd278adf8cbb01a262 (diff)
Updating the API response validation patch
Functest has switched from Tempest 14 in Danube to 17.1.0 in Fraser. This updates the patch used to disable strict API response validation. Change-Id: Ief47eba3bc91c222d5ad30e65ab1fdaf39fc169e Signed-off-by: Georg Kunz <georg.kunz@ericsson.com>
-rw-r--r--etc/patches/functest/disable-api-validation/0001-Allow-additional-properties-in-API-responses.patch423
1 files changed, 279 insertions, 144 deletions
diff --git a/etc/patches/functest/disable-api-validation/0001-Allow-additional-properties-in-API-responses.patch b/etc/patches/functest/disable-api-validation/0001-Allow-additional-properties-in-API-responses.patch
index b7a040c4..7e81f49b 100644
--- a/etc/patches/functest/disable-api-validation/0001-Allow-additional-properties-in-API-responses.patch
+++ b/etc/patches/functest/disable-api-validation/0001-Allow-additional-properties-in-API-responses.patch
@@ -1,45 +1,50 @@
-From 9e15ea5e8b15d42eb202363e9a83ae9bb09ccb64 Mon Sep 17 00:00:00 2001
+From 90e0e23ce73a4459d981acca588f3873eb29c770 Mon Sep 17 00:00:00 2001
From: Georg Kunz <georg.kunz@ericsson.com>
-Date: Wed, 31 Jan 2018 21:10:35 +0100
-Subject: [PATCH 1/1] Allow additional properties in API responses
+Date: Wed, 6 Jun 2018 15:07:43 +0200
+Subject: [PATCH] Allow additional properties in API responses
---
- .../lib/api_schema/response/compute/v2_1/agents.py | 10 ++--
- .../api_schema/response/compute/v2_1/aggregates.py | 8 +--
- .../response/compute/v2_1/availability_zone.py | 8 +--
- .../response/compute/v2_1/baremetal_nodes.py | 6 +-
- .../response/compute/v2_1/certificates.py | 4 +-
- .../api_schema/response/compute/v2_1/extensions.py | 4 +-
- .../api_schema/response/compute/v2_1/fixed_ips.py | 4 +-
- .../api_schema/response/compute/v2_1/flavors.py | 10 ++--
- .../response/compute/v2_1/flavors_access.py | 4 +-
- .../response/compute/v2_1/flavors_extra_specs.py | 2 +-
- .../response/compute/v2_1/floating_ips.py | 20 +++----
- .../lib/api_schema/response/compute/v2_1/hosts.py | 14 ++---
- .../response/compute/v2_1/hypervisors.py | 22 ++++----
- .../lib/api_schema/response/compute/v2_1/images.py | 16 +++---
- .../compute/v2_1/instance_usage_audit_logs.py | 8 +--
- .../api_schema/response/compute/v2_1/interfaces.py | 8 +--
- .../api_schema/response/compute/v2_1/keypairs.py | 14 ++---
- .../lib/api_schema/response/compute/v2_1/limits.py | 10 ++--
- .../api_schema/response/compute/v2_1/migrations.py | 4 +-
- .../response/compute/v2_1/parameter_types.py | 4 +-
- .../lib/api_schema/response/compute/v2_1/quotas.py | 4 +-
- .../compute/v2_1/security_group_default_rule.py | 8 +--
- .../response/compute/v2_1/security_groups.py | 16 +++---
- .../api_schema/response/compute/v2_1/servers.py | 64 +++++++++++-----------
- .../api_schema/response/compute/v2_1/services.py | 8 +--
- .../api_schema/response/compute/v2_1/snapshots.py | 6 +-
- .../response/compute/v2_1/tenant_networks.py | 6 +-
- .../api_schema/response/compute/v2_1/versions.py | 10 ++--
- .../api_schema/response/compute/v2_1/volumes.py | 12 ++--
- .../api_schema/response/compute/v2_16/servers.py | 14 ++---
- .../response/compute/v2_23/migrations.py | 4 +-
- .../api_schema/response/compute/v2_3/servers.py | 14 ++---
- 32 files changed, 173 insertions(+), 173 deletions(-)
+ .../response/compute/v2_1/agents.py | 10 +--
+ .../response/compute/v2_1/aggregates.py | 8 +--
+ .../compute/v2_1/availability_zone.py | 8 +--
+ .../response/compute/v2_1/baremetal_nodes.py | 6 +-
+ .../response/compute/v2_1/certificates.py | 4 +-
+ .../response/compute/v2_1/extensions.py | 4 +-
+ .../response/compute/v2_1/fixed_ips.py | 4 +-
+ .../response/compute/v2_1/flavors.py | 10 +--
+ .../response/compute/v2_1/flavors_access.py | 4 +-
+ .../compute/v2_1/flavors_extra_specs.py | 2 +-
+ .../response/compute/v2_1/floating_ips.py | 20 +++---
+ .../api_schema/response/compute/v2_1/hosts.py | 14 ++--
+ .../response/compute/v2_1/hypervisors.py | 22 +++----
+ .../response/compute/v2_1/images.py | 16 ++---
+ .../compute/v2_1/instance_usage_audit_logs.py | 8 +--
+ .../response/compute/v2_1/interfaces.py | 8 +--
+ .../response/compute/v2_1/keypairs.py | 14 ++--
+ .../response/compute/v2_1/limits.py | 10 +--
+ .../response/compute/v2_1/migrations.py | 4 +-
+ .../response/compute/v2_1/parameter_types.py | 4 +-
+ .../response/compute/v2_1/quotas.py | 4 +-
+ .../v2_1/security_group_default_rule.py | 8 +--
+ .../response/compute/v2_1/security_groups.py | 16 ++---
+ .../response/compute/v2_1/servers.py | 66 +++++++++----------
+ .../response/compute/v2_1/services.py | 12 ++--
+ .../response/compute/v2_1/snapshots.py | 6 +-
+ .../response/compute/v2_1/tenant_networks.py | 6 +-
+ .../response/compute/v2_1/versions.py | 10 +--
+ .../response/compute/v2_1/volumes.py | 12 ++--
+ .../response/compute/v2_11/services.py | 4 +-
+ .../response/compute/v2_16/servers.py | 14 ++--
+ .../response/compute/v2_23/migrations.py | 4 +-
+ .../response/compute/v2_26/servers.py | 2 +-
+ .../response/compute/v2_3/servers.py | 14 ++--
+ .../response/compute/v2_47/servers.py | 2 +-
+ .../response/compute/v2_48/servers.py | 10 +--
+ .../response/compute/v2_6/servers.py | 4 +-
+ 37 files changed, 187 insertions(+), 187 deletions(-)
diff --git a/tempest/lib/api_schema/response/compute/v2_1/agents.py b/tempest/lib/api_schema/response/compute/v2_1/agents.py
-index 6f712b4..09feb73 100644
+index 6f712b41e..09feb73df 100644
--- a/tempest/lib/api_schema/response/compute/v2_1/agents.py
+++ b/tempest/lib/api_schema/response/compute/v2_1/agents.py
@@ -23,7 +23,7 @@ common_agent_info = {
@@ -84,19 +89,19 @@ index 6f712b4..09feb73 100644
}
}
diff --git a/tempest/lib/api_schema/response/compute/v2_1/aggregates.py b/tempest/lib/api_schema/response/compute/v2_1/aggregates.py
-index 1a9fe41..4a86670 100644
+index 3289a34a7..021959b10 100644
--- a/tempest/lib/api_schema/response/compute/v2_1/aggregates.py
+++ b/tempest/lib/api_schema/response/compute/v2_1/aggregates.py
-@@ -26,7 +26,7 @@ aggregate_for_create = {
+@@ -28,7 +28,7 @@ aggregate_for_create = {
'name': {'type': 'string'},
- 'updated_at': {'type': ['string', 'null']}
+ 'updated_at': parameter_types.date_time_or_null
},
- 'additionalProperties': False,
+ 'additionalProperties': True,
'required': ['availability_zone', 'created_at', 'deleted',
'deleted_at', 'id', 'name', 'updated_at'],
}
-@@ -48,7 +48,7 @@ list_aggregates = {
+@@ -50,7 +50,7 @@ list_aggregates = {
'items': common_aggregate_info
}
},
@@ -105,7 +110,7 @@ index 1a9fe41..4a86670 100644
'required': ['aggregates'],
}
}
-@@ -60,7 +60,7 @@ get_aggregate = {
+@@ -62,7 +62,7 @@ get_aggregate = {
'properties': {
'aggregate': common_aggregate_info
},
@@ -124,10 +129,10 @@ index 1a9fe41..4a86670 100644
}
}
diff --git a/tempest/lib/api_schema/response/compute/v2_1/availability_zone.py b/tempest/lib/api_schema/response/compute/v2_1/availability_zone.py
-index d9aebce..7b5e03c 100644
+index 0dc28c378..ded47d7c0 100644
--- a/tempest/lib/api_schema/response/compute/v2_1/availability_zone.py
+++ b/tempest/lib/api_schema/response/compute/v2_1/availability_zone.py
-@@ -31,19 +31,19 @@ base = {
+@@ -33,19 +33,19 @@ base = {
'properties': {
'available': {'type': 'boolean'}
},
@@ -150,9 +155,9 @@ index d9aebce..7b5e03c 100644
'required': ['availabilityZoneInfo']
}
}
-@@ -63,7 +63,7 @@ detail = {
+@@ -65,7 +65,7 @@ detail = {
'active': {'type': 'boolean'},
- 'updated_at': {'type': ['string', 'null']}
+ 'updated_at': parameter_types.date_time_or_null
},
- 'additionalProperties': False,
+ 'additionalProperties': True,
@@ -160,7 +165,7 @@ index d9aebce..7b5e03c 100644
}
}
diff --git a/tempest/lib/api_schema/response/compute/v2_1/baremetal_nodes.py b/tempest/lib/api_schema/response/compute/v2_1/baremetal_nodes.py
-index d1ee877..8ab17d3 100644
+index d1ee87728..8ab17d3fb 100644
--- a/tempest/lib/api_schema/response/compute/v2_1/baremetal_nodes.py
+++ b/tempest/lib/api_schema/response/compute/v2_1/baremetal_nodes.py
@@ -25,7 +25,7 @@ node = {
@@ -191,7 +196,7 @@ index d1ee877..8ab17d3 100644
}
}
diff --git a/tempest/lib/api_schema/response/compute/v2_1/certificates.py b/tempest/lib/api_schema/response/compute/v2_1/certificates.py
-index 4e7cbe4..99f795a 100644
+index 4e7cbe4d2..99f795a3b 100644
--- a/tempest/lib/api_schema/response/compute/v2_1/certificates.py
+++ b/tempest/lib/api_schema/response/compute/v2_1/certificates.py
@@ -25,11 +25,11 @@ _common_schema = {
@@ -209,10 +214,10 @@ index 4e7cbe4..99f795a 100644
}
}
diff --git a/tempest/lib/api_schema/response/compute/v2_1/extensions.py b/tempest/lib/api_schema/response/compute/v2_1/extensions.py
-index a6a455c..9f7395a 100644
+index b5962d752..833bc9df0 100644
--- a/tempest/lib/api_schema/response/compute/v2_1/extensions.py
+++ b/tempest/lib/api_schema/response/compute/v2_1/extensions.py
-@@ -35,13 +35,13 @@ list_extensions = {
+@@ -34,13 +34,13 @@ list_extensions = {
'alias': {'type': 'string'},
'description': {'type': 'string'}
},
@@ -229,7 +234,7 @@ index a6a455c..9f7395a 100644
}
}
diff --git a/tempest/lib/api_schema/response/compute/v2_1/fixed_ips.py b/tempest/lib/api_schema/response/compute/v2_1/fixed_ips.py
-index a653213..b53565a 100644
+index a653213f0..b53565aab 100644
--- a/tempest/lib/api_schema/response/compute/v2_1/fixed_ips.py
+++ b/tempest/lib/api_schema/response/compute/v2_1/fixed_ips.py
@@ -27,11 +27,11 @@ get_fixed_ip = {
@@ -247,7 +252,7 @@ index a653213..b53565a 100644
}
}
diff --git a/tempest/lib/api_schema/response/compute/v2_1/flavors.py b/tempest/lib/api_schema/response/compute/v2_1/flavors.py
-index 547d94d..76cbb8a 100644
+index 547d94d57..76cbb8a55 100644
--- a/tempest/lib/api_schema/response/compute/v2_1/flavors.py
+++ b/tempest/lib/api_schema/response/compute/v2_1/flavors.py
@@ -28,13 +28,13 @@ list_flavors = {
@@ -294,7 +299,7 @@ index 547d94d..76cbb8a 100644
}
}
diff --git a/tempest/lib/api_schema/response/compute/v2_1/flavors_access.py b/tempest/lib/api_schema/response/compute/v2_1/flavors_access.py
-index a4d6af0..958ed02 100644
+index a4d6af0d7..958ed02b5 100644
--- a/tempest/lib/api_schema/response/compute/v2_1/flavors_access.py
+++ b/tempest/lib/api_schema/response/compute/v2_1/flavors_access.py
@@ -25,12 +25,12 @@ add_remove_list_flavor_access = {
@@ -313,7 +318,7 @@ index a4d6af0..958ed02 100644
}
}
diff --git a/tempest/lib/api_schema/response/compute/v2_1/flavors_extra_specs.py b/tempest/lib/api_schema/response/compute/v2_1/flavors_extra_specs.py
-index a438d48..c8988b1 100644
+index a438d4869..c8988b1de 100644
--- a/tempest/lib/api_schema/response/compute/v2_1/flavors_extra_specs.py
+++ b/tempest/lib/api_schema/response/compute/v2_1/flavors_extra_specs.py
@@ -24,7 +24,7 @@ set_get_flavor_extra_specs = {
@@ -326,7 +331,7 @@ index a438d48..c8988b1 100644
}
}
diff --git a/tempest/lib/api_schema/response/compute/v2_1/floating_ips.py b/tempest/lib/api_schema/response/compute/v2_1/floating_ips.py
-index 0c66590..39e4207 100644
+index 0c665905f..39e4207ca 100644
--- a/tempest/lib/api_schema/response/compute/v2_1/floating_ips.py
+++ b/tempest/lib/api_schema/response/compute/v2_1/floating_ips.py
@@ -26,7 +26,7 @@ common_floating_ip_info = {
@@ -413,7 +418,7 @@ index 0c66590..39e4207 100644
}
}
diff --git a/tempest/lib/api_schema/response/compute/v2_1/hosts.py b/tempest/lib/api_schema/response/compute/v2_1/hosts.py
-index ae70ff1..d750cd0 100644
+index cae343597..76bf47ed1 100644
--- a/tempest/lib/api_schema/response/compute/v2_1/hosts.py
+++ b/tempest/lib/api_schema/response/compute/v2_1/hosts.py
@@ -29,12 +29,12 @@ list_hosts = {
@@ -467,11 +472,11 @@ index ae70ff1..d750cd0 100644
},
- 'additionalProperties': False,
+ 'additionalProperties': True,
- 'required': ['host', 'maintenance_mode', 'status']
- }
- }
+ 'anyOf': [
+ {'required': ['host', 'status']},
+ {'required': ['host', 'maintenance_mode']}
diff --git a/tempest/lib/api_schema/response/compute/v2_1/hypervisors.py b/tempest/lib/api_schema/response/compute/v2_1/hypervisors.py
-index d15b4f6..5d8cf6d 100644
+index d15b4f66a..5d8cf6d39 100644
--- a/tempest/lib/api_schema/response/compute/v2_1/hypervisors.py
+++ b/tempest/lib/api_schema/response/compute/v2_1/hypervisors.py
@@ -37,7 +37,7 @@ get_hypervisor_statistics = {
@@ -571,7 +576,7 @@ index d15b4f6..5d8cf6d 100644
}
# In V2 API, if there is no servers (VM) on the Hypervisor host then 'servers'
diff --git a/tempest/lib/api_schema/response/compute/v2_1/images.py b/tempest/lib/api_schema/response/compute/v2_1/images.py
-index f65b9d8..25d3167 100644
+index 156ff4ac6..2acc12835 100644
--- a/tempest/lib/api_schema/response/compute/v2_1/images.py
+++ b/tempest/lib/api_schema/response/compute/v2_1/images.py
@@ -40,13 +40,13 @@ common_image_schema = {
@@ -643,7 +648,7 @@ index f65b9d8..25d3167 100644
# present always So it is not 'required'.
'required': ['images']
diff --git a/tempest/lib/api_schema/response/compute/v2_1/instance_usage_audit_logs.py b/tempest/lib/api_schema/response/compute/v2_1/instance_usage_audit_logs.py
-index 15224c5..402dfea 100644
+index 15224c5a0..402dfeac3 100644
--- a/tempest/lib/api_schema/response/compute/v2_1/instance_usage_audit_logs.py
+++ b/tempest/lib/api_schema/response/compute/v2_1/instance_usage_audit_logs.py
@@ -31,7 +31,7 @@ common_instance_usage_audit_log = {
@@ -683,7 +688,7 @@ index 15224c5..402dfea 100644
}
}
diff --git a/tempest/lib/api_schema/response/compute/v2_1/interfaces.py b/tempest/lib/api_schema/response/compute/v2_1/interfaces.py
-index 9984750..6a989e5 100644
+index 99847502c..6a989e5eb 100644
--- a/tempest/lib/api_schema/response/compute/v2_1/interfaces.py
+++ b/tempest/lib/api_schema/response/compute/v2_1/interfaces.py
@@ -29,7 +29,7 @@ interface_common_info = {
@@ -723,20 +728,18 @@ index 9984750..6a989e5 100644
}
}
diff --git a/tempest/lib/api_schema/response/compute/v2_1/keypairs.py b/tempest/lib/api_schema/response/compute/v2_1/keypairs.py
-index 9c04c79..ec5c2d3 100644
+index e7dcf791d..8a95112c2 100644
--- a/tempest/lib/api_schema/response/compute/v2_1/keypairs.py
+++ b/tempest/lib/api_schema/response/compute/v2_1/keypairs.py
-@@ -31,7 +31,7 @@ get_keypair = {
+@@ -33,13 +33,13 @@ get_keypair = {
'id': {'type': 'integer'}
},
- 'additionalProperties': False,
+ 'additionalProperties': True,
- # When we run the get keypair API, response body includes
- # all the above mentioned attributes.
- # But in Nova API sample file, response body includes only
-@@ -40,7 +40,7 @@ get_keypair = {
- 'required': ['public_key', 'name', 'fingerprint']
+ 'required': ['public_key', 'name', 'fingerprint', 'user_id',
+ 'deleted', 'created_at', 'updated_at',
+ 'deleted_at', 'id']
}
},
- 'additionalProperties': False,
@@ -744,7 +747,7 @@ index 9c04c79..ec5c2d3 100644
'required': ['keypair']
}
}
-@@ -59,14 +59,14 @@ create_keypair = {
+@@ -58,14 +58,14 @@ create_keypair = {
'user_id': {'type': 'string'},
'private_key': {'type': 'string'}
},
@@ -761,7 +764,7 @@ index 9c04c79..ec5c2d3 100644
'required': ['keypair']
}
}
-@@ -92,16 +92,16 @@ list_keypairs = {
+@@ -91,16 +91,16 @@ list_keypairs = {
'name': {'type': 'string'},
'fingerprint': {'type': 'string'}
},
@@ -782,7 +785,7 @@ index 9c04c79..ec5c2d3 100644
}
}
diff --git a/tempest/lib/api_schema/response/compute/v2_1/limits.py b/tempest/lib/api_schema/response/compute/v2_1/limits.py
-index 81f175f..bc4c1e3 100644
+index 81f175fa7..bc4c1e3d8 100644
--- a/tempest/lib/api_schema/response/compute/v2_1/limits.py
+++ b/tempest/lib/api_schema/response/compute/v2_1/limits.py
@@ -43,7 +43,7 @@ get_limit = {
@@ -821,19 +824,19 @@ index 81f175f..bc4c1e3 100644
}
}
diff --git a/tempest/lib/api_schema/response/compute/v2_1/migrations.py b/tempest/lib/api_schema/response/compute/v2_1/migrations.py
-index b7d66ea..b571820 100644
+index c50286d27..19922f2b4 100644
--- a/tempest/lib/api_schema/response/compute/v2_1/migrations.py
+++ b/tempest/lib/api_schema/response/compute/v2_1/migrations.py
-@@ -35,7 +35,7 @@ list_migrations = {
- 'created_at': {'type': 'string'},
- 'updated_at': {'type': ['string', 'null']}
+@@ -37,7 +37,7 @@ list_migrations = {
+ 'created_at': parameter_types.date_time,
+ 'updated_at': parameter_types.date_time_or_null
},
- 'additionalProperties': False,
+ 'additionalProperties': True,
'required': [
'id', 'status', 'instance_uuid', 'source_node',
'source_compute', 'dest_node', 'dest_compute',
-@@ -45,7 +45,7 @@ list_migrations = {
+@@ -47,7 +47,7 @@ list_migrations = {
}
}
},
@@ -843,7 +846,7 @@ index b7d66ea..b571820 100644
}
}
diff --git a/tempest/lib/api_schema/response/compute/v2_1/parameter_types.py b/tempest/lib/api_schema/response/compute/v2_1/parameter_types.py
-index 3cc5ca4..73843d1 100644
+index 28ed81673..dc7544581 100644
--- a/tempest/lib/api_schema/response/compute/v2_1/parameter_types.py
+++ b/tempest/lib/api_schema/response/compute/v2_1/parameter_types.py
@@ -23,7 +23,7 @@ links = {
@@ -865,7 +868,7 @@ index 3cc5ca4..73843d1 100644
}
}
diff --git a/tempest/lib/api_schema/response/compute/v2_1/quotas.py b/tempest/lib/api_schema/response/compute/v2_1/quotas.py
-index 7953983..f4d9153 100644
+index 44f5bdfd2..a4515a9ea 100644
--- a/tempest/lib/api_schema/response/compute/v2_1/quotas.py
+++ b/tempest/lib/api_schema/response/compute/v2_1/quotas.py
@@ -37,7 +37,7 @@ update_quota_set = {
@@ -887,7 +890,7 @@ index 7953983..f4d9153 100644
}
}
diff --git a/tempest/lib/api_schema/response/compute/v2_1/security_group_default_rule.py b/tempest/lib/api_schema/response/compute/v2_1/security_group_default_rule.py
-index 2ec2826..1a2e19b 100644
+index 2ec282698..1a2e19b84 100644
--- a/tempest/lib/api_schema/response/compute/v2_1/security_group_default_rule.py
+++ b/tempest/lib/api_schema/response/compute/v2_1/security_group_default_rule.py
@@ -23,12 +23,12 @@ common_security_group_default_rule_info = {
@@ -924,7 +927,7 @@ index 2ec2826..1a2e19b 100644
}
}
diff --git a/tempest/lib/api_schema/response/compute/v2_1/security_groups.py b/tempest/lib/api_schema/response/compute/v2_1/security_groups.py
-index 5ed5a5c..d9f1794 100644
+index 5ed5a5c80..d9f1794c6 100644
--- a/tempest/lib/api_schema/response/compute/v2_1/security_groups.py
+++ b/tempest/lib/api_schema/response/compute/v2_1/security_groups.py
@@ -21,7 +21,7 @@ common_security_group_rule = {
@@ -994,7 +997,7 @@ index 5ed5a5c..d9f1794 100644
}
}
diff --git a/tempest/lib/api_schema/response/compute/v2_1/servers.py b/tempest/lib/api_schema/response/compute/v2_1/servers.py
-index 63e8467..8f4b385 100644
+index 2954de005..e22fba32c 100644
--- a/tempest/lib/api_schema/response/compute/v2_1/servers.py
+++ b/tempest/lib/api_schema/response/compute/v2_1/servers.py
@@ -29,14 +29,14 @@ create_server = {
@@ -1039,16 +1042,16 @@ index 63e8467..8f4b385 100644
'required': ['id', 'links']},
{'type': ['string', 'null']}
]},
-@@ -100,7 +100,7 @@ common_show_server = {
- 'id': {'type': 'string'},
- 'links': parameter_types.links
- },
-- 'additionalProperties': False,
-+ 'additionalProperties': True,
- 'required': ['id', 'links']
+@@ -103,7 +103,7 @@ common_show_server = {
+ # NOTE(gmann): This will be empty object if there is no
+ # flavor info present in DB. This can happen when flavor info is
+ # deleted after server creation.
+- 'additionalProperties': False
++ 'additionalProperties': True
},
'fault': {
-@@ -111,7 +111,7 @@ common_show_server = {
+ 'type': 'object',
+@@ -113,7 +113,7 @@ common_show_server = {
'message': {'type': 'string'},
'details': {'type': 'string'},
},
@@ -1057,7 +1060,7 @@ index 63e8467..8f4b385 100644
# NOTE(gmann): 'details' is not necessary to be present
# in the 'fault'. So it is not defined as 'required'.
'required': ['code', 'created', 'message']
-@@ -129,7 +129,7 @@ common_show_server = {
+@@ -131,7 +131,7 @@ common_show_server = {
'accessIPv4': parameter_types.access_ip_v4,
'accessIPv6': parameter_types.access_ip_v6
},
@@ -1066,7 +1069,7 @@ index 63e8467..8f4b385 100644
# NOTE(GMann): 'progress' attribute is present in the response
# only when server's status is one of the progress statuses
# ("ACTIVE","BUILD", "REBUILD", "RESIZE","VERIFY_RESIZE")
-@@ -150,7 +150,7 @@ update_server = {
+@@ -152,7 +152,7 @@ update_server = {
'properties': {
'server': common_show_server
},
@@ -1075,7 +1078,7 @@ index 63e8467..8f4b385 100644
'required': ['server']
}
}
-@@ -181,7 +181,7 @@ server_detail['properties'].update({
+@@ -183,7 +183,7 @@ server_detail['properties'].update({
'properties': {
'id': {'type': 'string'}
},
@@ -1084,7 +1087,7 @@ index 63e8467..8f4b385 100644
},
},
'config_drive': {'type': 'string'}
-@@ -202,7 +202,7 @@ get_server = {
+@@ -204,7 +204,7 @@ get_server = {
'properties': {
'server': server_detail
},
@@ -1093,7 +1096,7 @@ index 63e8467..8f4b385 100644
'required': ['server']
}
}
-@@ -218,7 +218,7 @@ list_servers_detail = {
+@@ -220,7 +220,7 @@ list_servers_detail = {
},
'servers_links': parameter_types.links
},
@@ -1102,16 +1105,16 @@ index 63e8467..8f4b385 100644
# NOTE(gmann): servers_links attribute is not necessary to be
# present always So it is not 'required'.
'required': ['servers']
-@@ -241,7 +241,7 @@ rescue_server = {
- 'properties': {
- 'adminPass': {'type': 'string'}
- },
+@@ -240,7 +240,7 @@ rescue_server = {
+ 'status_code': [200],
+ 'response_body': {
+ 'type': 'object',
- 'additionalProperties': False,
+ 'additionalProperties': True,
- 'required': ['adminPass']
}
}
-@@ -260,14 +260,14 @@ list_virtual_interfaces = {
+
+@@ -265,14 +265,14 @@ list_virtual_interfaces = {
'mac_address': parameter_types.mac_address,
'OS-EXT-VIF-NET:net_id': {'type': 'string'}
},
@@ -1128,7 +1131,7 @@ index 63e8467..8f4b385 100644
'required': ['virtual_interfaces']
}
}
-@@ -280,7 +280,7 @@ common_attach_volume_info = {
+@@ -285,7 +285,7 @@ common_attach_volume_info = {
'volumeId': {'type': 'string'},
'serverId': {'type': ['integer', 'string']}
},
@@ -1137,7 +1140,7 @@ index 63e8467..8f4b385 100644
# 'device' is optional in response.
'required': ['id', 'volumeId', 'serverId']
}
-@@ -292,7 +292,7 @@ attach_volume = {
+@@ -297,7 +297,7 @@ attach_volume = {
'properties': {
'volumeAttachment': common_attach_volume_info
},
@@ -1146,7 +1149,7 @@ index 63e8467..8f4b385 100644
'required': ['volumeAttachment']
}
}
-@@ -315,7 +315,7 @@ list_volume_attachments = {
+@@ -320,7 +320,7 @@ list_volume_attachments = {
'items': common_attach_volume_info
}
},
@@ -1155,7 +1158,7 @@ index 63e8467..8f4b385 100644
'required': ['volumeAttachments']
}
}
-@@ -335,7 +335,7 @@ list_addresses = {
+@@ -340,7 +340,7 @@ list_addresses = {
'properties': {
'addresses': parameter_types.addresses
},
@@ -1164,7 +1167,7 @@ index 63e8467..8f4b385 100644
'required': ['addresses']
}
}
-@@ -357,7 +357,7 @@ common_server_group = {
+@@ -362,7 +362,7 @@ common_server_group = {
},
'metadata': {'type': 'object'}
},
@@ -1173,7 +1176,7 @@ index 63e8467..8f4b385 100644
'required': ['id', 'name', 'policies', 'members', 'metadata']
}
-@@ -368,7 +368,7 @@ create_show_server_group = {
+@@ -373,7 +373,7 @@ create_show_server_group = {
'properties': {
'server_group': common_server_group
},
@@ -1182,7 +1185,7 @@ index 63e8467..8f4b385 100644
'required': ['server_group']
}
}
-@@ -387,7 +387,7 @@ list_server_groups = {
+@@ -392,7 +392,7 @@ list_server_groups = {
'items': common_server_group
}
},
@@ -1191,7 +1194,7 @@ index 63e8467..8f4b385 100644
'required': ['server_groups']
}
}
-@@ -403,7 +403,7 @@ instance_actions = {
+@@ -408,7 +408,7 @@ instance_actions = {
'message': {'type': ['string', 'null']},
'instance_uuid': {'type': 'string'}
},
@@ -1200,8 +1203,8 @@ index 63e8467..8f4b385 100644
'required': ['action', 'request_id', 'user_id', 'project_id',
'start_time', 'message', 'instance_uuid']
}
-@@ -419,7 +419,7 @@ instance_action_events = {
- 'result': {'type': 'string'},
+@@ -429,7 +429,7 @@ instance_action_events = {
+ 'result': {'type': ['string', 'null']},
'traceback': {'type': ['string', 'null']}
},
- 'additionalProperties': False,
@@ -1209,7 +1212,7 @@ index 63e8467..8f4b385 100644
'required': ['event', 'start_time', 'finish_time', 'result',
'traceback']
}
-@@ -435,7 +435,7 @@ list_instance_actions = {
+@@ -445,7 +445,7 @@ list_instance_actions = {
'items': instance_actions
}
},
@@ -1218,7 +1221,7 @@ index 63e8467..8f4b385 100644
'required': ['instanceActions']
}
}
-@@ -453,7 +453,7 @@ show_instance_action = {
+@@ -463,7 +463,7 @@ show_instance_action = {
'properties': {
'instanceAction': instance_actions_with_events
},
@@ -1227,7 +1230,7 @@ index 63e8467..8f4b385 100644
'required': ['instanceAction']
}
}
-@@ -465,7 +465,7 @@ show_password = {
+@@ -475,7 +475,7 @@ show_password = {
'properties': {
'password': {'type': 'string'}
},
@@ -1236,7 +1239,7 @@ index 63e8467..8f4b385 100644
'required': ['password']
}
}
-@@ -484,11 +484,11 @@ get_vnc_console = {
+@@ -494,11 +494,11 @@ get_vnc_console = {
'format': 'uri'
}
},
@@ -1250,7 +1253,7 @@ index 63e8467..8f4b385 100644
'required': ['console']
}
}
-@@ -500,7 +500,7 @@ get_console_output = {
+@@ -510,7 +510,7 @@ get_console_output = {
'properties': {
'output': {'type': 'string'}
},
@@ -1259,7 +1262,7 @@ index 63e8467..8f4b385 100644
'required': ['output']
}
}
-@@ -517,7 +517,7 @@ set_server_metadata = {
+@@ -527,7 +527,7 @@ set_server_metadata = {
}
}
},
@@ -1268,7 +1271,7 @@ index 63e8467..8f4b385 100644
'required': ['metadata']
}
}
-@@ -542,7 +542,7 @@ set_show_server_metadata_item = {
+@@ -552,7 +552,7 @@ set_show_server_metadata_item = {
}
}
},
@@ -1277,12 +1280,21 @@ index 63e8467..8f4b385 100644
'required': ['meta']
}
}
+@@ -583,7 +583,7 @@ evacuate_server_with_admin_pass = {
+ 'properties': {
+ 'adminPass': {'type': 'string'}
+ },
+- 'additionalProperties': False,
++ 'additionalProperties': True,
+ 'required': ['adminPass']
+ }
+ }
diff --git a/tempest/lib/api_schema/response/compute/v2_1/services.py b/tempest/lib/api_schema/response/compute/v2_1/services.py
-index ddef7b2..4b490d1 100644
+index 3b58ece48..b590c0221 100644
--- a/tempest/lib/api_schema/response/compute/v2_1/services.py
+++ b/tempest/lib/api_schema/response/compute/v2_1/services.py
-@@ -32,13 +32,13 @@ list_services = {
- 'updated_at': {'type': ['string', 'null']},
+@@ -34,13 +34,13 @@ list_services = {
+ 'updated_at': parameter_types.date_time_or_null,
'disabled_reason': {'type': ['string', 'null']}
},
- 'additionalProperties': False,
@@ -1297,7 +1309,7 @@ index ddef7b2..4b490d1 100644
'required': ['services']
}
}
-@@ -55,11 +55,11 @@ enable_disable_service = {
+@@ -57,11 +57,11 @@ enable_disable_service = {
'binary': {'type': 'string'},
'host': {'type': 'string'}
},
@@ -1311,11 +1323,25 @@ index ddef7b2..4b490d1 100644
'required': ['service']
}
}
+@@ -79,11 +79,11 @@ disable_log_reason = {
+ 'host': {'type': 'string'},
+ 'status': {'type': 'string'}
+ },
+- 'additionalProperties': False,
++ 'additionalProperties': True,
+ 'required': ['disabled_reason', 'binary', 'host', 'status']
+ }
+ },
+- 'additionalProperties': False,
++ 'additionalProperties': True,
+ 'required': ['service']
+ }
+ }
diff --git a/tempest/lib/api_schema/response/compute/v2_1/snapshots.py b/tempest/lib/api_schema/response/compute/v2_1/snapshots.py
-index 01a524b..4638dd2 100644
+index 826f85413..c808f5ee5 100644
--- a/tempest/lib/api_schema/response/compute/v2_1/snapshots.py
+++ b/tempest/lib/api_schema/response/compute/v2_1/snapshots.py
-@@ -24,7 +24,7 @@ common_snapshot_info = {
+@@ -26,7 +26,7 @@ common_snapshot_info = {
'displayName': {'type': ['string', 'null']},
'displayDescription': {'type': ['string', 'null']}
},
@@ -1324,7 +1350,7 @@ index 01a524b..4638dd2 100644
'required': ['id', 'volumeId', 'status', 'size',
'createdAt', 'displayName', 'displayDescription']
}
-@@ -36,7 +36,7 @@ create_get_snapshot = {
+@@ -38,7 +38,7 @@ create_get_snapshot = {
'properties': {
'snapshot': common_snapshot_info
},
@@ -1333,7 +1359,7 @@ index 01a524b..4638dd2 100644
'required': ['snapshot']
}
}
-@@ -51,7 +51,7 @@ list_snapshots = {
+@@ -53,7 +53,7 @@ list_snapshots = {
'items': common_snapshot_info
}
},
@@ -1343,7 +1369,7 @@ index 01a524b..4638dd2 100644
}
}
diff --git a/tempest/lib/api_schema/response/compute/v2_1/tenant_networks.py b/tempest/lib/api_schema/response/compute/v2_1/tenant_networks.py
-index ddfab96..02a9382 100644
+index ddfab9619..02a9382ec 100644
--- a/tempest/lib/api_schema/response/compute/v2_1/tenant_networks.py
+++ b/tempest/lib/api_schema/response/compute/v2_1/tenant_networks.py
@@ -19,7 +19,7 @@ param_network = {
@@ -1374,10 +1400,10 @@ index ddfab96..02a9382 100644
}
}
diff --git a/tempest/lib/api_schema/response/compute/v2_1/versions.py b/tempest/lib/api_schema/response/compute/v2_1/versions.py
-index 08a9fab..d6c1021 100644
+index 7f5623928..b57d1b8cb 100644
--- a/tempest/lib/api_schema/response/compute/v2_1/versions.py
+++ b/tempest/lib/api_schema/response/compute/v2_1/versions.py
-@@ -29,7 +29,7 @@ _version = {
+@@ -31,7 +31,7 @@ _version = {
'type': {'type': 'string'},
},
'required': ['href', 'rel'],
@@ -1386,7 +1412,7 @@ index 08a9fab..d6c1021 100644
}
},
'status': {'type': 'string'},
-@@ -48,7 +48,7 @@ _version = {
+@@ -50,7 +50,7 @@ _version = {
# so they should not be required.
# NOTE(sdague): media-types only shows up in single version requests.
'required': ['id', 'links', 'status', 'updated'],
@@ -1395,7 +1421,7 @@ index 08a9fab..d6c1021 100644
}
list_versions = {
-@@ -62,7 +62,7 @@ list_versions = {
+@@ -64,7 +64,7 @@ list_versions = {
}
},
'required': ['versions'],
@@ -1404,7 +1430,7 @@ index 08a9fab..d6c1021 100644
}
}
-@@ -94,7 +94,7 @@ get_version = {
+@@ -96,7 +96,7 @@ get_version = {
}
},
'required': ['choices'],
@@ -1413,7 +1439,7 @@ index 08a9fab..d6c1021 100644
}
}
-@@ -105,6 +105,6 @@ get_one_version = {
+@@ -107,6 +107,6 @@ get_one_version = {
'properties': {
'version': _version
},
@@ -1422,10 +1448,10 @@ index 08a9fab..d6c1021 100644
}
}
diff --git a/tempest/lib/api_schema/response/compute/v2_1/volumes.py b/tempest/lib/api_schema/response/compute/v2_1/volumes.py
-index bb34acb..d854d53 100644
+index c35dae981..c487aa5a4 100644
--- a/tempest/lib/api_schema/response/compute/v2_1/volumes.py
+++ b/tempest/lib/api_schema/response/compute/v2_1/volumes.py
-@@ -40,7 +40,7 @@ create_get_volume = {
+@@ -42,7 +42,7 @@ create_get_volume = {
'volumeId': {'type': 'string'},
'serverId': {'type': 'string'}
},
@@ -1434,7 +1460,7 @@ index bb34acb..d854d53 100644
# NOTE- If volume is not attached to any server
# then, 'attachments' attributes comes as array
# with empty objects "[{}]" due to that elements
-@@ -50,13 +50,13 @@ create_get_volume = {
+@@ -52,13 +52,13 @@ create_get_volume = {
}
}
},
@@ -1450,7 +1476,7 @@ index bb34acb..d854d53 100644
'required': ['volume']
}
}
-@@ -91,7 +91,7 @@ list_volumes = {
+@@ -93,7 +93,7 @@ list_volumes = {
'volumeId': {'type': 'string'},
'serverId': {'type': 'string'}
},
@@ -1459,7 +1485,7 @@ index bb34acb..d854d53 100644
# NOTE- If volume is not attached to any server
# then, 'attachments' attributes comes as array
# with empty object "[{}]" due to that elements
-@@ -101,7 +101,7 @@ list_volumes = {
+@@ -103,7 +103,7 @@ list_volumes = {
}
}
},
@@ -1468,7 +1494,7 @@ index bb34acb..d854d53 100644
'required': ['id', 'status', 'displayName',
'availabilityZone', 'createdAt',
'displayDescription', 'volumeType',
-@@ -110,7 +110,7 @@ list_volumes = {
+@@ -112,7 +112,7 @@ list_volumes = {
}
}
},
@@ -1477,8 +1503,26 @@ index bb34acb..d854d53 100644
'required': ['volumes']
}
}
+diff --git a/tempest/lib/api_schema/response/compute/v2_11/services.py b/tempest/lib/api_schema/response/compute/v2_11/services.py
+index 18b833bd2..885e8cdac 100644
+--- a/tempest/lib/api_schema/response/compute/v2_11/services.py
++++ b/tempest/lib/api_schema/response/compute/v2_11/services.py
+@@ -36,11 +36,11 @@ update_forced_down = {
+ 'host': {'type': 'string'},
+ 'forced_down': {'type': 'boolean'}
+ },
+- 'additionalProperties': False,
++ 'additionalProperties': True,
+ 'required': ['binary', 'host', 'forced_down']
+ }
+ },
+- 'additionalProperties': False,
++ 'additionalProperties': True,
+ 'required': ['service']
+ }
+ }
diff --git a/tempest/lib/api_schema/response/compute/v2_16/servers.py b/tempest/lib/api_schema/response/compute/v2_16/servers.py
-index 3eb658f..d0a30e3 100644
+index 3eb658f4e..d0a30e3b0 100644
--- a/tempest/lib/api_schema/response/compute/v2_16/servers.py
+++ b/tempest/lib/api_schema/response/compute/v2_16/servers.py
@@ -32,7 +32,7 @@ server_detail = {
@@ -1545,7 +1589,7 @@ index 3eb658f..d0a30e3 100644
# present always So it is not 'required'.
'required': ['servers']
diff --git a/tempest/lib/api_schema/response/compute/v2_23/migrations.py b/tempest/lib/api_schema/response/compute/v2_23/migrations.py
-index 3cd0f6e..af6fd8a 100644
+index 3cd0f6ec1..af6fd8ade 100644
--- a/tempest/lib/api_schema/response/compute/v2_23/migrations.py
+++ b/tempest/lib/api_schema/response/compute/v2_23/migrations.py
@@ -45,7 +45,7 @@ list_migrations = {
@@ -1566,8 +1610,21 @@ index 3cd0f6e..af6fd8a 100644
'required': ['migrations']
}
}
+diff --git a/tempest/lib/api_schema/response/compute/v2_26/servers.py b/tempest/lib/api_schema/response/compute/v2_26/servers.py
+index b03bdf6fa..6b3936b3c 100644
+--- a/tempest/lib/api_schema/response/compute/v2_26/servers.py
++++ b/tempest/lib/api_schema/response/compute/v2_26/servers.py
+@@ -54,7 +54,7 @@ list_tags = {
+ 'properties': {
+ 'tags': tag_items,
+ },
+- 'additionalProperties': False,
++ 'additionalProperties': True,
+ 'required': ['tags']
+ }
+ }
diff --git a/tempest/lib/api_schema/response/compute/v2_3/servers.py b/tempest/lib/api_schema/response/compute/v2_3/servers.py
-index f24103e..5b5c9c1 100644
+index f24103ea2..5b5c9c197 100644
--- a/tempest/lib/api_schema/response/compute/v2_3/servers.py
+++ b/tempest/lib/api_schema/response/compute/v2_3/servers.py
@@ -40,7 +40,7 @@ server_detail = {
@@ -1633,6 +1690,84 @@ index f24103e..5b5c9c1 100644
# NOTE(gmann): servers_links attribute is not necessary to be
# present always So it is not 'required'.
'required': ['servers']
+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 37a084f1c..aa2f312a4 100644
+--- a/tempest/lib/api_schema/response/compute/v2_47/servers.py
++++ b/tempest/lib/api_schema/response/compute/v2_47/servers.py
+@@ -30,7 +30,7 @@ flavor = {
+ }
+ }
+ },
+- 'additionalProperties': False,
++ 'additionalProperties': True,
+ 'required': ['original_name', 'disk', 'ephemeral', 'ram', 'swap', 'vcpus']
+ }
+
+diff --git a/tempest/lib/api_schema/response/compute/v2_48/servers.py b/tempest/lib/api_schema/response/compute/v2_48/servers.py
+index 59047583a..e688db305 100644
+--- a/tempest/lib/api_schema/response/compute/v2_48/servers.py
++++ b/tempest/lib/api_schema/response/compute/v2_48/servers.py
+@@ -45,7 +45,7 @@ show_server_diagnostics = {
+ 'maximum': {'type': ['integer', 'null']},
+ 'used': {'type': ['integer', 'null']}
+ },
+- 'additionalProperties': False,
++ 'additionalProperties': True,
+ 'required': ['maximum', 'used']
+ },
+ 'cpu_details': {
+@@ -57,7 +57,7 @@ show_server_diagnostics = {
+ 'time': {'type': ['integer', 'null']},
+ 'utilisation': {'type': ['integer', 'null']}
+ },
+- 'additionalProperties': False,
++ 'additionalProperties': True,
+ 'required': ['id', 'time', 'utilisation']
+ }
+ },
+@@ -79,7 +79,7 @@ show_server_diagnostics = {
+ 'tx_packets': {'type': ['integer', 'null']},
+ 'tx_rate': {'type': ['integer', 'null']}
+ },
+- 'additionalProperties': False,
++ 'additionalProperties': True,
+ 'required': ['mac_address', 'rx_octets', 'rx_errors',
+ 'rx_drop',
+ 'rx_packets', 'rx_rate', 'tx_octets',
+@@ -98,13 +98,13 @@ show_server_diagnostics = {
+ 'write_requests': {'type': ['integer', 'null']},
+ 'errors_count': {'type': ['integer', 'null']}
+ },
+- 'additionalProperties': False,
++ 'additionalProperties': True,
+ 'required': ['read_bytes', 'read_requests', 'write_bytes',
+ 'write_requests', 'errors_count']
+ }
+ }
+ },
+- 'additionalProperties': False,
++ 'additionalProperties': True,
+ 'required': [
+ 'state', 'driver', 'hypervisor', 'hypervisor_os', 'uptime',
+ 'config_drive', 'num_cpus', 'num_nics', 'num_disks',
+diff --git a/tempest/lib/api_schema/response/compute/v2_6/servers.py b/tempest/lib/api_schema/response/compute/v2_6/servers.py
+index 29b3e8600..4caf107a4 100644
+--- a/tempest/lib/api_schema/response/compute/v2_6/servers.py
++++ b/tempest/lib/api_schema/response/compute/v2_6/servers.py
+@@ -38,11 +38,11 @@ get_remote_consoles = {
+ 'format': 'uri'
+ }
+ },
+- 'additionalProperties': False,
++ 'additionalProperties': True,
+ 'required': ['protocol', 'type', 'url']
+ }
+ },
+- 'additionalProperties': False,
++ 'additionalProperties': True,
+ 'required': ['remote_console']
+ }
+ }
--
-2.7.4
+2.17.1