Specs for image service 29/37029/3
authorBin Sun <bins@vmware.com>
Tue, 20 Mar 2018 09:45:15 +0000 (17:45 +0800)
committerBin Sun <bins@vmware.com>
Thu, 22 Mar 2018 06:59:43 +0000 (06:59 +0000)
Change-Id: I7dade73cab501e20df9885cfe8996c5f09551776
Issue-ID: MULTICLOUD-155
Signed-off-by: Bin Sun <bins@vmware.com>
docs/specs/multicloud_image_service.rst [new file with mode: 0644]

diff --git a/docs/specs/multicloud_image_service.rst b/docs/specs/multicloud_image_service.rst
new file mode 100644 (file)
index 0000000..728d389
--- /dev/null
@@ -0,0 +1,117 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. Copyright (c) 2017-2018 VMware, Inc.
+
+
+=================
+Image Service
+=================
+
+Because Multicloud provides a cloud mediation layer supporting multiple clouds. It's necessary to
+introduces some function enhancements in it. Image Service could let user upload/download images
+in a convinient way just by using Multicloud.
+
+
+Problem Description
+===================
+
+The original functions which Multicloud possesses are to use urls to upload images, while in this
+spec we intend to upload images as raw file which means it has to store a copy in Multicloud then
+upload the images to the backend openstack. So this spec is to extend multicloud to support
+download/upload images as raw file rather than a through a url
+
+
+Use Cases
+===================
+
+One typical use case is to allow users to upload/download images by Multicloud
+
+
+Proposed change
+===================
+
+The proposed change mainly means introducing glance python APIs to enable multicloud support openstack
+image service. This feature needs two changes: Upload API to import an image to backend OpenStack
+and the image that just imported can be queried from MultiCloud. Download API to download an image
+from backend Openstack and the image can be downloaded from MultiCloud.
+
+The eventual work flow looks like as follows:
+
+             user request to upload image
+                        |
+                        V
+              +------------------+
+              |                  |
+              |  image file(iso, |
+              |   vmdk... )      |
+              |                  |
+              +---------+--------+
+                        |
+                        |
+                        |
+            +-----------|----------+
+            | multicloud|          |
+            |           V          |
+            | +------------------+ |
+            | | image service API| |
+            | +---------+--------+ |
+            +-----------|----------+
+                        | glance
+                        |
+                        V
+            +----------------------+
+            | openstack            |
+            +----------------------+
+
+The APIs look like this:
+
+upload:
+
+Input of /{vimid}/{tenantid}/images/file  will be
+
+::
+  required: image file
+  {
+    "imageType": string,  // image type: ami, ari, aki, vhd, vhdx, vmdk, raw, qcow2, vdi, iso
+    "containerFormat": string,  // image container format: ami, ari, aki, bare, ovf, ova, docker
+    "visibility": string,  // public, private, shared, or community
+    "properties": arrary // list of properties
+  }
+
+Output of upload_image will be
+
+::
+  "responses": {
+    "201": {
+        "description": "upload successfully",
+    },
+    "404": {
+        "description": "the vim id or tenant UUID is wrong"
+    },
+    "500": {
+        "description": "the vim image is not accessable"
+    }
+
+download:
+
+Input of /{vimid}/{tenantid}/images/file/{imageid}  will be
+
+::
+  {
+    "imagepath": string,  // the path of the downloaded image
+    "properties": arrary // list of properties
+  }
+
+Output of download_image will be
+
+::
+  "responses": {
+    "200": {
+        "description": "download successfully",
+    },
+    "404": {
+        "description": "the vim id or tenant UUID is wrong"
+    },
+    "500": {
+        "description": "the vim image is not accessable"
+    }