
On 2014年08月20日 03:17, Aline Manera wrote:
On 08/19/2014 04:03 PM, Crístian Viana wrote:
On 19-08-2014 13:53, Crístian Viana wrote:
On 19-08-2014 10:49, Aline Manera wrote:
Just one more comment along the others made by Royce.
Yes - download and upload functionality will be available to all pools.
Ok! So I'll update the RFC to support multiple storage pools and to use the Tasks API to handle the pause/resume/cancel operations.
Well, Aline and I found a problem with this proposal. Currently, the REST API always redirects "POST" requests in a Collection to the function "<colletion-name>_create". In our case, if we send "POST /storagepools/<pool-name>/storagevolumes/download", that would be redirected to the backend function "storagevolumes_create". There is no way to redirect those requests to different functions (like, ideally, "storagevolumes_download" and "storagevolumes_upload").
So I see two options from here:
1) Use the first API proposed by Aline: "POST /storagepools/<pool-name>/storagevolumes". By looking at the parameters (i.e. whether 'url' starts with "file://" or "[http|ftp]://") we can tell if the operation is download or upload.
We can use "url" for download and "file" for upload.
if "url" in params.keys(): self.download() elif "file" in params.keys(): self.upload()
2) Remodel the control code to support multiple actions when POST'ing to a Collection.
It will not be possible as we expect to have an resource id instead of an action name. To be able to do it we should treat the action name as a reserved name to avoid having a id and action with the same name
# This is a resource named "upload" /storagepools/upload
# This is an action upload on storagepools collection /storagepools/upload
I strongly suggest to adopt option 1. The if/else will not be a big deal as we can do the functions self contained for easy maintenance.
Yeah, I realize this is an error which actions are always on resource, not on collection, so if we want to adopt this, the API will be: POST /storagepools/pool-name/upload {parameter} I think this would be proper. What do you think?