[Kimchi-devel] [PATCH V2 7/7] (WIP) Storagepool SCSI/FC: Draft UI to allow user to select a LUN to new VM

Aline Manera alinefm at linux.vnet.ibm.com
Thu Jan 30 14:19:51 UTC 2014


On 01/28/2014 07:59 PM, Rodrigo Trujillo wrote:
> On 01/25/2014 09:57 PM, Aline Manera wrote:
>> On 01/23/2014 10:30 PM, Rodrigo Trujillo wrote:
>>> This patch implements the UI functions and API calls until show to user
>>> the list of volumes (LUNs) of a SCSI FC storagepools. The user can then
>>> select the LUN when creating a new VM.
>>> This patch is a draft and gives the steps of the functionality, missing
>>> only the final selection window and function to get the proper selected
>>> value from it.
>>>
>>> Signed-off-by: Rodrigo Trujillo <rodrigo.trujillo at linux.vnet.ibm.com>
>>> ---
>>>   ui/js/src/kimchi.api.js            | 13 +++++++++++++
>>>   ui/js/src/kimchi.guest_add_main.js | 32 
>>> ++++++++++++++++++++++++++++++++
>>>   2 files changed, 45 insertions(+)
>>>
>>> diff --git a/ui/js/src/kimchi.api.js b/ui/js/src/kimchi.api.js
>>> index 66fc41e..4597c5d 100644
>>> --- a/ui/js/src/kimchi.api.js
>>> +++ b/ui/js/src/kimchi.api.js
>>> @@ -155,6 +155,19 @@ var kimchi = {
>>>           });
>>>       },
>>>
>>> +    /*
>>> +    *   Retrieve the information of a storage pool by the given name.
>>> +    */
>>> +    retrieveStoragePool : function(storagePoolName, suc, err) {
>>> +        kimchi.requestJSON({
>>> +            url : kimchi.url + "storagepools/" +
>>> +                  encodeURIComponent(storagePoolName),
>>> +            type : 'GET',
>>> +            contentType : 'application/json',
>>> +            dataType : 'json'
>>> +        }).done(suc);
>>> +    },
>>> +
>>>       /**
>>>        * Retrieve the information of a template by the given name.
>>>        */
>>> diff --git a/ui/js/src/kimchi.guest_add_main.js 
>>> b/ui/js/src/kimchi.guest_add_main.js
>>> index 2085562..ab731fb 100644
>>> --- a/ui/js/src/kimchi.guest_add_main.js
>>> +++ b/ui/js/src/kimchi.guest_add_main.js
>>> @@ -65,6 +65,38 @@ kimchi.guest_add_main = function() {
>>>       var addGuest = function(event) {
>>>           var formData = $('#form-vm-add').serializeObject();
>>>
>>> +        // Checking if need to ask LUN to user
>>> +        var templateName = formData.template.substring(11);
>>> +        kimchi.retrieveTemplate(templateName, function(templateInfo) {
>>> +            if (templateInfo) {
>>
>> Is there a case the template info won't be available?
>
> From the UI, I don't think so. But, someone consuming the API could 
> pass a wrong template name.

If the user uses the API directly it won't pass thought JS code, right?

> Or the template could be removed. Just code resilience, this is not bad.
>
>>
>>> +                var poolName = templateInfo.storagepool.substring(14);
>>> +                kimchi.retrieveStoragePool(poolName, 
>>> function(poolInfo){
>>> +                    if (poolInfo.type     !==         "scsi") {
>>
>> It should be for scsi pools, right? We don't need to show anything 
>> for other pools
> My bad! This was for testing purposes and forget to remove (should 
> have removed extra spaces too)
>
>>> + kimchi.listStorageVolumes(poolInfo.name, function(lunsList) {
>>> +                            if (lunsList.length == 0) {
>>> +                                kimchi.message.error('There are not 
>>> volumes for this pool');
>>> +                                return false;
>>> +                            }
>>> +                            var popUpList = '<div class="field">';
>>> +                            // TODO
>>> +                            // Implement a better UI and retrieve
>>> +                            // the selected LUN from a popup window
>>> +                            $.each(lunsList, function(index, value) {
>>> +                                popUpList += '<div class=field> 
>>> <input type="radio" value="' + value.name + '" name="lun">' +
>>> +                                             '<label>' + value.name 
>>> + '</label></div>';
>>> +                            });
>>> +                            popUpList += '</div>';
>>> +                            myhtml = $(popUpList);
>>> +                            myhtml.dialog();
>>
>> I think we need to implement the UI, right?
>> It will show a ugly window
>>
>> Some UI export can look into it?
>>
>> Rodrigo, if you want to do the UI go ahead but make it completely.
>> Otherwise, remove this code and ask UI guys to do it.
>
> I asked for help in the same day.  Yu Xin Huo and Hongliang Wang 
> kindly answered (thanks), I am going to complete this UI in next 
> patch  =)
>
>>
>>> +                            // TODO / FIXME
>>> +                            // Retrieve the LUN name from here, 
>>> should come from window
>>> +                            var lunName = "selectedLun";
>>> +                            formData.volume = lunName;
>>> +                        });
>>> +                    }
>>> +                });
>>> +             }
>>> +        });
>>>           kimchi.createVM(formData, function() {
>>>               kimchi.listVmsAuto();
>>>               kimchi.window.close();
>>
>> _______________________________________________
>> Kimchi-devel mailing list
>> Kimchi-devel at ovirt.org
>> http://lists.ovirt.org/mailman/listinfo/kimchi-devel
>>
>
> _______________________________________________
> Kimchi-devel mailing list
> Kimchi-devel at ovirt.org
> http://lists.ovirt.org/mailman/listinfo/kimchi-devel
>




More information about the Kimchi-devel mailing list