summaryrefslogtreecommitdiffstats
path: root/docs/specs
diff options
context:
space:
mode:
Diffstat (limited to 'docs/specs')
-rw-r--r--docs/specs/multicloud_image_service.rst117
1 files changed, 117 insertions, 0 deletions
diff --git a/docs/specs/multicloud_image_service.rst b/docs/specs/multicloud_image_service.rst
new file mode 100644
index 0000000..728d389
--- /dev/null
+++ b/docs/specs/multicloud_image_service.rst
@@ -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"
+ }