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(a)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