[Kimchi-devel] [RFC] ISO pool: Support to download ISO from URL
Crístian Viana
vianac at linux.vnet.ibm.com
Tue Aug 19 00:42:52 UTC 2014
The following API changes should be made to implement the remote
download ISO feature:
1) POST /storagepools/ISO/storagevolumes/download {'url':
<http|https|ftp|ftps>, 'name': <volume name>}
Description: Starts downloading a remote ISO image to Kimchi's
storage pool.
Parameters:
'url': specifies where the image is hosted. Required.
'name': specifies the name of the local file when the download
finishes. If this parameter is omitted, Kimchi will try to use the same
file name as the remote file. Optional.
Return codes:
200: the remote URL is valid and the download started successfully.
400: the remote URL is not valid;
the provided 'name' is already in use (this error
shouldn't happen if 'name' is omitted).
the storage pool doesn't have enough free space to hold
the remote file.
Return data:
{'name': <vol-name>}
2) POST /storagepools/ISO/storagevolumes/download/pause {'name': <volume
name>}
Description: Pauses a remote ISO download.
Parameters:
'name': the remote volume name to be paused. Required.
Return codes:
200: 'name' is an ongoing download file and the operation was paused
successfully.
400: 'name' is an invalid volume name (doesn't exist / isn't an ongoing
download);
download referred by 'name' cannot be paused.
Return data:
{}
3) POST /storagepools/ISO/storagevolumes/download/resume {'name':
<volume name>}
Description: Resumes a paused remote ISO download.
Parameters:
'name': the remote volume name to be resumed. Required.
Return codes:
200: 'name' is a paused download file and the operation was resumed
successfully.
400: 'name' is an invalid volume name (doesn't exist / isn't a paused
download).
Return data:
{}
4) POST /storagepools/ISO/storagevolumes/download/cancel {'name':
<volume name>}
Description: Cancels a remote ISO download.
Parameters:
'name': the remote volume name to be canceled. Required.
Return codes:
200: 'name' is an ongoing download file and the operation was canceled
successfully. Whatever data has been downloaded so far should be deleted.
400: 'name' is an invalid volume name (doesn't exist / isn't an ongoing
download).
Return data:
{}
5) POST /storagepools/ISO/storagevolumes/download/status {'name':
<volume name>}
Description: Provides status of a remote ISO download.
Parameters:
'name': the remote volume name. Required.
Return codes:
200: 'name' is a download file and its status information was returned
successfully.
400: 'name' is an invalid volume name (doesn't exist / isn't a remote
download).
Return data:
{'name': <volume name>, 'status': [downloading|paused], 'total_size':
<size in bytes>, 'downloaded_size': <size in bytes>}
I tried to put together the feedback given in another e-mail thread,
especially by Aline, Royce and Yu Xin Huo, along with some ideas of my
own. This RFC doesn't support choosing a different storage pool other
than "ISO" to host the downloaded files. If we're doing this, wel need
to update this new API accordingly.
The implementation details will be discussed later.
Please share your feedback with us.
More information about the Kimchi-devel
mailing list