On 02/03/2014 10:18 AM, Aline Manera wrote:
On 02/03/2014 04:24 AM, Rodrigo Trujillo wrote:
Reference:
https://github.com/kimchi-project/kimchi/wiki/Todo-1.2
https://github.com/kimchi-project/kimchi/wiki/customize-VM


Royce has created the structure to add/list/lookup cdrom devices in the guests.
There is a patch in the list (still under revision) with the code:
" Kimchi-devel] [PATCH 0/5] cdrom: support add and query cdrom "

This RFC aims to continue the second part of this work and modify the API to
allow user to change (UPDATE/POST) attached cd ISOs and delete (DELETE) cdrom devices.
If necessary I can continue the Royces work.


Yeap! You will need to get Royce's patches, make the adjustments needed and resend the patch set.
ACK


Aline has suggested to use the API as  "/vms/<name>/storages" :
"""
. . .  Maybe we can use /vms/<name>/storages
That way we can use the same API to add/remove different kind of storages to the vm: cdrom, scsi disk, ide disk, etc ...
"""
This is the first decision here
(1) Use  api as follow ?
   (I propose to use API params to differentiate the storages, like '?type=cdrom')

   **URI:** /vms/*:name*/storages
   * **GET**: Retrieve all storages attached to the VM
   * **POST**: Attatch new storage to specified virtual machine.
       * name : The name of the storage in the VM.

The name would be the 'dev'? like hdc, sda, etc?

       * type: The type of the storage: cdrom, disk

       * path *(optional)*: Path of ISO or DISK.

Why path is optional? I think when adding a new storage to VM the user must specify to where it should point
This is true for hda, sda ... what about if the user wants to add an empty cdrom device in the guest ?
Thats the only case I can think now, to use an empty path (virt-manager allows this). But, for your
facility, we can make it required, so, user can only create a cdrom dev if he does has a ISO to attach.

 
   ### Sub-resource: storage
   **URI:** /vms/*:name*/storage/*:name*
   * **GET**: Retrieve the storage information
       * path: Path of the storage
       * type: Type of the storage

What about 'dev'?
ACK

   * **PUT**: Update storage information
       * name *(optional)*: The name of the storage in the VM.
       * path *(optional)*: Path of ISO or DISK.

We just use the notation "optional" for POST requests

In this case (PUT) we just list the parameters can be updated

                    
   * **DELETE**: Remove the storage

Examples:
UPDATE {'path': ''} /vms/vm-1/storage/cdrom-1--> to eject the iso

No! The path to the disk should never be empty
To eject a disk/cdrom, use DELETE request

UPDATE {'path': '/root/ubuntu.iso'} /vms/vm-1/storage/cdrom-1-->to change or insert a media
POST {'path':'abcd', 'bus': 'ide', 'name': 'cdrom-2'} /vms/vm-1/storage --> to attach a new cdrom

'bus'?? I didn't see any reference to it above

DELETE {} /vms/vm-1/cdroms/cdrom-1-->to detach a cdrom

(2) Should be possible to add and remove storages with the guest running ? (Like hot plug)
       Does libvirt provide this ?

It would be good to have. Need to check libvirt and so.
I am going to do this


(3) The new attached isos should be shown in the guests like changing a CD ?


I didn't understand that question.

(4) The specification mention tuning of the devices. Should tuning be always done in the background, or
allow users to specify tuning parameters ?


What tuning parameters are you talking about?
Not sure, I am in doubt too. I see Virt-manager has some performance and tunning parameters to set, like Cache/IO mode, read/write speeds, etc


Regards,

Rodrigo Trujillo


_______________________________________________
Kimchi-devel mailing list
Kimchi-devel@ovirt.org
http://lists.ovirt.org/mailman/listinfo/kimchi-devel



_______________________________________________
Kimchi-devel mailing list
Kimchi-devel@ovirt.org
http://lists.ovirt.org/mailman/listinfo/kimchi-devel