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

Rodrigo Trujillo rodrigo.trujillo at linux.vnet.ibm.com
Fri Jan 24 00:30:00 UTC 2014


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) {
+                var poolName = templateInfo.storagepool.substring(14);
+                kimchi.retrieveStoragePool(poolName, function(poolInfo){
+                    if (poolInfo.type     !==         "scsi") {
+                        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();
+                            // 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();
-- 
1.8.4.2




More information about the Kimchi-devel mailing list