[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