1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-21 14:50:08 +03:00

Task #983: Update Sunstone template creation to reference images and vnets by NAME and UNAME.

Additionally, the select options are no longer stored in global variables. Select options should be dynamically generated when needed. In the template creation case, this is done when the dialog is opened.

Also, increased width for the Vnet list and Image list, so more options can be seen.
(cherry picked from commit 8c1eecfce4dc0d5b7153f3888df63684e8228fb1)
This commit is contained in:
Hector Sanjuan 2011-11-16 13:27:03 +01:00 committed by Ruben S. Montero
parent 276e4bdf4b
commit 2c0d240196
4 changed files with 52 additions and 51 deletions

View File

@ -203,7 +203,6 @@ var update_image_tmpl =
</fieldset>\
</form>';
var images_select = "";
var dataTable_images;
var $create_image_dialog;
@ -537,40 +536,22 @@ function imageInfoListener(){
});
}
//Updates the select input field with an option for each image
function updateImageSelect(){
images_select =
makeSelectOptions(dataTable_images,
1,
4,
[9,9,9],
["DISABLED","LOCKED","ERROR"]
);
//update static selectors:
//in the VM section
$('div.vm_section#disks select#IMAGE_ID', $create_template_dialog).html(images_select);
}
// Callback to update an element in the dataTable
function updateImageElement(request, image_json){
var id = image_json.IMAGE.ID;
var element = imageElementArray(image_json);
updateSingleElement(element,dataTable_images,'#image_'+id);
updateImageSelect();
}
// Callback to remove an element from the dataTable
function deleteImageElement(req){
deleteElement(dataTable_images,'#image_'+req.request.data);
updateImageSelect();
}
// Callback to add an image element
function addImageElement(request, image_json){
var element = imageElementArray(image_json);
addElement(element,dataTable_images);
updateImageSelect();
}
// Callback to refresh the list of images
@ -582,7 +563,6 @@ function updateImagesView(request, images_list){
});
updateView(image_list_array,dataTable_images);
updateImageSelect();
updateDashboard("images",images_list);
}

View File

@ -195,9 +195,10 @@ var create_template_tmpl = '<div id="template_create_tabs">\
<div class="clear"></div>\
<div class="vm_param kvm xen vmware add_image">\
<label for="IMAGE">Image:</label>\
<select type="text" id="IMAGE_ID" name="image_id">\
<select type="text" id="IMAGE" name="image">\
</select>\
<div class="tip">Name of the image to use</div>\
<input type="hidden" id="IMAGE_UNAME" name="image_uname" value=""/>\
</div>\
<div class="vm_param kvm_opt xen_opt vmware_opt">\
<label for="BUS">Bus:</label>\
@ -267,7 +268,7 @@ var create_template_tmpl = '<div id="template_create_tabs">\
<button class="add_remove_button" id="remove_disk_button" value="remove_disk">Remove selected</button>\
<div class="clear"></div>\
<label style="" for="disks_box">Current disks:</label>\
<select id="disks_box" name="disks_box" style="height:100px;" multiple>\
<select id="disks_box" name="disks_box" style="height:100px;width:350px" multiple>\
</select>\
<div class="clear"></div>\
</div>\
@ -292,9 +293,10 @@ var create_template_tmpl = '<div id="template_create_tabs">\
<div class="clear"></div>\
<div class="vm_param kvm xen vmware network">\
<label for="NETWORK">Network:</label>\
<select type="text" id="NETWORK_ID" name="network_id">\
<select type="text" id="NETWORK" name="network">\
</select>\
<div class="tip">Name of the network to attach this device</div>\
<input type="hidden" id="NETWORK_UNAME" name="network_uname" value=""/>\
</div>\
<div class="vm_param kvm_opt xen_opt niccfg network">\
<label for="IP">IP:</label>\
@ -378,7 +380,7 @@ var create_template_tmpl = '<div id="template_create_tabs">\
<button class="add_remove_button" id="remove_nic_button" value="remove_nic">Remove selected</button>\
<div class="clear"></div>\
<label for="nics_box">Current NICs:</label>\
<select id="nics_box" name="nics_box" style="height:100px;" multiple>\
<select id="nics_box" name="nics_box" style="height:100px;width:350px" multiple>\
</select>\
</div>\
</fieldset>\
@ -985,12 +987,6 @@ function setupCreateTemplateDialog(){
$(section_inputs).hide();
$(section_graphics).hide();
//Repopulate images select
$('select#IMAGE_ID',section_disks).html(images_select);
//Repopulate network select
$('select#NETWORK_ID',section_networks).html(vnetworks_select);
switch(ui.index){
case 0:
enable_kvm();
@ -1378,6 +1374,12 @@ function setupCreateTemplateDialog(){
return false;
});
//Auto-set IMAGE_UNAME hidden field value
$('#IMAGE', section_disks).change(function(){
var uname = getValue($(this).val(),4,2,dataTable_images);
$('input#IMAGE_UNAME',section_disks).val(uname);
});
//Depending on adding a disk or a image we need to show/hide
//different options and make then mandatory or not
$('#image_vs_disk input',section_disks).click(function(){
@ -1531,6 +1533,12 @@ function setupCreateTemplateDialog(){
return false;
});
//Auto-set IMAGE_UNAME hidden field value
$('#NETWORK', section_networks).change(function(){
var uname = getValue($(this).val(),4,2,dataTable_vNetworks);
$('input#NETWORK_UNAME',section_networks).val(uname);
});
//Depending on adding predefined network or not we show/hide
//some fields
$('#network_vs_niccfg input',section_networks).click(function(){
@ -1970,6 +1978,23 @@ function setupCreateTemplateDialog(){
}
function popUpCreateTemplateDialog(){
//Repopulate images select
var im_sel = makeSelectOptions(dataTable_images,
4, //id col - trick -> reference by name!
4, //name col
[10,10,10],
["DISABLED","LOCKED","ERROR"]
);
$('div#disks select#IMAGE',$create_template_dialog).html(im_sel);
//Repopulate network select
var vn_sel = makeSelectOptions(dataTable_vNetworks,
4, //id col - trick -> reference by name!
4,
[],
[]
);
$('div#networks select#NETWORK',$create_template_dialog).html(vn_sel);
$create_template_dialog.dialog('open');
};

View File

@ -159,7 +159,6 @@ var update_vnet_tmpl =
</fieldset>\
</form>';
var vnetworks_select="";
var dataTable_vNetworks;
var $create_vn_dialog;
var $lease_vn_dialog;
@ -451,40 +450,22 @@ function vNetworkInfoListener(){
});
}
//updates the vnet select different options
function updateNetworkSelect(){
vnetworks_select=
makeSelectOptions(dataTable_vNetworks,
1,
4,
[],
[]
);
//update static selectors:
//in the VM creation dialog
$('div.vm_section#networks select#NETWORK_ID',$create_template_dialog).html(vnetworks_select);
}
//Callback to update a vnet element after an action on it
function updateVNetworkElement(request, vn_json){
id = vn_json.VNET.ID;
element = vNetworkElementArray(vn_json);
updateSingleElement(element,dataTable_vNetworks,'#vnetwork_'+id);
updateNetworkSelect();
}
//Callback to delete a vnet element from the table
function deleteVNetworkElement(req){
deleteElement(dataTable_vNetworks,'#vnetwork_'+req.request.data);
updateNetworkSelect();
}
//Callback to add a new element
function addVNetworkElement(request,vn_json){
var element = vNetworkElementArray(vn_json);
addElement(element,dataTable_vNetworks);
updateNetworkSelect();
}
//updates the list of virtual networks
@ -496,7 +477,6 @@ function updateVNetworksView(request, network_list){
});
updateView(network_list_array,dataTable_vNetworks);
updateNetworkSelect();
//dependency with dashboard
updateDashboard("vnets",network_list);

View File

@ -420,8 +420,24 @@ function getName(id,dataTable){
}
});
return name;
}
};
//Search a datatable record matching the filter_str in the filter_col. Returns
//the value of that record in the desired value column.
function getValue(filter_str,filter_col,value_col,dataTable){
var value="";
if (typeof(dataTable) == "undefined") return value;
var nodes = dataTable.fnGetData();
$.each(nodes,function(){
if (filter_str == this[filter_col]){
value = this[value_col];
return false;
};
});
return value;
};
//Replaces all class"tip" divs with an information icon that
//displays the tip information on mouseover.