diff options
Diffstat (limited to 'docs/specs')
-rw-r--r-- | docs/specs/multicloud_image_service.rst | 117 |
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" + } |