
On 22/04/2015 05:02, lvroyce@linux.vnet.ibm.com wrote:
From: Royce Lv <lvroyce@linux.vnet.ibm.com>
Volume upload will use the same REST api as 'capacity' type when creating storage volume. Following data transfer is implemented by several storage volume update: POST /storagepools/<pool-name>/storagevolumes/ {"capacity": 1000000, "format": "raw", "name": "volume-1"} PUT /storagepools/<pool-name>/storagevolumes/volume-1 {"index": "0", "chunk_size": "1024", "chunk": form-data} PUT /storagepools/<pool-name>/storagevolumes/volume-1 {"index": "1", "chunk_size": "1024", "chunk": form-data} ... PUT /storagepools/<pool-name>/storagevolumes/volume-1 {"index": "1024", "chunk_size": "1024", "chunk": form-data}
Signed-off-by: Royce Lv <lvroyce@linux.vnet.ibm.com> --- docs/API.md | 7 +++++-- src/kimchi/API.json | 22 ++++++++++++++++++++++ src/kimchi/i18n.py | 1 + 3 files changed, 28 insertions(+), 2 deletions(-)
diff --git a/docs/API.md b/docs/API.md index 3f7925f..2e71989 100644 --- a/docs/API.md +++ b/docs/API.md @@ -474,14 +474,13 @@ A interface represents available network interface on VM. in the defined Storage Pool * **POST**: Create a new Storage Volume in the Storage Pool The return resource is a task resource * See Resource: Task * - Only one of 'file', 'capacity', 'url' can be specified. + Only one of 'capacity', 'url' can be specified. * name: The name of the Storage Volume * capacity: The total space which can be used to store volumes The unit is bytes * format: The format of the defined Storage Volume. Only used when creating a storage volume with 'capacity'. * file: File to be uploaded, passed through form data - * url: URL to be downloaded
### Resource: Storage Volume
@@ -508,6 +507,10 @@ A interface represents available network interface on VM.
* **DELETE**: Remove the Storage Volume * **POST**: *See Storage Volume Actions* +* **PUT**: Upload storage volume chunk + * index: Chunk index of the slice in file. + * chunk_size: Chunk size of the slice in Bytes. + * chunk: Actual data of uploaded file
**Actions (POST):**
diff --git a/src/kimchi/API.json b/src/kimchi/API.json index 474661c..9df1dc0 100644 --- a/src/kimchi/API.json +++ b/src/kimchi/API.json @@ -222,6 +222,28 @@ } } }, + "storagevolume_update": { + "type": "object", + "properties": { + "chunk": { + "description": "Upload storage volume chunk", + "required": true + },
'error' message is missing for 'chunk' parameter.
+ "index": { + "description": "Chunk index of uploaded storage volume", + "type": "string", + "error": "KCHVOL0024E", + "required": true + }, + "chunk_size": { + "description": "Chunk size of uploaded storage volume", + "type": "string", + "error": "KCHVOL0024E", + "required": true + } + }, + "additionalProperties": false + }, "vms_create": { "type": "object", "error": "KCHVM0016E", diff --git a/src/kimchi/i18n.py b/src/kimchi/i18n.py index c8986cf..c012a62 100644 --- a/src/kimchi/i18n.py +++ b/src/kimchi/i18n.py @@ -215,6 +215,7 @@ messages = { "KCHVOL0021E": _("Storage volume URL must be http://, https://, ftp:// or ftps://."), "KCHVOL0022E": _("Unable to access file %(url)s. Please, check it."), "KCHVOL0023E": _("Unable to clone storage volume '%(name)s' in pool '%(pool)s'. Details: %(err)s"),
+ "KCHVOL0024E": _("Upload volume chunk index, size and total size must be integer"),
'total size' is not in used for storage volume update. You should have the message according to it.
"KCHIFACE0001E": _("Interface %(name)s does not exist"),