Merge "add image schemas for image"
diff --git a/tempest/tests/lib/services/image/v2/test_schemas_client.py b/tempest/tests/lib/services/image/v2/test_schemas_client.py
index eef5b41..9fb249b 100644
--- a/tempest/tests/lib/services/image/v2/test_schemas_client.py
+++ b/tempest/tests/lib/services/image/v2/test_schemas_client.py
@@ -75,6 +75,293 @@
}
}
+ FAKE_SHOW_SCHEMA_IMAGE = {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "links": [
+ {
+ "href": "{self}",
+ "rel": "self"
+ },
+ {
+ "href": "{file}",
+ "rel": "enclosure"
+ },
+ {
+ "href": "{schema}",
+ "rel": "describedby"
+ }
+ ],
+ "name": "image",
+ "properties": {
+ "architecture": {
+ "description": "Operating system architecture as "
+ "specified in https://docs.openstack.org/"
+ "python-glanceclient/latest/cli"
+ "/property-keys.html",
+ "is_base": False,
+ "type": "string"
+ },
+ "checksum": {
+ "description": "md5 hash of image contents.",
+ "maxLength": 32,
+ "readOnly": True,
+ "type": [
+ "null",
+ "string"
+ ]
+ },
+ "container_format": {
+ "description": "Format of the container",
+ "enum": [
+ None,
+ "ami",
+ "ari",
+ "aki",
+ "bare",
+ "ovf",
+ "ova",
+ "docker"
+ ],
+ "type": [
+ "null",
+ "string"
+ ]
+ },
+ "created_at": {
+ "description": "Date and time of image registration",
+ "readOnly": True,
+ "type": "string"
+ },
+ "direct_url": {
+ "description": "URL to access the image file "
+ "kept in external store",
+ "readOnly": True,
+ "type": "string"
+ },
+ "disk_format": {
+ "description": "Format of the disk",
+ "enum": [
+ None,
+ "ami",
+ "ari",
+ "aki",
+ "vhd",
+ "vhdx",
+ "vmdk",
+ "raw",
+ "qcow2",
+ "vdi",
+ "iso",
+ "ploop"
+ ],
+ "type": [
+ "null",
+ "string"
+ ]
+ },
+ "file": {
+ "description": "An image file url",
+ "readOnly": True,
+ "type": "string"
+ },
+ "id": {
+ "description": "An identifier for the image",
+ "pattern": "^([0-9a-fA-F]){8}-([0-9a-fA-F])"
+ "{4}-([0-9a-fA-F]){4}-([0-9a-fA-F])"
+ "{4}-([0-9a-fA-F]){12}$",
+ "type": "string"
+ },
+ "instance_uuid": {
+ "description": "Metadata which can be used to record which"
+ " instance this image is associated with. "
+ "(Informational only, does not create "
+ "an instance snapshot.)",
+ "is_base": False,
+ "type": "string"
+ },
+ "kernel_id": {
+ "description": "ID of image stored in Glance that should "
+ "be used as the kernel when booting an "
+ "AMI-style image.",
+ "is_base": False,
+ "pattern": "^([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-"
+ "([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-("
+ "[0-9a-fA-F]){12}$",
+ "type": [
+ "null",
+ "string"
+ ]
+ },
+ "locations": {
+ "description": "A set of URLs to access the image file "
+ "kept in external store",
+ "items": {
+ "properties": {
+ "metadata": {
+ "type": "object"
+ },
+ "url": {
+ "maxLength": 255,
+ "type": "string"
+ }
+ },
+ "required": [
+ "url",
+ "metadata"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "min_disk": {
+ "description": "Amount of disk space (in GB) "
+ "required to boot image.",
+ "type": "integer"
+ },
+ "min_ram": {
+ "description": "Amount of ram (in MB) required "
+ "to boot image.",
+ "type": "integer"
+ },
+ "name": {
+ "description": "Descriptive name for the image",
+ "maxLength": 255,
+ "type": [
+ "null",
+ "string"
+ ]
+ },
+ "os_distro": {
+ "description": "Common name of operating system distribution "
+ "as specified in https://docs.openstack.org/"
+ "python-glanceclient/latest/cli/"
+ "property-keys.html",
+ "is_base": False,
+ "type": "string"
+ },
+ "os_hash_algo": {
+ "description": "Algorithm to calculate the os_hash_value",
+ "maxLength": 64,
+ "readOnly": True,
+ "type": [
+ "null",
+ "string"
+ ]
+ },
+ "os_hash_value": {
+ "description": "Hexdigest of the image contents "
+ "using the algorithm specified by "
+ "the os_hash_algo",
+ "maxLength": 128,
+ "readOnly": True,
+ "type": [
+ "null",
+ "string"
+ ]
+ },
+ "os_hidden": {
+ "description": "If true, image will not appear in default"
+ " image list response.",
+ "type": "boolean"
+ },
+ "os_version": {
+ "description": "Operating system version as specified by "
+ "the distributor",
+ "is_base": False,
+ "type": "string"
+ },
+ "owner": {
+ "description": "Owner of the image",
+ "maxLength": 255,
+ "type": [
+ "null",
+ "string"
+ ]
+ },
+ "protected": {
+ "description": "If true, image will not be deletable.",
+ "type": "boolean"
+ },
+ "ramdisk_id": {
+ "description": "ID of image stored in Glance that should"
+ " be used as the ramdisk when booting an "
+ "AMI-style image.",
+ "is_base": False,
+ "pattern": "^([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F])"
+ "{4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}$",
+ "type": [
+ "null",
+ "string"
+ ]
+ },
+ "schema": {
+ "description": "An image schema url",
+ "readOnly": True,
+ "type": "string"
+ },
+ "self": {
+ "description": "An image self url",
+ "readOnly": True,
+ "type": "string"
+ },
+ "size": {
+ "description": "Size of image file in bytes",
+ "readOnly": True,
+ "type": [
+ "null",
+ "integer"
+ ]
+ },
+ "status": {
+ "description": "Status of the image",
+ "enum": [
+ "queued",
+ "saving",
+ "active",
+ "killed",
+ "deleted",
+ "pending_delete",
+ "deactivated",
+ "uploading",
+ "importing"
+ ],
+ "readOnly": True,
+ "type": "string"
+ },
+ "tags": {
+ "description": "List of strings related to the image",
+ "items": {
+ "maxLength": 255,
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "updated_at": {
+ "description": "Date and time of the last image modification",
+ "readOnly": True,
+ "type": "string"
+ },
+ "virtual_size": {
+ "description": "Virtual size of image in bytes",
+ "readOnly": True,
+ "type": [
+ "null",
+ "integer"
+ ]
+ },
+ "visibility": {
+ "description": "Scope of image accessibility",
+ "enum": [
+ "public",
+ "private"
+ ],
+ "type": "string"
+ }
+ }
+ }
+
def setUp(self):
super(TestSchemasClient, self).setUp()
fake_auth = fake_auth_provider.FakeAuthProvider()
@@ -89,6 +376,22 @@
bytes_body,
schema="members")
+ def _test_show_schema_image(self, bytes_body=False):
+ self.check_service_client_function(
+ self.client.show_schema,
+ 'tempest.lib.common.rest_client.RestClient.get',
+ self.FAKE_SHOW_SCHEMA_IMAGE,
+ bytes_body,
+ schema="image")
+
+ def _test_show_schema_images(self, bytes_body=False):
+ self.check_service_client_function(
+ self.client.show_schema,
+ 'tempest.lib.common.rest_client.RestClient.get',
+ self.FAKE_SHOW_SCHEMA_IMAGE,
+ bytes_body,
+ schema="images")
+
def _test_show_schema(self, bytes_body=False):
self.check_service_client_function(
self.client.show_schema,
@@ -103,6 +406,18 @@
def test_show_schema_members_with_bytes_body(self):
self._test_show_schema_members(bytes_body=True)
+ def test_show_schema_image_with_str_body(self):
+ self._test_show_schema_image()
+
+ def test_show_schema_image_with_bytes_body(self):
+ self._test_show_schema_image(bytes_body=True)
+
+ def test_show_schema_images_with_str_body(self):
+ self._test_show_schema_images()
+
+ def test_show_schema_images_with_bytes_body(self):
+ self._test_show_schema_images(bytes_body=True)
+
def test_show_schema_with_str_body(self):
self._test_show_schema()