diff --git a/doc/api_samples/servers/v2.100/server-action-rebuild-resp.json b/doc/api_samples/servers/v2.100/server-action-rebuild-resp.json index a44dc1327e..29a8b10b5c 100644 --- a/doc/api_samples/servers/v2.100/server-action-rebuild-resp.json +++ b/doc/api_samples/servers/v2.100/server-action-rebuild-resp.json @@ -45,14 +45,7 @@ ], "properties": { "architecture": "x86_64", - "auto_disk_config": "True", - "base_image_ref": "70a599e0-31e7-49b7-b260-868f441e862b", - "container_format": "ova", - "disk_format": "vhd", - "kernel_id": "nokernel", - "min_disk": "1", - "min_ram": "0", - "ramdisk_id": "nokernel" + "auto_disk_config": "True" } }, "key_name": null, diff --git a/doc/api_samples/servers/v2.100/server-get-resp.json b/doc/api_samples/servers/v2.100/server-get-resp.json index c68a656e48..6d5c28b99d 100644 --- a/doc/api_samples/servers/v2.100/server-get-resp.json +++ b/doc/api_samples/servers/v2.100/server-get-resp.json @@ -37,14 +37,7 @@ ], "properties": { "architecture": "x86_64", - "auto_disk_config": "True", - "base_image_ref": "70a599e0-31e7-49b7-b260-868f441e862b", - "container_format": "ova", - "disk_format": "vhd", - "kernel_id": "nokernel", - "min_disk": "1", - "min_ram": "0", - "ramdisk_id": "nokernel" + "auto_disk_config": "True" } }, "key_name": null, diff --git a/doc/api_samples/servers/v2.100/server-update-resp.json b/doc/api_samples/servers/v2.100/server-update-resp.json index d4cad62fa0..40833339f9 100644 --- a/doc/api_samples/servers/v2.100/server-update-resp.json +++ b/doc/api_samples/servers/v2.100/server-update-resp.json @@ -37,14 +37,7 @@ ], "properties": { "architecture": "x86_64", - "auto_disk_config": "True", - "base_image_ref": "70a599e0-31e7-49b7-b260-868f441e862b", - "container_format": "ova", - "disk_format": "vhd", - "kernel_id": "nokernel", - "min_disk": "1", - "min_ram": "0", - "ramdisk_id": "nokernel" + "auto_disk_config": "True" } }, "key_name": null, diff --git a/doc/api_samples/servers/v2.100/servers-details-resp.json b/doc/api_samples/servers/v2.100/servers-details-resp.json index 28bbef41a5..e9e4700f42 100644 --- a/doc/api_samples/servers/v2.100/servers-details-resp.json +++ b/doc/api_samples/servers/v2.100/servers-details-resp.json @@ -36,14 +36,7 @@ ], "properties": { "architecture": "x86_64", - "auto_disk_config": "True", - "base_image_ref": "70a599e0-31e7-49b7-b260-868f441e862b", - "container_format": "ova", - "disk_format": "vhd", - "kernel_id": "nokernel", - "min_disk": "1", - "min_ram": "0", - "ramdisk_id": "nokernel" + "auto_disk_config": "True" } }, "key_name": null, diff --git a/doc/api_samples/servers/v2.98/server-action-rebuild-resp.json b/doc/api_samples/servers/v2.98/server-action-rebuild-resp.json index 559e3ddf74..a1556272bc 100644 --- a/doc/api_samples/servers/v2.98/server-action-rebuild-resp.json +++ b/doc/api_samples/servers/v2.98/server-action-rebuild-resp.json @@ -45,14 +45,7 @@ ], "properties": { "architecture": "x86_64", - "auto_disk_config": "True", - "base_image_ref": "70a599e0-31e7-49b7-b260-868f441e862b", - "container_format": "ova", - "disk_format": "vhd", - "kernel_id": "nokernel", - "min_disk": "1", - "min_ram": "0", - "ramdisk_id": "nokernel" + "auto_disk_config": "True" } }, "key_name": null, diff --git a/doc/api_samples/servers/v2.98/server-get-resp.json b/doc/api_samples/servers/v2.98/server-get-resp.json index 252d30d407..ea8acac771 100644 --- a/doc/api_samples/servers/v2.98/server-get-resp.json +++ b/doc/api_samples/servers/v2.98/server-get-resp.json @@ -37,14 +37,7 @@ ], "properties": { "architecture": "x86_64", - "auto_disk_config": "True", - "base_image_ref": "70a599e0-31e7-49b7-b260-868f441e862b", - "container_format": "ova", - "disk_format": "vhd", - "kernel_id": "nokernel", - "min_disk": "1", - "min_ram": "0", - "ramdisk_id": "nokernel" + "auto_disk_config": "True" } }, "key_name": null, diff --git a/doc/api_samples/servers/v2.98/server-update-resp.json b/doc/api_samples/servers/v2.98/server-update-resp.json index d92b16a435..b012a5b43c 100644 --- a/doc/api_samples/servers/v2.98/server-update-resp.json +++ b/doc/api_samples/servers/v2.98/server-update-resp.json @@ -44,14 +44,7 @@ ], "properties": { "architecture": "x86_64", - "auto_disk_config": "True", - "base_image_ref": "70a599e0-31e7-49b7-b260-868f441e862b", - "container_format": "ova", - "disk_format": "vhd", - "kernel_id": "nokernel", - "min_disk": "1", - "min_ram": "0", - "ramdisk_id": "nokernel" + "auto_disk_config": "True" } }, "key_name": null, diff --git a/doc/api_samples/servers/v2.98/servers-details-resp.json b/doc/api_samples/servers/v2.98/servers-details-resp.json index 7555549621..7014e8b2b1 100644 --- a/doc/api_samples/servers/v2.98/servers-details-resp.json +++ b/doc/api_samples/servers/v2.98/servers-details-resp.json @@ -36,14 +36,7 @@ ], "properties": { "architecture": "x86_64", - "auto_disk_config": "True", - "base_image_ref": "70a599e0-31e7-49b7-b260-868f441e862b", - "container_format": "ova", - "disk_format": "vhd", - "kernel_id": "nokernel", - "min_disk": "1", - "min_ram": "0", - "ramdisk_id": "nokernel" + "auto_disk_config": "True" } }, "key_name": null, diff --git a/nova/api/openstack/compute/schemas/servers.py b/nova/api/openstack/compute/schemas/servers.py index 38e88cc6e3..973dddc9c0 100644 --- a/nova/api/openstack/compute/schemas/servers.py +++ b/nova/api/openstack/compute/schemas/servers.py @@ -1216,10 +1216,10 @@ rebuild_response_v298['properties']['server']['properties']['image'][ 'patternProperties': { '^[a-zA-Z0-9_:. ]{1,255}$': { 'type': 'string', - 'max_Length': 255, - }, + 'maxLength': 255, }, - 'additionalProperties': False, + }, + 'additionalProperties': False, }, }) diff --git a/nova/api/openstack/compute/views/servers.py b/nova/api/openstack/compute/views/servers.py index 444688a7fd..481122ba37 100644 --- a/nova/api/openstack/compute/views/servers.py +++ b/nova/api/openstack/compute/views/servers.py @@ -14,6 +14,8 @@ # License for the specific language governing permissions and limitations # under the License. +import itertools + from oslo_log import log as logging from oslo_serialization import jsonutils @@ -634,16 +636,17 @@ class ViewBuilder(common.ViewBuilder): } if api_version_request.is_supported(request, '2.98'): - image_props = {} - for key, value in instance.system_metadata.items(): - if key.startswith(utils.SM_IMAGE_PROP_PREFIX): - # remove prefix 'image_' at start of key, so that - # key 'image_' becomes '' - k = key.partition('_')[2] - image_props[k] = value - - image['properties'] = image_props - + prefix_len = len(utils.SM_IMAGE_PROP_PREFIX) + # allow legacy names if that is what were stored in metadata + std_fields = set(itertools.chain( + objects.ImageMetaProps.fields.keys(), + objects.ImageMetaProps._legacy_property_map.keys() + )) + image['properties'] = { + key[prefix_len:]: value for key, value in + instance.system_metadata.items() + if (key.startswith(utils.SM_IMAGE_PROP_PREFIX) and + key[prefix_len:] in std_fields and value is not None)} return image else: return "" diff --git a/nova/tests/functional/api_sample_tests/api_samples/servers/v2.100/server-action-rebuild-resp.json.tpl b/nova/tests/functional/api_sample_tests/api_samples/servers/v2.100/server-action-rebuild-resp.json.tpl index 034fa944f5..33d2955bde 100644 --- a/nova/tests/functional/api_sample_tests/api_samples/servers/v2.100/server-action-rebuild-resp.json.tpl +++ b/nova/tests/functional/api_sample_tests/api_samples/servers/v2.100/server-action-rebuild-resp.json.tpl @@ -45,14 +45,7 @@ ], "properties": { "architecture": "x86_64", - "auto_disk_config": "True", - "base_image_ref": "%(uuid)s", - "container_format": "ova", - "disk_format": "vhd", - "kernel_id": "nokernel", - "min_disk": "1", - "min_ram": "0", - "ramdisk_id": "nokernel" + "auto_disk_config": "True" } }, "key_name": null, diff --git a/nova/tests/functional/api_sample_tests/api_samples/servers/v2.100/server-get-resp.json.tpl b/nova/tests/functional/api_sample_tests/api_samples/servers/v2.100/server-get-resp.json.tpl index 459f166ac4..9208297263 100644 --- a/nova/tests/functional/api_sample_tests/api_samples/servers/v2.100/server-get-resp.json.tpl +++ b/nova/tests/functional/api_sample_tests/api_samples/servers/v2.100/server-get-resp.json.tpl @@ -38,14 +38,7 @@ ], "properties": { "architecture": "x86_64", - "auto_disk_config": "True", - "base_image_ref": "%(uuid)s", - "container_format": "ova", - "disk_format": "vhd", - "kernel_id": "nokernel", - "min_disk": "1", - "min_ram": "0", - "ramdisk_id": "nokernel" + "auto_disk_config": "True" } }, "key_name": null, diff --git a/nova/tests/functional/api_sample_tests/api_samples/servers/v2.100/server-update-resp.json.tpl b/nova/tests/functional/api_sample_tests/api_samples/servers/v2.100/server-update-resp.json.tpl index c662e0e8c3..caef8cd28f 100644 --- a/nova/tests/functional/api_sample_tests/api_samples/servers/v2.100/server-update-resp.json.tpl +++ b/nova/tests/functional/api_sample_tests/api_samples/servers/v2.100/server-update-resp.json.tpl @@ -37,14 +37,7 @@ ], "properties": { "architecture": "x86_64", - "auto_disk_config": "True", - "base_image_ref": "%(uuid)s", - "container_format": "ova", - "disk_format": "vhd", - "kernel_id": "nokernel", - "min_disk": "1", - "min_ram": "0", - "ramdisk_id": "nokernel" + "auto_disk_config": "True" } }, "key_name": null, diff --git a/nova/tests/functional/api_sample_tests/api_samples/servers/v2.100/servers-details-resp.json.tpl b/nova/tests/functional/api_sample_tests/api_samples/servers/v2.100/servers-details-resp.json.tpl index f0bdf5ff38..3cb45747ba 100644 --- a/nova/tests/functional/api_sample_tests/api_samples/servers/v2.100/servers-details-resp.json.tpl +++ b/nova/tests/functional/api_sample_tests/api_samples/servers/v2.100/servers-details-resp.json.tpl @@ -37,14 +37,7 @@ ], "properties": { "architecture": "x86_64", - "auto_disk_config": "True", - "base_image_ref": "%(uuid)s", - "container_format": "ova", - "disk_format": "vhd", - "kernel_id": "nokernel", - "min_disk": "1", - "min_ram": "0", - "ramdisk_id": "nokernel" + "auto_disk_config": "True" } }, "key_name": null, diff --git a/nova/tests/functional/api_sample_tests/api_samples/servers/v2.98/server-action-rebuild-resp.json.tpl b/nova/tests/functional/api_sample_tests/api_samples/servers/v2.98/server-action-rebuild-resp.json.tpl index fa0e60cc00..85ce4ff4c7 100644 --- a/nova/tests/functional/api_sample_tests/api_samples/servers/v2.98/server-action-rebuild-resp.json.tpl +++ b/nova/tests/functional/api_sample_tests/api_samples/servers/v2.98/server-action-rebuild-resp.json.tpl @@ -45,14 +45,7 @@ ], "properties": { "architecture": "x86_64", - "auto_disk_config": "True", - "base_image_ref": "%(uuid)s", - "container_format": "ova", - "disk_format": "vhd", - "kernel_id": "nokernel", - "min_disk": "1", - "min_ram": "0", - "ramdisk_id": "nokernel" + "auto_disk_config": "True" } }, "key_name": null, diff --git a/nova/tests/functional/api_sample_tests/api_samples/servers/v2.98/server-details-resp.json.tpl b/nova/tests/functional/api_sample_tests/api_samples/servers/v2.98/server-details-resp.json.tpl index 38dbefebdb..e01ba4f6ec 100644 --- a/nova/tests/functional/api_sample_tests/api_samples/servers/v2.98/server-details-resp.json.tpl +++ b/nova/tests/functional/api_sample_tests/api_samples/servers/v2.98/server-details-resp.json.tpl @@ -37,14 +37,7 @@ ], "properties": { "architecture": "x86_64", - "auto_disk_config": "True", - "base_image_ref": "%(uuid)s", - "container_format": "ova", - "disk_format": "vhd", - "kernel_id": "nokernel", - "min_disk": "1", - "min_ram": "0", - "ramdisk_id": "nokernel" + "auto_disk_config": "True" } }, "key_name": null, diff --git a/nova/tests/functional/api_sample_tests/api_samples/servers/v2.98/server-get-resp.json.tpl b/nova/tests/functional/api_sample_tests/api_samples/servers/v2.98/server-get-resp.json.tpl index 1d9678524a..fbf2da9a1d 100644 --- a/nova/tests/functional/api_sample_tests/api_samples/servers/v2.98/server-get-resp.json.tpl +++ b/nova/tests/functional/api_sample_tests/api_samples/servers/v2.98/server-get-resp.json.tpl @@ -38,14 +38,7 @@ ], "properties": { "architecture": "x86_64", - "auto_disk_config": "True", - "base_image_ref": "%(uuid)s", - "container_format": "ova", - "disk_format": "vhd", - "kernel_id": "nokernel", - "min_disk": "1", - "min_ram": "0", - "ramdisk_id": "nokernel" + "auto_disk_config": "True" } }, "key_name": null, diff --git a/nova/tests/functional/api_sample_tests/api_samples/servers/v2.98/server-update-resp.json.tpl b/nova/tests/functional/api_sample_tests/api_samples/servers/v2.98/server-update-resp.json.tpl index aac2e4f0bf..b4bfd2f7eb 100644 --- a/nova/tests/functional/api_sample_tests/api_samples/servers/v2.98/server-update-resp.json.tpl +++ b/nova/tests/functional/api_sample_tests/api_samples/servers/v2.98/server-update-resp.json.tpl @@ -37,14 +37,7 @@ ], "properties": { "architecture": "x86_64", - "auto_disk_config": "True", - "base_image_ref": "%(uuid)s", - "container_format": "ova", - "disk_format": "vhd", - "kernel_id": "nokernel", - "min_disk": "1", - "min_ram": "0", - "ramdisk_id": "nokernel" + "auto_disk_config": "True" } }, "key_name": null, diff --git a/nova/tests/functional/api_sample_tests/api_samples/servers/v2.98/servers-details-resp.json.tpl b/nova/tests/functional/api_sample_tests/api_samples/servers/v2.98/servers-details-resp.json.tpl index fa1c6bbd17..fa49bc6b49 100644 --- a/nova/tests/functional/api_sample_tests/api_samples/servers/v2.98/servers-details-resp.json.tpl +++ b/nova/tests/functional/api_sample_tests/api_samples/servers/v2.98/servers-details-resp.json.tpl @@ -37,14 +37,7 @@ ], "properties": { "architecture": "x86_64", - "auto_disk_config": "True", - "base_image_ref": "%(uuid)s", - "container_format": "ova", - "disk_format": "vhd", - "kernel_id": "nokernel", - "min_disk": "1", - "min_ram": "0", - "ramdisk_id": "nokernel" + "auto_disk_config": "True" } }, "key_name": null,