From e4fccab0a1c50f7c16f146b7ae9edfdaf40a5b05 Mon Sep 17 00:00:00 2001 From: Jessica Wang Date: Tue, 23 Aug 2011 10:44:24 -0700 Subject: [PATCH] cloudStack - sync instance.js from 2.2.y branch to master branch. --- ui/scripts/cloud.core.instance.js | 2789 ++++++++++++++--------------- 1 file changed, 1393 insertions(+), 1396 deletions(-) diff --git a/ui/scripts/cloud.core.instance.js b/ui/scripts/cloud.core.instance.js index 384d2189b29..ee3d71358c6 100755 --- a/ui/scripts/cloud.core.instance.js +++ b/ui/scripts/cloud.core.instance.js @@ -16,100 +16,100 @@ * */ -function vmGetSearchParams() { - var moreCriteria = []; - - var searchInput = $("#basic_search").find("#search_input").val(); - if (searchInput != null && searchInput.length > 0) { - moreCriteria.push("&keyword="+todb(searchInput)); - } - - var $advancedSearchPopup = getAdvancedSearchPopupInSearchContainer(); - if ($advancedSearchPopup.length > 0 && $advancedSearchPopup.css("display") != "none" ) { - if($advancedSearchPopup.find("#adv_search_state").length > 0) { - var state = $advancedSearchPopup.find("#adv_search_state").val(); - if (state!=null && state.length > 0) - moreCriteria.push("&state="+todb(state)); - } - - var zone = $advancedSearchPopup.find("#adv_search_zone").val(); - if (zone!=null && zone.length > 0) - moreCriteria.push("&zoneid="+todb(zone)); - - if ($advancedSearchPopup.find("#adv_search_domain_li").css("display") != "none" - && $advancedSearchPopup.find("#domain").hasClass("textwatermark") == false) { - var domainName = $advancedSearchPopup.find("#domain").val(); - if (domainName != null && domainName.length > 0) { - var domainId; - if(autoCompleteDomains != null && autoCompleteDomains.length > 0) { - for(var i=0; i < autoCompleteDomains.length; i++) { - if(fromdb(autoCompleteDomains[i].name).toLowerCase() == domainName.toLowerCase()) { - domainId = autoCompleteDomains[i].id; - break; - } - } - } - if(domainId == null) { - showError(false, $advancedSearchPopup.find("#domain"), $advancedSearchPopup.find("#domain_errormsg"), g_dictionary["label.not.found"]); - } - else { //e.g. domainId == 5 (number) - showError(true, $advancedSearchPopup.find("#domain"), $advancedSearchPopup.find("#domain_errormsg"), null) - moreCriteria.push("&domainid="+todb(domainId)); - } - } - } - - if ($advancedSearchPopup.find("#adv_search_account_li").css("display") != "none" - && $advancedSearchPopup.find("#adv_search_account").hasClass("textwatermark") == false) { - var account = $advancedSearchPopup.find("#adv_search_account").val(); - if(account != null && account.length > 0) - moreCriteria.push("&account="+todb(account)); - } - } - - return moreCriteria.join(""); -} -function instanceBuildSubMenu() { +function vmGetSearchParams() { + var moreCriteria = []; + + var searchInput = $("#basic_search").find("#search_input").val(); + if (searchInput != null && searchInput.length > 0) { + moreCriteria.push("&keyword="+todb(searchInput)); + } + + var $advancedSearchPopup = getAdvancedSearchPopupInSearchContainer(); + if ($advancedSearchPopup.length > 0 && $advancedSearchPopup.css("display") != "none" ) { + if($advancedSearchPopup.find("#adv_search_state").length > 0) { + var state = $advancedSearchPopup.find("#adv_search_state").val(); + if (state!=null && state.length > 0) + moreCriteria.push("&state="+todb(state)); + } + + var zone = $advancedSearchPopup.find("#adv_search_zone").val(); + if (zone!=null && zone.length > 0) + moreCriteria.push("&zoneid="+todb(zone)); + + if ($advancedSearchPopup.find("#adv_search_domain_li").css("display") != "none" + && $advancedSearchPopup.find("#domain").hasClass("textwatermark") == false) { + var domainName = $advancedSearchPopup.find("#domain").val(); + if (domainName != null && domainName.length > 0) { + var domainId; + if(autoCompleteDomains != null && autoCompleteDomains.length > 0) { + for(var i=0; i < autoCompleteDomains.length; i++) { + if(fromdb(autoCompleteDomains[i].name).toLowerCase() == domainName.toLowerCase()) { + domainId = autoCompleteDomains[i].id; + break; + } + } + } + if(domainId == null) { + showError(false, $advancedSearchPopup.find("#domain"), $advancedSearchPopup.find("#domain_errormsg"), g_dictionary["label.not.found"]); + } + else { //e.g. domainId == 5 (number) + showError(true, $advancedSearchPopup.find("#domain"), $advancedSearchPopup.find("#domain_errormsg"), null) + moreCriteria.push("&domainid="+todb(domainId)); + } + } + } + + if ($advancedSearchPopup.find("#adv_search_account_li").css("display") != "none" + && $advancedSearchPopup.find("#adv_search_account").hasClass("textwatermark") == false) { + var account = $advancedSearchPopup.find("#adv_search_account").val(); + if(account != null && account.length > 0) + moreCriteria.push("&account="+todb(account)); + } + } + + return moreCriteria.join(""); +} +function instanceBuildSubMenu() { if (isAdmin() || isDomainAdmin()) { - $("#leftmenu_instance_expandedbox").find("#leftmenu_instances_my_instances_container, #leftmenu_instances_all_instances_container, #leftmenu_instances_running_instances_container, #leftmenu_instances_stopped_instances_container, #leftmenu_instances_destroyed_instances_container ").show(); - } + $("#leftmenu_instance_expandedbox").find("#leftmenu_instances_my_instances_container, #leftmenu_instances_all_instances_container, #leftmenu_instances_running_instances_container, #leftmenu_instances_stopped_instances_container, #leftmenu_instances_destroyed_instances_container ").show(); + } else if(isUser()) { - $("#leftmenu_instance_expandedbox").find("#leftmenu_instances_all_instances_container, #leftmenu_instances_running_instances_container, #leftmenu_instances_stopped_instances_container").show(); + $("#leftmenu_instance_expandedbox").find("#leftmenu_instances_all_instances_container, #leftmenu_instances_running_instances_container, #leftmenu_instances_stopped_instances_container").show(); /* - $.ajax({ - cache: false, + $.ajax({ + cache: false, data: createURL("command=listInstanceGroups"), - dataType: "json", - success: function(json) { - $("#leftmenu_instance_group_container").empty(); - var instancegroups = json.listinstancegroupsresponse.instancegroup; - if(instancegroups!=null && instancegroups.length>0) { - for(var i=0; i < instancegroups.length; i++) { - instanceBuildSubMenu2(instancegroups[i].name, ("listVirtualMachines&groupid="+instancegroups[i].id)); - } - } - } + dataType: "json", + success: function(json) { + $("#leftmenu_instance_group_container").empty(); + var instancegroups = json.listinstancegroupsresponse.instancegroup; + if(instancegroups!=null && instancegroups.length>0) { + for(var i=0; i < instancegroups.length; i++) { + instanceBuildSubMenu2(instancegroups[i].name, ("listVirtualMachines&groupid="+instancegroups[i].id)); + } + } + } }); - */ - } -} - -function instanceBuildSubMenu2(label, commandString) { - var $newSubMenu = $("#leftmenu_secondindent_template").clone(); - $newSubMenu.find("#label").text(label); + */ + } +} + +function instanceBuildSubMenu2(label, commandString) { + var $newSubMenu = $("#leftmenu_secondindent_template").clone(); + $newSubMenu.find("#label").text(label); bindAndListMidMenuItems($newSubMenu, commandString, vmGetSearchParams, "listvirtualmachinesresponse", "virtualmachine", "jsp/instance.jsp", afterLoadInstanceJSP, vmToMidmenu, vmToRightPanel, getMidmenuId, true); - $("#leftmenu_instance_group_container").append($newSubMenu.show()); + $("#leftmenu_instance_group_container").append($newSubMenu.show()); } var $doTemplateNo, $doTemplateCustom,$doTemplateExisting, $soTemplate; var init = false; -var $selectedVmWizardTemplate; -var osTypeMap = {}; +var $selectedVmWizardTemplate; +var osTypeMap = {}; function afterLoadInstanceJSP() { - $("#right_panel_content").data("clearRightPanelFn", vmClearRightPanel); - - if (!init) { + $("#right_panel_content").data("clearRightPanelFn", vmClearRightPanel); + + if (!init) { //initialize VM Wizard $doTemplateNo = $("#vm_popup_disk_offering_template_no"); $doTemplateCustom = $("#vm_popup_disk_offering_template_custom"); @@ -136,61 +136,60 @@ function afterLoadInstanceJSP() { else { $("#tab_securitygroup").hide(); } - - // dialogs + + // dialogs initDialog("dialog_detach_iso_from_vm"); - initDialog("dialog_attach_iso"); + initDialog("dialog_attach_iso"); initDialog("dialog_change_service_offering", 600); - initDialog("dialog_create_template_from_vm", 400); + initDialog("dialog_create_template_from_vm", 400); initDialog("dialog_create_template_from_volume", 400); - initDialog("dialog_migrate_instance", 600); + initDialog("dialog_migrate_instance", 600); initDialog("dialog_confirmation_stop_vm"); var $dialogStopVm = $("#dialog_confirmation_stop_vm"); if(isAdmin()) { $dialogStopVm.find("#force_stop_instance_container").show(); } - - $.ajax({ - data: createURL("command=listOsTypes"), - dataType: "json", - async: false, - success: function(json) { - types = json.listostypesresponse.ostype; + + $.ajax({ + data: createURL("command=listOsTypes"), + dataType: "json", + async: false, + success: function(json) { + types = json.listostypesresponse.ostype; var osTypeDropdown1 = $("#right_panel_content").find("#tab_content_details").find("#ostypename_edit").empty(); - var osTypeDropdown2 = $("#dialog_create_template_from_vm #create_template_os_type").empty(); - var osTypeDropdown3 = $("#dialog_create_template_from_volume #create_template_os_type").empty(); - if (types != null && types.length > 0) { - for (var i = 0; i < types.length; i++) { - osTypeMap[types[i].id] = fromdb(types[i].description); - var html = ""; - osTypeDropdown1.append(html); + var osTypeDropdown2 = $("#dialog_create_template_from_vm #create_template_os_type").empty(); + var osTypeDropdown3 = $("#dialog_create_template_from_volume #create_template_os_type").empty(); + if (types != null && types.length > 0) { + for (var i = 0; i < types.length; i++) { + osTypeMap[types[i].id] = fromdb(types[i].description); + var html = ""; + osTypeDropdown1.append(html); osTypeDropdown2.append(html); - osTypeDropdown3.append(html); - } - } - } - }); -} - - + osTypeDropdown3.append(html); + } + } + } + }); +} + function bindStartVMButton() { $("#start_vm_button").bind("click", function(event) { - var itemCounts = 0; - for(var id in selectedItemsInMidMenu) { - itemCounts ++; - } - if(itemCounts == 0) { - $("#dialog_info_please_select_one_item_in_middle_menu").dialog("open"); - return false; - } - - $("#dialog_confirmation") - .text(dictionary["message.action.start.instance"]) - .dialog('option', 'buttons', { - "Confirm": function() { - $(this).dialog("close"); - + var itemCounts = 0; + for(var id in selectedItemsInMidMenu) { + itemCounts ++; + } + if(itemCounts == 0) { + $("#dialog_info_please_select_one_item_in_middle_menu").dialog("open"); + return false; + } + + $("#dialog_confirmation") + .text(dictionary["message.action.start.instance"]) + .dialog('option', 'buttons', { + "Confirm": function() { + $(this).dialog("close"); + var apiInfo = { label: "label.action.start.instance", isAsyncJob: true, @@ -201,42 +200,42 @@ function bindStartVMButton() { vmToMidmenu(jsonObj, $midmenuItem1); if(jsonObj.id.toString() == $("#right_panel_content #tab_content_details").find("#id").text()) vmToRightPanel($midmenuItem1); - } - } - - for(var id in selectedItemsInMidMenu) { - var apiCommand = "command=startVirtualMachine&id="+id; - doActionToMidMenu(id, apiInfo, apiCommand); - } - - selectedItemsInMidMenu = {}; //clear selected items for action - }, - "Cancel": function() { - $(this).dialog("close"); - - } - }).dialog("open"); - + } + } + + for(var id in selectedItemsInMidMenu) { + var apiCommand = "command=startVirtualMachine&id="+id; + doActionToMidMenu(id, apiInfo, apiCommand); + } + + selectedItemsInMidMenu = {}; //clear selected items for action + }, + "Cancel": function() { + $(this).dialog("close"); + + } + }).dialog("open"); + return false; }); -} - +} + function bindStopVMButton() { $("#stop_vm_button").bind("click", function(event) { - var itemCounts = 0; - for(var id in selectedItemsInMidMenu) { - itemCounts ++; - } - if(itemCounts == 0) { - $("#dialog_info_please_select_one_item_in_middle_menu").dialog("open"); - return false; - } - - $("#dialog_confirmation_stop_vm") - .dialog('option', 'buttons', { - "Confirm": function() { - $(this).dialog("close"); - + var itemCounts = 0; + for(var id in selectedItemsInMidMenu) { + itemCounts ++; + } + if(itemCounts == 0) { + $("#dialog_info_please_select_one_item_in_middle_menu").dialog("open"); + return false; + } + + $("#dialog_confirmation_stop_vm") + .dialog('option', 'buttons', { + "Confirm": function() { + $(this).dialog("close"); + var apiInfo = { label: "label.action.stop.instance", isAsyncJob: true, @@ -247,45 +246,45 @@ function bindStopVMButton() { vmToMidmenu(jsonObj, $midmenuItem1); if(jsonObj.id.toString() == $("#right_panel_content #tab_content_details").find("#id").text()) vmToRightPanel($midmenuItem1); - } - } + } + } var isForced = $("#dialog_confirmation_stop_vm").find("#force_stop_instance").attr("checked").toString(); - - for(var id in selectedItemsInMidMenu) { - var apiCommand = "command=stopVirtualMachine&id="+id+"&forced="+isForced; - doActionToMidMenu(id, apiInfo, apiCommand); - } - - selectedItemsInMidMenu = {}; //clear selected items for action - }, - "Cancel": function() { - $(this).dialog("close"); - - } - }).dialog("open"); - + + for(var id in selectedItemsInMidMenu) { + var apiCommand = "command=stopVirtualMachine&id="+id+"&forced="+isForced; + doActionToMidMenu(id, apiInfo, apiCommand); + } + + selectedItemsInMidMenu = {}; //clear selected items for action + }, + "Cancel": function() { + $(this).dialog("close"); + + } + }).dialog("open"); + return false; - }); -} - + }); +} + function bindRebootVMButton() { $("#reboot_vm_button").bind("click", function(event) { - var itemCounts = 0; - for(var id in selectedItemsInMidMenu) { - itemCounts ++; - } - if(itemCounts == 0) { - $("#dialog_info_please_select_one_item_in_middle_menu").dialog("open"); - return false; - } - - $("#dialog_confirmation") - .text(dictionary["message.action.reboot.instance"]) - .dialog('option', 'buttons', { - "Confirm": function() { - $(this).dialog("close"); - + var itemCounts = 0; + for(var id in selectedItemsInMidMenu) { + itemCounts ++; + } + if(itemCounts == 0) { + $("#dialog_info_please_select_one_item_in_middle_menu").dialog("open"); + return false; + } + + $("#dialog_confirmation") + .text(dictionary["message.action.reboot.instance"]) + .dialog('option', 'buttons', { + "Confirm": function() { + $(this).dialog("close"); + var apiInfo = { label: "label.action.reboot.instance", isAsyncJob: true, @@ -296,43 +295,43 @@ function bindRebootVMButton() { vmToMidmenu(jsonObj, $midmenuItem1); if(jsonObj.id.toString() == $("#right_panel_content #tab_content_details").find("#id").text()) vmToRightPanel($midmenuItem1); - } - } - - for(var id in selectedItemsInMidMenu) { - var apiCommand = "command=rebootVirtualMachine&id="+id; - doActionToMidMenu(id, apiInfo, apiCommand); - } - - selectedItemsInMidMenu = {}; //clear selected items for action - }, - "Cancel": function() { - $(this).dialog("close"); - - } - }).dialog("open"); - + } + } + + for(var id in selectedItemsInMidMenu) { + var apiCommand = "command=rebootVirtualMachine&id="+id; + doActionToMidMenu(id, apiInfo, apiCommand); + } + + selectedItemsInMidMenu = {}; //clear selected items for action + }, + "Cancel": function() { + $(this).dialog("close"); + + } + }).dialog("open"); + return false; - }); -} - + }); +} + function bindDestroyVMButton() { $("#destroy_vm_button").bind("click", function(event) { - var itemCounts = 0; - for(var id in selectedItemsInMidMenu) { - itemCounts ++; - } - if(itemCounts == 0) { - $("#dialog_info_please_select_one_item_in_middle_menu").dialog("open"); - return false; - } - - $("#dialog_confirmation") - .text(dictionary["message.action.destroy.instance"]) - .dialog('option', 'buttons', { - "Confirm": function() { - $(this).dialog("close"); - + var itemCounts = 0; + for(var id in selectedItemsInMidMenu) { + itemCounts ++; + } + if(itemCounts == 0) { + $("#dialog_info_please_select_one_item_in_middle_menu").dialog("open"); + return false; + } + + $("#dialog_confirmation") + .text(dictionary["message.action.destroy.instance"]) + .dialog('option', 'buttons', { + "Confirm": function() { + $(this).dialog("close"); + var apiInfo = { label: "label.action.destroy.instance", isAsyncJob: true, @@ -343,362 +342,362 @@ function bindDestroyVMButton() { vmToMidmenu(jsonObj, $midmenuItem1); if(jsonObj.id.toString() == $("#right_panel_content #tab_content_details").find("#id").text()) vmToRightPanel($midmenuItem1); - } - } - - for(var id in selectedItemsInMidMenu) { - var apiCommand = "command=destroyVirtualMachine&id="+id; - doActionToMidMenu(id, apiInfo, apiCommand); - } - - selectedItemsInMidMenu = {}; //clear selected items for action - }, - "Cancel": function() { - $(this).dialog("close"); - - } - }).dialog("open"); - + } + } + + for(var id in selectedItemsInMidMenu) { + var apiCommand = "command=destroyVirtualMachine&id="+id; + doActionToMidMenu(id, apiInfo, apiCommand); + } + + selectedItemsInMidMenu = {}; //clear selected items for action + }, + "Cancel": function() { + $(this).dialog("close"); + + } + }).dialog("open"); + return false; - }); -} + }); +} var currentPageInTemplateGridInVmPopup =1; var selectedTemplateTypeInVmPopup; //selectedTemplateTypeInVmPopup will be set to "featured" when new VM dialog box opens var vmPopupTemplatePageSize = 6; //max number of templates in VM wizard -var currentStepInVmPopup = 1; -function initVMWizard() { - $vmPopup = $("#vm_popup"); +var currentStepInVmPopup = 1; +function initVMWizard() { + $vmPopup = $("#vm_popup"); //$vmPopup.draggable(); - + if (isAdmin() || (getUserPublicTemplateEnabled() == "true")) { $vmPopup.find("#wiz_community").show(); } else { $vmPopup.find("#wiz_community").hide(); - } - - $("#add_vm_button").unbind("click").bind("click", function(event) { - vmWizardOpen(); - $.ajax({ - data: createURL("command=listZones&available=true"), - dataType: "json", - success: function(json) { - var zones = json.listzonesresponse.zone; - var $zoneSelect = $vmPopup.find("#wizard_zone").empty(); - if (zones != null && zones.length > 0) { + } + + $("#add_vm_button").unbind("click").bind("click", function(event) { + vmWizardOpen(); + $.ajax({ + data: createURL("command=listZones&available=true"), + dataType: "json", + success: function(json) { + var zones = json.listzonesresponse.zone; + var $zoneSelect = $vmPopup.find("#wizard_zone").empty(); + if (zones != null && zones.length > 0) { for (var i = 0; i < zones.length; i++) { $zone = $(""); - $zone.data("zoneObj", zones[i]); - $zoneSelect.append($zone); - } - } - $zoneSelect.change(); - listTemplatesInVmPopup(); - } - }); - - $.ajax({ - data: createURL("command=listSecurityGroups"+"&domainid="+g_domainid+"&account="+g_account), - dataType: "json", - success: function(json) { - var items = json.listsecuritygroupsresponse.securitygroup; - var $securityGroupDropdown = $vmPopup.find("#security_group_dropdown").empty(); - if (items != null && items.length > 0) { - for (var i = 0; i < items.length; i++) { + $zone.data("zoneObj", zones[i]); + $zoneSelect.append($zone); + } + } + $zoneSelect.change(); + listTemplatesInVmPopup(); + } + }); + + $.ajax({ + data: createURL("command=listSecurityGroups"+"&domainid="+g_domainid+"&account="+g_account), + dataType: "json", + success: function(json) { + var items = json.listsecuritygroupsresponse.securitygroup; + var $securityGroupDropdown = $vmPopup.find("#security_group_dropdown").empty(); + if (items != null && items.length > 0) { + for (var i = 0; i < items.length; i++) { if(items[i].name != "default") //exclude default security group because it is always applied - $securityGroupDropdown.append(""); - } - } - } - }); - - $.ajax({ - data: createURL("command=listServiceOfferings&issystem=false"), - dataType: "json", - async: false, - success: function(json) { - var offerings = json.listserviceofferingsresponse.serviceoffering; - var $container = $vmPopup.find("#service_offering_container"); - $container.empty(); - if (offerings != null && offerings.length > 0) { - for (var i = 0; i < offerings.length; i++) { - var $t = $soTemplate.clone(); - $t.find("input:radio[name=service_offering_radio]").val(offerings[i].id); - $t.find("#name").text(fromdb(offerings[i].name)); - $t.find("#description").text(fromdb(offerings[i].displaytext)); - if (i > 0) - $t.find("input:radio[name=service_offering_radio]").removeAttr("checked"); - $container.append($t.html()); - } - } - } - }); - - $.ajax({ - data: createURL("command=listDiskOfferings"), - dataType: "json", - async: false, - success: function(json) { - var offerings = json.listdiskofferingsresponse.diskoffering; - var $dataDiskOfferingContainer = $vmPopup.find("#data_disk_offering_container").empty(); - var $rootDiskOfferingContainer = $vmPopup.find("#root_disk_offering_container").empty(); - - //***** data disk offering: "no, thanks", "custom", existing disk offerings in database (begin) **************************************************** + $securityGroupDropdown.append(""); + } + } + } + }); + + $.ajax({ + data: createURL("command=listServiceOfferings&issystem=false"), + dataType: "json", + async: false, + success: function(json) { + var offerings = json.listserviceofferingsresponse.serviceoffering; + var $container = $vmPopup.find("#service_offering_container"); + $container.empty(); + if (offerings != null && offerings.length > 0) { + for (var i = 0; i < offerings.length; i++) { + var $t = $soTemplate.clone(); + $t.find("input:radio[name=service_offering_radio]").val(offerings[i].id); + $t.find("#name").text(fromdb(offerings[i].name)); + $t.find("#description").text(fromdb(offerings[i].displaytext)); + if (i > 0) + $t.find("input:radio[name=service_offering_radio]").removeAttr("checked"); + $container.append($t.html()); + } + } + } + }); + + $.ajax({ + data: createURL("command=listDiskOfferings"), + dataType: "json", + async: false, + success: function(json) { + var offerings = json.listdiskofferingsresponse.diskoffering; + var $dataDiskOfferingContainer = $vmPopup.find("#data_disk_offering_container").empty(); + var $rootDiskOfferingContainer = $vmPopup.find("#root_disk_offering_container").empty(); + + //***** data disk offering: "no, thanks", "custom", existing disk offerings in database (begin) **************************************************** //"no, thanks" radio button (default radio button in data disk offering) - $dataDiskOfferingContainer.append($doTemplateNo.clone().html()); - - //disk offerings from database - if (offerings != null && offerings.length > 0) { - for (var i = 0; i < offerings.length; i++) { - var $t; - if(offerings[i].iscustomized == true) - $t = $doTemplateCustom.clone(); - else - $t = $doTemplateExisting.clone(); - - $t.data("jsonObj", offerings[i]); + $dataDiskOfferingContainer.append($doTemplateNo.clone().html()); + + //disk offerings from database + if (offerings != null && offerings.length > 0) { + for (var i = 0; i < offerings.length; i++) { + var $t; + if(offerings[i].iscustomized == true) + $t = $doTemplateCustom.clone(); + else + $t = $doTemplateExisting.clone(); + + $t.data("jsonObj", offerings[i]); $t.find("input:radio[name=data_disk_offering_radio]").removeAttr("checked").val(fromdb(offerings[i].id)); - $t.find("#name").text(fromdb(offerings[i].name)); + $t.find("#name").text(fromdb(offerings[i].name)); $t.find("#description").text(fromdb(offerings[i].displaytext)); - $dataDiskOfferingContainer.append($t.html()); - } + $dataDiskOfferingContainer.append($t.html()); + } } - //***** data disk offering: "no, thanks", "custom", existing disk offerings in database (end) ******************************************************* - - //***** root disk offering: "custom", existing disk offerings in database (begin) ******************************************************************* - //disk offerings from database - if (offerings != null && offerings.length > 0) { - for (var i = 0; i < offerings.length; i++) { - var $t; - if(offerings[i].iscustomized == true) - $t = $doTemplateCustom.clone(); - else - $t = $doTemplateExisting.clone(); - + //***** data disk offering: "no, thanks", "custom", existing disk offerings in database (end) ******************************************************* + + //***** root disk offering: "custom", existing disk offerings in database (begin) ******************************************************************* + //disk offerings from database + if (offerings != null && offerings.length > 0) { + for (var i = 0; i < offerings.length; i++) { + var $t; + if(offerings[i].iscustomized == true) + $t = $doTemplateCustom.clone(); + else + $t = $doTemplateExisting.clone(); + $t.data("jsonObj", offerings[i]).attr("id", "do"+offerings[i].id); - var $offering = $t.find("input:radio").val(offerings[i].id); - if(i > 0) { + var $offering = $t.find("input:radio").val(offerings[i].id); + if(i > 0) { $offering.removeAttr("checked"); - } - $t.find("#name").text(fromdb(offerings[i].name)); - $t.find("#description").text(fromdb(offerings[i].displaytext)); - $rootDiskOfferingContainer.append($t.html()); - } - } + } + $t.find("#name").text(fromdb(offerings[i].name)); + $t.find("#description").text(fromdb(offerings[i].displaytext)); + $rootDiskOfferingContainer.append($t.html()); + } + } //***** root disk offering: "custom", existing disk offerings in database (end) ********************************************************************* - } - }); - - $vmPopup.find("#wizard_service_offering").click(); - return false; - }); - - function vmWizardCleanup() { - currentStepInVmPopup = 1; - $vmPopup.find("#step1").show().nextAll().hide(); - $vmPopup.find("#wizard_message").hide(); - selectedTemplateTypeInVmPopup = "featured"; - $("#wiz_featured").removeClass().addClass("rev_wizmid_selectedtempbut"); - $("#wiz_my, #wiz_community, #wiz_blank").removeClass().addClass("rev_wizmid_nonselectedtempbut"); - currentPageInTemplateGridInVmPopup = 1; - } - - function vmWizardOpen() { - $("#overlay_black").show(); - $vmPopup.show(); - vmWizardCleanup(); - } - - function vmWizardClose() { - $vmPopup.hide(); - $("#overlay_black").hide(); - } - - $vmPopup.find("#close_button").bind("click", function(event) { - vmWizardClose(); - return false; - }); - - $vmPopup.find("#step1 #wiz_message_continue").bind("click", function(event) { - $vmPopup.find("#step1 #wiz_message").hide(); - return false; - }); - - $vmPopup.find("#step2 #wiz_message_continue").bind("click", function(event) { - $vmPopup.find("#step2 #wiz_message").hide(); - return false; - }); - - $vmPopup.find("#step3 #wiz_message_continue").bind("click", function(event) { - $vmPopup.find("#step3 #wiz_message").hide(); - return false; + } + }); + + $vmPopup.find("#wizard_service_offering").click(); + return false; + }); + + function vmWizardCleanup() { + currentStepInVmPopup = 1; + $vmPopup.find("#step1").show().nextAll().hide(); + $vmPopup.find("#wizard_message").hide(); + selectedTemplateTypeInVmPopup = "featured"; + $("#wiz_featured").removeClass().addClass("rev_wizmid_selectedtempbut"); + $("#wiz_my, #wiz_community, #wiz_blank").removeClass().addClass("rev_wizmid_nonselectedtempbut"); + currentPageInTemplateGridInVmPopup = 1; + } + + function vmWizardOpen() { + $("#overlay_black").show(); + $vmPopup.show(); + vmWizardCleanup(); + } + + function vmWizardClose() { + $vmPopup.hide(); + $("#overlay_black").hide(); + } + + $vmPopup.find("#close_button").bind("click", function(event) { + vmWizardClose(); + return false; + }); + + $vmPopup.find("#step1 #wiz_message_continue").bind("click", function(event) { + $vmPopup.find("#step1 #wiz_message").hide(); + return false; + }); + + $vmPopup.find("#step2 #wiz_message_continue").bind("click", function(event) { + $vmPopup.find("#step2 #wiz_message").hide(); + return false; + }); + + $vmPopup.find("#step3 #wiz_message_continue").bind("click", function(event) { + $vmPopup.find("#step3 #wiz_message").hide(); + return false; }); $vmPopup.find("#step4 #wiz_message_continue").bind("click", function(event) { $vmPopup.find("#step4 #wiz_message").hide(); return false; - }); - - function getIconForOS(osType) { - if (osType == null || osType.length == 0) { - return ""; - } else { - if (osType.match("^CentOS") != null) { - return "rev_wiztemo_centosicons"; - } else if (osType.match("^Windows") != null) { - return "rev_wiztemo_windowsicons"; - } else { - return "rev_wiztemo_linuxicons"; - } - } - } - - //vm wizard search and pagination - $vmPopup.find("#step1").find("#search_button").bind("click", function(event) { - currentPageInTemplateGridInVmPopup = 1; - listTemplatesInVmPopup(); - return false; //event.preventDefault() + event.stopPropagation() - }); - - $vmPopup.find("#step1").find("#search_input").bind("keypress", function(event) { - if(event.keyCode == keycode_Enter) { - $vmPopup.find("#step1").find("#search_button").click(); - return false; //event.preventDefault() + event.stopPropagation() - } - }); - - $vmPopup.find("#step1").find("#next_page").bind("click", function(event){ - currentPageInTemplateGridInVmPopup++; - listTemplatesInVmPopup(); - return false; //event.preventDefault() + event.stopPropagation() - }); - - $vmPopup.find("#step1").find("#prev_page").bind("click", function(event){ - currentPageInTemplateGridInVmPopup--; - listTemplatesInVmPopup(); - return false; //event.preventDefault() + event.stopPropagation() - }); - - //var vmPopupTemplatePageSize = 6; //max number of templates in VM wizard - function listTemplatesInVmPopup() { - var zoneId = $vmPopup.find("#wizard_zone").val(); - if(zoneId == null || zoneId.length == 0) - return; - - var container = $vmPopup.find("#template_container"); - - var commandString, templateType; - var searchInput = $vmPopup.find("#step1").find("#search_input").val(); - - if (selectedTemplateTypeInVmPopup != "blank") { //*** template *** - templateType = "template"; - if (searchInput != null && searchInput.length > 0) - commandString = "command=listTemplates&templatefilter="+selectedTemplateTypeInVmPopup+"&zoneid="+zoneId+"&keyword="+searchInput; - else - commandString = "command=listTemplates&templatefilter="+selectedTemplateTypeInVmPopup+"&zoneid="+zoneId; - } - else { //*** ISO *** - templateType = "ISO"; - if (searchInput != null && searchInput.length > 0) - commandString = "command=listIsos&isReady=true&bootable=true&isofilter=executable&zoneid="+zoneId+"&keyword="+searchInput; - else - commandString = "command=listIsos&isReady=true&bootable=true&isofilter=executable&zoneid="+zoneId; - } - - commandString += "&pagesize="+vmPopupTemplatePageSize+"&page="+currentPageInTemplateGridInVmPopup; - - var loading = $vmPopup.find("#wiz_template_loading").show(); - if(currentPageInTemplateGridInVmPopup==1) - $vmPopup.find("#step1").find("#prev_page").hide(); - else - $vmPopup.find("#step1").find("#prev_page").show(); - - $.ajax({ - data: createURL(commandString), - dataType: "json", - async: false, - success: function(json) { - var items, $vmTemplateInWizard; - if (templateType == "template") { - items = json.listtemplatesresponse.template; - $vmTemplateInWizard = $("#vmtemplate_in_vmwizard"); - } - else if (templateType == "ISO") { - items = json.listisosresponse.iso; - $vmTemplateInWizard = $("#vmiso_in_vmwizard"); - } - - loading.hide(); - container.empty(); - if (items != null && items.length > 0) { - for (var i = 0; i < items.length; i++) { - var $newTemplate = $vmTemplateInWizard.clone(); - vmWizardTemplateJsonToTemplate(items[i], $newTemplate, templateType, i); - container.append($newTemplate.show()); - } - - if(items.length < vmPopupTemplatePageSize) - $vmPopup.find("#step1").find("#next_page").hide(); - else - $vmPopup.find("#step1").find("#next_page").show(); - } - else { - var msg; - if (selectedTemplateTypeInVmPopup != "blank") - msg = "No templates available"; - else - msg = "No ISOs available"; - var html = '
' - +'
' - +'
'+msg+'
' - +'
'; - container.append(html); - $vmPopup.find("#step1").find("#next_page").hide(); - } - } - }); - } - - //var $selectedVmWizardTemplate; - function vmWizardTemplateJsonToTemplate(jsonObj, $template, templateType, i) { - $template.attr("id", ("vmWizardTemplate_"+jsonObj.id)); - $template.data("templateId", jsonObj.id); - $template.data("templateType", templateType); + }); + + function getIconForOS(osType) { + if (osType == null || osType.length == 0) { + return ""; + } else { + if (osType.match("^CentOS") != null) { + return "rev_wiztemo_centosicons"; + } else if (osType.match("^Windows") != null) { + return "rev_wiztemo_windowsicons"; + } else { + return "rev_wiztemo_linuxicons"; + } + } + } + + //vm wizard search and pagination + $vmPopup.find("#step1").find("#search_button").bind("click", function(event) { + currentPageInTemplateGridInVmPopup = 1; + listTemplatesInVmPopup(); + return false; //event.preventDefault() + event.stopPropagation() + }); + + $vmPopup.find("#step1").find("#search_input").bind("keypress", function(event) { + if(event.keyCode == keycode_Enter) { + $vmPopup.find("#step1").find("#search_button").click(); + return false; //event.preventDefault() + event.stopPropagation() + } + }); + + $vmPopup.find("#step1").find("#next_page").bind("click", function(event){ + currentPageInTemplateGridInVmPopup++; + listTemplatesInVmPopup(); + return false; //event.preventDefault() + event.stopPropagation() + }); + + $vmPopup.find("#step1").find("#prev_page").bind("click", function(event){ + currentPageInTemplateGridInVmPopup--; + listTemplatesInVmPopup(); + return false; //event.preventDefault() + event.stopPropagation() + }); + + //var vmPopupTemplatePageSize = 6; //max number of templates in VM wizard + function listTemplatesInVmPopup() { + var zoneId = $vmPopup.find("#wizard_zone").val(); + if(zoneId == null || zoneId.length == 0) + return; + + var container = $vmPopup.find("#template_container"); + + var commandString, templateType; + var searchInput = $vmPopup.find("#step1").find("#search_input").val(); + + if (selectedTemplateTypeInVmPopup != "blank") { //*** template *** + templateType = "template"; + if (searchInput != null && searchInput.length > 0) + commandString = "command=listTemplates&templatefilter="+selectedTemplateTypeInVmPopup+"&zoneid="+zoneId+"&keyword="+searchInput; + else + commandString = "command=listTemplates&templatefilter="+selectedTemplateTypeInVmPopup+"&zoneid="+zoneId; + } + else { //*** ISO *** + templateType = "ISO"; + if (searchInput != null && searchInput.length > 0) + commandString = "command=listIsos&isReady=true&bootable=true&isofilter=executable&zoneid="+zoneId+"&keyword="+searchInput; + else + commandString = "command=listIsos&isReady=true&bootable=true&isofilter=executable&zoneid="+zoneId; + } + + commandString += "&pagesize="+vmPopupTemplatePageSize+"&page="+currentPageInTemplateGridInVmPopup; + + var loading = $vmPopup.find("#wiz_template_loading").show(); + if(currentPageInTemplateGridInVmPopup==1) + $vmPopup.find("#step1").find("#prev_page").hide(); + else + $vmPopup.find("#step1").find("#prev_page").show(); + + $.ajax({ + data: createURL(commandString), + dataType: "json", + async: false, + success: function(json) { + var items, $vmTemplateInWizard; + if (templateType == "template") { + items = json.listtemplatesresponse.template; + $vmTemplateInWizard = $("#vmtemplate_in_vmwizard"); + } + else if (templateType == "ISO") { + items = json.listisosresponse.iso; + $vmTemplateInWizard = $("#vmiso_in_vmwizard"); + } + + loading.hide(); + container.empty(); + if (items != null && items.length > 0) { + for (var i = 0; i < items.length; i++) { + var $newTemplate = $vmTemplateInWizard.clone(); + vmWizardTemplateJsonToTemplate(items[i], $newTemplate, templateType, i); + container.append($newTemplate.show()); + } + + if(items.length < vmPopupTemplatePageSize) + $vmPopup.find("#step1").find("#next_page").hide(); + else + $vmPopup.find("#step1").find("#next_page").show(); + } + else { + var msg; + if (selectedTemplateTypeInVmPopup != "blank") + msg = "No templates available"; + else + msg = "No ISOs available"; + var html = '
' + +'
' + +'
'+msg+'
' + +'
'; + container.append(html); + $vmPopup.find("#step1").find("#next_page").hide(); + } + } + }); + } + + //var $selectedVmWizardTemplate; + function vmWizardTemplateJsonToTemplate(jsonObj, $template, templateType, i) { + $template.attr("id", ("vmWizardTemplate_"+jsonObj.id)); + $template.data("templateId", jsonObj.id); + $template.data("templateType", templateType); $template.data("templateName", fromdb(jsonObj.displaytext)); - $template.data("hypervisor", jsonObj.hypervisor); - - $template.find("#icon").removeClass().addClass(getIconForOS(jsonObj.ostypename)); - $template.find("#name").text(fromdb(jsonObj.displaytext)); - - if(templateType == "template") { - $template.find("#hypervisor_text").text(fromdb(jsonObj.hypervisor)); - //$template.find("#hypervisor_text").text("XenServer"); //This line is for testing only. Comment this line and uncomment the line above before checkin. - } - - $template.find("#submitted_by").text(fromdb(jsonObj.account)); - - if(i == 0) { //select the 1st one - $selectedVmWizardTemplate = $template; - $template.addClass("rev_wiztemplistbox_selected"); - } - else { - $template.addClass("rev_wiztemplistbox"); - } - - $template.bind("click", function(event) { - if($selectedVmWizardTemplate != null) - $selectedVmWizardTemplate.removeClass("rev_wiztemplistbox_selected").addClass("rev_wiztemplistbox"); - - $(this).removeClass("rev_wiztemplistbox").addClass("rev_wiztemplistbox_selected"); - $selectedVmWizardTemplate = $(this); - return false; - }); - } - - $vmPopup.find("#wizard_zone").bind("change", function(event) { - var selectedZone = $(this).val(); - if(selectedZone != null && selectedZone.length > 0) { + $template.data("hypervisor", jsonObj.hypervisor); + + $template.find("#icon").removeClass().addClass(getIconForOS(jsonObj.ostypename)); + $template.find("#name").text(fromdb(jsonObj.displaytext)); + + if(templateType == "template") { + $template.find("#hypervisor_text").text(fromdb(jsonObj.hypervisor)); + //$template.find("#hypervisor_text").text("XenServer"); //This line is for testing only. Comment this line and uncomment the line above before checkin. + } + + $template.find("#submitted_by").text(fromdb(jsonObj.account)); + + if(i == 0) { //select the 1st one + $selectedVmWizardTemplate = $template; + $template.addClass("rev_wiztemplistbox_selected"); + } + else { + $template.addClass("rev_wiztemplistbox"); + } + + $template.bind("click", function(event) { + if($selectedVmWizardTemplate != null) + $selectedVmWizardTemplate.removeClass("rev_wiztemplistbox_selected").addClass("rev_wiztemplistbox"); + + $(this).removeClass("rev_wiztemplistbox").addClass("rev_wiztemplistbox_selected"); + $selectedVmWizardTemplate = $(this); + return false; + }); + } + + $vmPopup.find("#wizard_zone").bind("change", function(event) { + var selectedZone = $(this).val(); + if(selectedZone != null && selectedZone.length > 0) { $.ajax({ data: createURL("command=listHypervisors&zoneid="+selectedZone), dataType: "json", @@ -721,75 +720,75 @@ function initVMWizard() { } } } - }); - - listTemplatesInVmPopup(); - } - return false; - }); - - function displayDiskOffering(type) { - if(type=="data") { - $vmPopup.find("#wizard_data_disk_offering_title").show(); - $vmPopup.find("#wizard_data_disk_offering").show(); - $vmPopup.find("#wizard_root_disk_offering_title").hide(); - $vmPopup.find("#wizard_root_disk_offering").hide(); - } - else if(type=="root") { - $vmPopup.find("#wizard_root_disk_offering_title").show(); - $vmPopup.find("#wizard_root_disk_offering").show(); - $vmPopup.find("#wizard_data_disk_offering_title").hide(); - $vmPopup.find("#wizard_data_disk_offering").hide(); - } - } - displayDiskOffering("data"); //because default value of "#wiz_template_filter" is "wiz_featured" - - - // Setup the left template filters - $vmPopup.find("#wiz_template_filter").unbind("click").bind("click", function(event) { - var $container = $(this); - var target = $(event.target); - var targetId = target.attr("id"); + }); + + listTemplatesInVmPopup(); + } + return false; + }); + + function displayDiskOffering(type) { + if(type=="data") { + $vmPopup.find("#wizard_data_disk_offering_title").show(); + $vmPopup.find("#wizard_data_disk_offering").show(); + $vmPopup.find("#wizard_root_disk_offering_title").hide(); + $vmPopup.find("#wizard_root_disk_offering").hide(); + } + else if(type=="root") { + $vmPopup.find("#wizard_root_disk_offering_title").show(); + $vmPopup.find("#wizard_root_disk_offering").show(); + $vmPopup.find("#wizard_data_disk_offering_title").hide(); + $vmPopup.find("#wizard_data_disk_offering").hide(); + } + } + displayDiskOffering("data"); //because default value of "#wiz_template_filter" is "wiz_featured" + + + // Setup the left template filters + $vmPopup.find("#wiz_template_filter").unbind("click").bind("click", function(event) { + var $container = $(this); + var target = $(event.target); + var targetId = target.attr("id"); selectedTemplateTypeInVmPopup = "featured"; - - switch (targetId) { - case "wiz_featured": - $vmPopup.find("#search_input").val(""); - currentPageInTemplateGridInVmPopup = 1; - selectedTemplateTypeInVmPopup = "featured"; - $container.find("#wiz_featured").removeClass().addClass("rev_wizmid_selectedtempbut"); - $container.find("#wiz_my, #wiz_community, #wiz_blank").removeClass().addClass("rev_wizmid_nonselectedtempbut"); - displayDiskOffering("data"); - break; - case "wiz_my": - $vmPopup.find("#search_input").val(""); - currentPageInTemplateGridInVmPopup = 1; - $container.find("#wiz_my").removeClass().addClass("rev_wizmid_selectedtempbut"); - $container.find("#wiz_featured, #wiz_community, #wiz_blank").removeClass().addClass("rev_wizmid_nonselectedtempbut"); - selectedTemplateTypeInVmPopup = "selfexecutable"; - displayDiskOffering("data"); - break; - case "wiz_community": - $vmPopup.find("#search_input").val(""); - currentPageInTemplateGridInVmPopup = 1; - $container.find("#wiz_community").removeClass().addClass("rev_wizmid_selectedtempbut"); - $container.find("#wiz_my, #wiz_featured, #wiz_blank").removeClass().addClass("rev_wizmid_nonselectedtempbut"); - selectedTemplateTypeInVmPopup = "community"; - displayDiskOffering("data"); - break; - case "wiz_blank": - $vmPopup.find("#search_input").val(""); - currentPageInTemplateGridInVmPopup = 1; - $container.find("#wiz_blank").removeClass().addClass("rev_wizmid_selectedtempbut"); - $container.find("#wiz_my, #wiz_community, #wiz_featured").removeClass().addClass("rev_wizmid_nonselectedtempbut"); - selectedTemplateTypeInVmPopup = "blank"; - displayDiskOffering("root"); - break; - } - listTemplatesInVmPopup(); - return false; - }); - + + switch (targetId) { + case "wiz_featured": + $vmPopup.find("#search_input").val(""); + currentPageInTemplateGridInVmPopup = 1; + selectedTemplateTypeInVmPopup = "featured"; + $container.find("#wiz_featured").removeClass().addClass("rev_wizmid_selectedtempbut"); + $container.find("#wiz_my, #wiz_community, #wiz_blank").removeClass().addClass("rev_wizmid_nonselectedtempbut"); + displayDiskOffering("data"); + break; + case "wiz_my": + $vmPopup.find("#search_input").val(""); + currentPageInTemplateGridInVmPopup = 1; + $container.find("#wiz_my").removeClass().addClass("rev_wizmid_selectedtempbut"); + $container.find("#wiz_featured, #wiz_community, #wiz_blank").removeClass().addClass("rev_wizmid_nonselectedtempbut"); + selectedTemplateTypeInVmPopup = "selfexecutable"; + displayDiskOffering("data"); + break; + case "wiz_community": + $vmPopup.find("#search_input").val(""); + currentPageInTemplateGridInVmPopup = 1; + $container.find("#wiz_community").removeClass().addClass("rev_wizmid_selectedtempbut"); + $container.find("#wiz_my, #wiz_featured, #wiz_blank").removeClass().addClass("rev_wizmid_nonselectedtempbut"); + selectedTemplateTypeInVmPopup = "community"; + displayDiskOffering("data"); + break; + case "wiz_blank": + $vmPopup.find("#search_input").val(""); + currentPageInTemplateGridInVmPopup = 1; + $container.find("#wiz_blank").removeClass().addClass("rev_wizmid_selectedtempbut"); + $container.find("#wiz_my, #wiz_community, #wiz_featured").removeClass().addClass("rev_wizmid_nonselectedtempbut"); + selectedTemplateTypeInVmPopup = "blank"; + displayDiskOffering("root"); + break; + } + listTemplatesInVmPopup(); + return false; + }); + function vmWizardShowNetworkContainer($thisPopup) { $thisPopup.find("#step4").find("#network_container").show(); $thisPopup.find("#step4").find("#securitygroup_container").hide(); @@ -915,9 +914,9 @@ function initVMWizard() { } } }); - } - - + } + + function vmWizardShowSecurityGroupContainer($thisPopup) { $thisPopup.find("#step4").find("#network_container").hide(); if($selectedVmWizardTemplate.data("hypervisor") != "VMware" && getDirectAttachSecurityGroupsEnabled() == "true") { @@ -940,88 +939,88 @@ function initVMWizard() { } $thisPopup.find("#step5").find("#wizard_review_network").text("Basic Network"); - } - } - - $vmPopup.find("#next_step").bind("click", function(event) { - event.preventDefault(); - event.stopPropagation(); + } + } + + $vmPopup.find("#next_step").bind("click", function(event) { + event.preventDefault(); + event.stopPropagation(); var $thisPopup = $vmPopup; - var $reviewNetworkTemplate = $("#wizard_network_direct_review_template"); - if (currentStepInVmPopup == 1) { //select a template/ISO - // prevent a person from moving on if no templates are selected - if($thisPopup.find("#step1 #template_container .rev_wiztemplistbox_selected").length == 0) { - $thisPopup.find("#step1 #wiz_message").show(); - return false; - } - - if ($thisPopup.find("#wiz_blank").hasClass("rev_wizmid_selectedtempbut")) { //ISO - $thisPopup.find("#step3_label").text(dictionary["label.root.disk.offering"]); - $thisPopup.find("#root_disk_offering_container").show(); - $thisPopup.find("#data_disk_offering_container").hide(); - } - else { //template - $thisPopup.find("#step3_label").text(dictionary["label.data.disk.offering"]); - $thisPopup.find("#data_disk_offering_container").show(); - $thisPopup.find("#root_disk_offering_container").hide(); - } - + var $reviewNetworkTemplate = $("#wizard_network_direct_review_template"); + if (currentStepInVmPopup == 1) { //select a template/ISO + // prevent a person from moving on if no templates are selected + if($thisPopup.find("#step1 #template_container .rev_wiztemplistbox_selected").length == 0) { + $thisPopup.find("#step1 #wiz_message").show(); + return false; + } + + if ($thisPopup.find("#wiz_blank").hasClass("rev_wizmid_selectedtempbut")) { //ISO + $thisPopup.find("#step3_label").text(dictionary["label.root.disk.offering"]); + $thisPopup.find("#root_disk_offering_container").show(); + $thisPopup.find("#data_disk_offering_container").hide(); + } + else { //template + $thisPopup.find("#step3_label").text(dictionary["label.data.disk.offering"]); + $thisPopup.find("#data_disk_offering_container").show(); + $thisPopup.find("#root_disk_offering_container").hide(); + } + $thisPopup.find("#wizard_review_zone").text($thisPopup.find("#wizard_zone option:selected").text()); - - // This is taking from the selected template but need to change this to the dropdown that supports ISO. - if($selectedVmWizardTemplate.data("templateType") == "template") { - $selectedVmWizardTemplate.data("hypervisor", $selectedVmWizardTemplate.find("#hypervisor_text").text()); - } - else { - if($selectedVmWizardTemplate.find("#hypervisor_select").css("display") != "none") - $selectedVmWizardTemplate.data("hypervisor", $selectedVmWizardTemplate.find("#hypervisor_select").val()); - else //if($selectedVmWizardTemplate.find("#hypervisor_span").css("display") != "none") - $selectedVmWizardTemplate.data("hypervisor", $selectedVmWizardTemplate.find("#hypervisor_span").text()); - } - $thisPopup.find("#wizard_review_hypervisor").text($selectedVmWizardTemplate.data("hypervisor")); - - $thisPopup.find("#wizard_review_template").text($selectedVmWizardTemplate.data("templateName")); - } - - if (currentStepInVmPopup == 2) { //service offering - // prevent a person from moving on if no service offering is selected - if($thisPopup.find("input:radio[name=service_offering_radio]:checked").length == 0) { - $thisPopup.find("#step2 #wiz_message #wiz_message_text").text("Please select a service offering to continue"); - $thisPopup.find("#step2 #wiz_message").show(); - return false; - } - $thisPopup.find("#wizard_review_service_offering").text($thisPopup.find("input:radio[name=service_offering_radio]:checked").next().text()); - } - - if(currentStepInVmPopup ==3) { //disk offering - if($selectedVmWizardTemplate.data("templateType") == "template") { //*** template *** - $thisPopup.find("#wizard_review_disk_offering_label").text(dictionary["label.data.disk.offering"] + ":"); - var checkedRadioButton = $thisPopup.find("#data_disk_offering_container input[name=data_disk_offering_radio]:checked"); - } - else { //*** ISO *** - // prevent a person from moving on if no disk offering is selected - if($thisPopup.find("input:radio[name=data_disk_offering_radio]:checked").length == 0) { - $thisPopup.find("#step3 #wiz_message #wiz_message_text").text("Please select a disk offering to continue"); - $thisPopup.find("#step3 #wiz_message").show(); - return false; - } - $thisPopup.find("#wizard_review_disk_offering_label").text(dictionary["label.root.disk.offering"] + ":"); - var checkedRadioButton = $thisPopup.find("#root_disk_offering_container input[name=data_disk_offering_radio]:checked"); - } - - var $diskOfferingElement = checkedRadioButton.parent(); - - var isValid = true; - if($diskOfferingElement.find("#custom_disk_size").length > 0) - isValid &= validateInteger("Disk Size", $diskOfferingElement.find("#custom_disk_size"), $diskOfferingElement.find("#custom_disk_size_errormsg"), null, null, false); //required - else - isValid &= validateInteger("Disk Size", $diskOfferingElement.find("#custom_disk_size"), $diskOfferingElement.find("#custom_disk_size_errormsg"), null, null, true); //optional - if (!isValid) - return; - - var diskOfferingName = $diskOfferingElement.find("#name").text(); - if(checkedRadioButton.parent().attr("id") == "vm_popup_disk_offering_template_custom") - diskOfferingName += (" (Disk Size: " + $diskOfferingElement.find("#custom_disk_size").val() + " MB)"); + + // This is taking from the selected template but need to change this to the dropdown that supports ISO. + if($selectedVmWizardTemplate.data("templateType") == "template") { + $selectedVmWizardTemplate.data("hypervisor", $selectedVmWizardTemplate.find("#hypervisor_text").text()); + } + else { + if($selectedVmWizardTemplate.find("#hypervisor_select").css("display") != "none") + $selectedVmWizardTemplate.data("hypervisor", $selectedVmWizardTemplate.find("#hypervisor_select").val()); + else //if($selectedVmWizardTemplate.find("#hypervisor_span").css("display") != "none") + $selectedVmWizardTemplate.data("hypervisor", $selectedVmWizardTemplate.find("#hypervisor_span").text()); + } + $thisPopup.find("#wizard_review_hypervisor").text($selectedVmWizardTemplate.data("hypervisor")); + + $thisPopup.find("#wizard_review_template").text($selectedVmWizardTemplate.data("templateName")); + } + + if (currentStepInVmPopup == 2) { //service offering + // prevent a person from moving on if no service offering is selected + if($thisPopup.find("input:radio[name=service_offering_radio]:checked").length == 0) { + $thisPopup.find("#step2 #wiz_message #wiz_message_text").text("Please select a service offering to continue"); + $thisPopup.find("#step2 #wiz_message").show(); + return false; + } + $thisPopup.find("#wizard_review_service_offering").text($thisPopup.find("input:radio[name=service_offering_radio]:checked").next().text()); + } + + if(currentStepInVmPopup ==3) { //disk offering + if($selectedVmWizardTemplate.data("templateType") == "template") { //*** template *** + $thisPopup.find("#wizard_review_disk_offering_label").text(dictionary["label.data.disk.offering"] + ":"); + var checkedRadioButton = $thisPopup.find("#data_disk_offering_container input[name=data_disk_offering_radio]:checked"); + } + else { //*** ISO *** + // prevent a person from moving on if no disk offering is selected + if($thisPopup.find("input:radio[name=data_disk_offering_radio]:checked").length == 0) { + $thisPopup.find("#step3 #wiz_message #wiz_message_text").text("Please select a disk offering to continue"); + $thisPopup.find("#step3 #wiz_message").show(); + return false; + } + $thisPopup.find("#wizard_review_disk_offering_label").text(dictionary["label.root.disk.offering"] + ":"); + var checkedRadioButton = $thisPopup.find("#root_disk_offering_container input[name=data_disk_offering_radio]:checked"); + } + + var $diskOfferingElement = checkedRadioButton.parent(); + + var isValid = true; + if($diskOfferingElement.find("#custom_disk_size").length > 0) + isValid &= validateInteger("Disk Size", $diskOfferingElement.find("#custom_disk_size"), $diskOfferingElement.find("#custom_disk_size_errormsg"), null, null, false); //required + else + isValid &= validateInteger("Disk Size", $diskOfferingElement.find("#custom_disk_size"), $diskOfferingElement.find("#custom_disk_size_errormsg"), null, null, true); //optional + if (!isValid) + return; + + var diskOfferingName = $diskOfferingElement.find("#name").text(); + if(checkedRadioButton.parent().attr("id") == "vm_popup_disk_offering_template_custom") + diskOfferingName += (" (Disk Size: " + $diskOfferingElement.find("#custom_disk_size").val() + " MB)"); $thisPopup.find("#wizard_review_disk_offering").text(diskOfferingName); @@ -1054,27 +1053,27 @@ function initVMWizard() { }); if(hasDedicatedDirectTaggedDefaultNetwork == true) { - $("#dialog_confirmation") - .text(dictionary["message.launch.vm.on.private.network"]) - .dialog("option", "buttons", { - "Yes": function() { - //present the current UI we have today - vmWizardShowNetworkContainer($thisPopup); - $(this).dialog("close"); - }, - "No": function() { - //present security groups for user to select - vmWizardShowSecurityGroupContainer($thisPopup); - $(this).dialog("close"); - } + $("#dialog_confirmation") + .text(dictionary["message.launch.vm.on.private.network"]) + .dialog("option", "buttons", { + "Yes": function() { + //present the current UI we have today + vmWizardShowNetworkContainer($thisPopup); + $(this).dialog("close"); + }, + "No": function() { + //present security groups for user to select + vmWizardShowSecurityGroupContainer($thisPopup); + $(this).dialog("close"); + } }).dialog("open"); } else { vmWizardShowSecurityGroupContainer($thisPopup); } - } - } - + } + } + if (currentStepInVmPopup == 4) { //network if ($thisPopup.find("#step4").find("#network_container").css("display") != "none") { var $selectedSecondaryNetworks = $thisPopup.find("input:checkbox[name=secondary_network]:checked"); @@ -1125,22 +1124,22 @@ function initVMWizard() { else if ($thisPopup.find("#step4").find("#securitygroup_container").css("display") != "none") { } - } - - if (currentStepInVmPopup == 5) { //last step - // validate values - var isValid = true; - isValid &= validateString("Name", $thisPopup.find("#wizard_vm_name"), $thisPopup.find("#wizard_vm_name_errormsg"), true); //optional - isValid &= validateString("Group", $thisPopup.find("#wizard_vm_group"), $thisPopup.find("#wizard_vm_group_errormsg"), true); //optional - if (!isValid) - return; - vmWizardClose(); - - // Create a new VM!!!! - var moreCriteria = []; - moreCriteria.push("&zoneId="+$thisPopup.find("#wizard_zone").val()); - moreCriteria.push("&hypervisor="+$selectedVmWizardTemplate.data("hypervisor")); - moreCriteria.push("&templateId="+$selectedVmWizardTemplate.data("templateId")); + } + + if (currentStepInVmPopup == 5) { //last step + // validate values + var isValid = true; + isValid &= validateString("Name", $thisPopup.find("#wizard_vm_name"), $thisPopup.find("#wizard_vm_name_errormsg"), true); //optional + isValid &= validateString("Group", $thisPopup.find("#wizard_vm_group"), $thisPopup.find("#wizard_vm_group_errormsg"), true); //optional + if (!isValid) + return; + vmWizardClose(); + + // Create a new VM!!!! + var moreCriteria = []; + moreCriteria.push("&zoneId="+$thisPopup.find("#wizard_zone").val()); + moreCriteria.push("&hypervisor="+$selectedVmWizardTemplate.data("hypervisor")); + moreCriteria.push("&templateId="+$selectedVmWizardTemplate.data("templateId")); moreCriteria.push("&serviceOfferingId="+$thisPopup.find("input:radio[name=service_offering_radio]:checked").val()); if ($thisPopup.find("#step4").find("#network_container").css("display") != "none") { @@ -1164,127 +1163,127 @@ function initVMWizard() { } else if ($thisPopup.find("#step4").find("#securitygroup_container").css("display") != "none") { if($thisPopup.find("#step4").find("#security_group_section").css("display") != "none") { - if($thisPopup.find("#security_group_dropdown").val() != null && $thisPopup.find("#security_group_dropdown").val().length > 0) { - var securityGroupList = $thisPopup.find("#security_group_dropdown").val().join(","); - moreCriteria.push("&securitygroupids="+securityGroupList); + if($thisPopup.find("#security_group_dropdown").val() != null && $thisPopup.find("#security_group_dropdown").val().length > 0) { + var securityGroupList = $thisPopup.find("#security_group_dropdown").val().join(","); + moreCriteria.push("&securitygroupids="+securityGroupList); } } - } - - var diskOfferingId, $diskOfferingElement; - if ($thisPopup.find("#wiz_blank").hasClass("rev_wizmid_selectedtempbut")) { //ISO - diskOfferingId = $thisPopup.find("#root_disk_offering_container input[name=data_disk_offering_radio]:checked").val(); - $diskOfferingElement = $thisPopup.find("#root_disk_offering_container input[name=data_disk_offering_radio]:checked").parent(); - } - else { //template - diskOfferingId = $thisPopup.find("#data_disk_offering_container input[name=data_disk_offering_radio]:checked").val(); - $diskOfferingElement = $thisPopup.find("#data_disk_offering_container input[name=data_disk_offering_radio]:checked").parent(); - } - if(diskOfferingId != null && diskOfferingId != "" && diskOfferingId != "no") - moreCriteria.push("&diskOfferingId="+diskOfferingId); - - if($diskOfferingElement.find("#custom_disk_size").length > 0) { - var customDiskSize = $diskOfferingElement.find("#custom_disk_size").val(); //unit is MB - if(customDiskSize != null && customDiskSize.length > 0) - moreCriteria.push("&size="+customDiskSize); - } - - var name = trim($thisPopup.find("#wizard_vm_name").val()); - if (name != null && name.length > 0) - moreCriteria.push("&displayname="+todb(name)); - - var group = trim($thisPopup.find("#wizard_vm_group").val()); - if (group != null && group.length > 0) - moreCriteria.push("&group="+todb(group)); + } + + var diskOfferingId, $diskOfferingElement; + if ($thisPopup.find("#wiz_blank").hasClass("rev_wizmid_selectedtempbut")) { //ISO + diskOfferingId = $thisPopup.find("#root_disk_offering_container input[name=data_disk_offering_radio]:checked").val(); + $diskOfferingElement = $thisPopup.find("#root_disk_offering_container input[name=data_disk_offering_radio]:checked").parent(); + } + else { //template + diskOfferingId = $thisPopup.find("#data_disk_offering_container input[name=data_disk_offering_radio]:checked").val(); + $diskOfferingElement = $thisPopup.find("#data_disk_offering_container input[name=data_disk_offering_radio]:checked").parent(); + } + if(diskOfferingId != null && diskOfferingId != "" && diskOfferingId != "no") + moreCriteria.push("&diskOfferingId="+diskOfferingId); + + if($diskOfferingElement.find("#custom_disk_size").length > 0) { + var customDiskSize = $diskOfferingElement.find("#custom_disk_size").val(); //unit is MB + if(customDiskSize != null && customDiskSize.length > 0) + moreCriteria.push("&size="+customDiskSize); + } + + var name = trim($thisPopup.find("#wizard_vm_name").val()); + if (name != null && name.length > 0) + moreCriteria.push("&displayname="+todb(name)); + + var group = trim($thisPopup.find("#wizard_vm_group").val()); + if (group != null && group.length > 0) + moreCriteria.push("&group="+todb(group)); var $midmenuItem1 = beforeAddingMidMenuItem() ; - $("#midmenu_container #midmenu_container_no_items_available").hide(); - - $.ajax({ - data: createURL("command=deployVirtualMachine"+moreCriteria.join("")), - dataType: "json", - success: function(json) { - var jobId = json.deployvirtualmachineresponse.jobid; - var timerKey = "vmNew"+jobId; - - // Process the async job - $("body").everyTime( - 10000, - timerKey, - function() { - $.ajax({ - data: createURL("command=queryAsyncJobResult&jobId="+jobId), - dataType: "json", - success: function(json) { - var result = json.queryasyncjobresultresponse; - if (result.jobstatus == 0) { - return; //Job has not completed - } else { - $("body").stopTime(timerKey); - if (result.jobstatus == 1) { - // Succeeded - var item = result.jobresult.virtualmachine; - vmToMidmenu(item, $midmenuItem1); - bindClickToMidMenu($midmenuItem1, vmToRightPanel, getMidmenuId); - - if (item.passwordenabled == true) { - var secondRowText = dictionary["label.new.password"] + ": " + item.password; - afterAddingMidMenuItem($midmenuItem1, true, secondRowText); - $midmenuItem1.data("afterActionInfo", secondRowText); - /* - var afterActionInfo = "Instance " + getVmName(item.name, item.displayname) + " has been created successfully. New password is " + item.password; - $midmenuItem1.data("afterActionInfo", afterActionInfo); - - $("#dialog_info") - .text(afterActionInfo) - .dialog('option', 'buttons', { - "OK": function() { - $(this).dialog("close"); - } - }).dialog("open"); - */ - } - else { - afterAddingMidMenuItem($midmenuItem1, true, null); - } - } else if (result.jobstatus == 2) { - // Failed - afterAddingMidMenuItem($midmenuItem1, false, fromdb(result.jobresult.errortext)); - } - } - }, - error: function(XMLHttpResponse) { + $("#midmenu_container #midmenu_container_no_items_available").hide(); + + $.ajax({ + data: createURL("command=deployVirtualMachine"+moreCriteria.join("")), + dataType: "json", + success: function(json) { + var jobId = json.deployvirtualmachineresponse.jobid; + var timerKey = "vmNew"+jobId; + + // Process the async job + $("body").everyTime( + 10000, + timerKey, + function() { + $.ajax({ + data: createURL("command=queryAsyncJobResult&jobId="+jobId), + dataType: "json", + success: function(json) { + var result = json.queryasyncjobresultresponse; + if (result.jobstatus == 0) { + return; //Job has not completed + } else { + $("body").stopTime(timerKey); + if (result.jobstatus == 1) { + // Succeeded + var item = result.jobresult.virtualmachine; + vmToMidmenu(item, $midmenuItem1); + bindClickToMidMenu($midmenuItem1, vmToRightPanel, getMidmenuId); + + if (item.passwordenabled == true) { + var secondRowText = dictionary["label.new.password"] + ": " + item.password; + afterAddingMidMenuItem($midmenuItem1, true, secondRowText); + $midmenuItem1.data("afterActionInfo", secondRowText); + /* + var afterActionInfo = "Instance " + getVmName(item.name, item.displayname) + " has been created successfully. New password is " + item.password; + $midmenuItem1.data("afterActionInfo", afterActionInfo); + + $("#dialog_info") + .text(afterActionInfo) + .dialog('option', 'buttons', { + "OK": function() { + $(this).dialog("close"); + } + }).dialog("open"); + */ + } + else { + afterAddingMidMenuItem($midmenuItem1, true, null); + } + } else if (result.jobstatus == 2) { + // Failed + afterAddingMidMenuItem($midmenuItem1, false, fromdb(result.jobresult.errortext)); + } + } + }, + error: function(XMLHttpResponse) { $("body").stopTime(timerKey); - handleError(XMLHttpResponse, function() { + handleError(XMLHttpResponse, function() { afterAddingMidMenuItem($midmenuItem1, false, parseXMLHttpResponse(XMLHttpResponse)); - }); - } - }); - }, - 0 - ); - }, + }); + } + }); + }, + 0 + ); + }, error: function(XMLHttpResponse) { - handleError(XMLHttpResponse, function() { + handleError(XMLHttpResponse, function() { afterAddingMidMenuItem($midmenuItem1, false, parseXMLHttpResponse(XMLHttpResponse)); - }); - } - }); - } - - //since no error, move to next step - $vmPopup.find("#step" + currentStepInVmPopup).hide().next().show(); //hide current step, show next step - currentStepInVmPopup++; - }); - - $vmPopup.find("#prev_step").bind("click", function(event) { - var $prevStep = $vmPopup.find("#step" + currentStepInVmPopup).hide().prev().show(); //hide current step, show previous step - currentStepInVmPopup--; - return false; //event.preventDefault() + event.stopPropagation() - }); -} - - + }); + } + }); + } + + //since no error, move to next step + $vmPopup.find("#step" + currentStepInVmPopup).hide().next().show(); //hide current step, show next step + currentStepInVmPopup++; + }); + + $vmPopup.find("#prev_step").bind("click", function(event) { + var $prevStep = $vmPopup.find("#step" + currentStepInVmPopup).hide().prev().show(); //hide current step, show previous step + currentStepInVmPopup--; + return false; //event.preventDefault() + event.stopPropagation() + }); +} + + //***** VM Detail (begin) ****************************************************************************** var vmActionMap = { @@ -1370,12 +1369,12 @@ var vmActionMap = { vmToMidmenu(jsonObj, $midmenuItem1); /* - $("#dialog_info") - .text("New password of instance " + getVmName(jsonObj.name, jsonObj.displayname) + " is " + fromdb(jsonObj.password)) - .dialog('option', 'buttons', { - "OK": function() { - $(this).dialog("close"); - } + $("#dialog_info") + .text("New password of instance " + getVmName(jsonObj.name, jsonObj.displayname) + " is " + fromdb(jsonObj.password)) + .dialog('option', 'buttons', { + "OK": function() { + $(this).dialog("close"); + } }).dialog("open"); */ @@ -1408,100 +1407,100 @@ var vmActionMap = { vmToMidmenu(jsonObj, $midmenuItem1); } } -} +} function doStartVM($actionLink, $detailsTab, $midmenuItem1) { - $("#dialog_confirmation") - .text(dictionary["message.action.start.instance"]) - .dialog('option', 'buttons', { - "Confirm": function() { - $(this).dialog("close"); - - var jsonObj = $midmenuItem1.data("jsonObj"); - var id = jsonObj.id; - var apiCommand = "command=startVirtualMachine&id="+id; - doActionToTab(id, $actionLink, apiCommand, $midmenuItem1, $detailsTab); - }, - "Cancel": function() { - $(this).dialog("close"); - - } + $("#dialog_confirmation") + .text(dictionary["message.action.start.instance"]) + .dialog('option', 'buttons', { + "Confirm": function() { + $(this).dialog("close"); + + var jsonObj = $midmenuItem1.data("jsonObj"); + var id = jsonObj.id; + var apiCommand = "command=startVirtualMachine&id="+id; + doActionToTab(id, $actionLink, apiCommand, $midmenuItem1, $detailsTab); + }, + "Cancel": function() { + $(this).dialog("close"); + + } }).dialog("open"); } function doStopVM($actionLink, $detailsTab, $midmenuItem1) { - $("#dialog_confirmation_stop_vm") - .dialog('option', 'buttons', { - "Confirm": function() { - $(this).dialog("close"); - - var jsonObj = $midmenuItem1.data("jsonObj"); + $("#dialog_confirmation_stop_vm") + .dialog('option', 'buttons', { + "Confirm": function() { + $(this).dialog("close"); + + var jsonObj = $midmenuItem1.data("jsonObj"); var id = jsonObj.id; - var isForced = $("#dialog_confirmation_stop_vm").find("#force_stop_instance").attr("checked").toString(); - var apiCommand = "command=stopVirtualMachine&id="+id+"&forced="+isForced; - doActionToTab(id, $actionLink, apiCommand, $midmenuItem1, $detailsTab); - }, - "Cancel": function() { - $(this).dialog("close"); - - } + var isForced = $("#dialog_confirmation_stop_vm").find("#force_stop_instance").attr("checked").toString(); + var apiCommand = "command=stopVirtualMachine&id="+id+"&forced="+isForced; + doActionToTab(id, $actionLink, apiCommand, $midmenuItem1, $detailsTab); + }, + "Cancel": function() { + $(this).dialog("close"); + + } }).dialog("open"); } function doRebootVM($actionLink, $detailsTab, $midmenuItem1) { - $("#dialog_confirmation") - .text(dictionary["message.action.reboot.instance"]) - .dialog('option', 'buttons', { - "Confirm": function() { - $(this).dialog("close"); - - var jsonObj = $midmenuItem1.data("jsonObj"); - var id = jsonObj.id; - var apiCommand = "command=rebootVirtualMachine&id="+id; - doActionToTab(id, $actionLink, apiCommand, $midmenuItem1, $detailsTab); - }, - "Cancel": function() { - $(this).dialog("close"); - - } + $("#dialog_confirmation") + .text(dictionary["message.action.reboot.instance"]) + .dialog('option', 'buttons', { + "Confirm": function() { + $(this).dialog("close"); + + var jsonObj = $midmenuItem1.data("jsonObj"); + var id = jsonObj.id; + var apiCommand = "command=rebootVirtualMachine&id="+id; + doActionToTab(id, $actionLink, apiCommand, $midmenuItem1, $detailsTab); + }, + "Cancel": function() { + $(this).dialog("close"); + + } }).dialog("open"); } function doDestroyVM($actionLink, $detailsTab, $midmenuItem1) { - $("#dialog_confirmation") - .text(dictionary["message.action.destroy.instance"]) - .dialog('option', 'buttons', { - "Confirm": function() { - $(this).dialog("close"); - - var jsonObj = $midmenuItem1.data("jsonObj"); - var id = jsonObj.id; - var apiCommand = "command=destroyVirtualMachine&id="+id; - doActionToTab(id, $actionLink, apiCommand, $midmenuItem1, $detailsTab); - }, - "Cancel": function() { - $(this).dialog("close"); - - } + $("#dialog_confirmation") + .text(dictionary["message.action.destroy.instance"]) + .dialog('option', 'buttons', { + "Confirm": function() { + $(this).dialog("close"); + + var jsonObj = $midmenuItem1.data("jsonObj"); + var id = jsonObj.id; + var apiCommand = "command=destroyVirtualMachine&id="+id; + doActionToTab(id, $actionLink, apiCommand, $midmenuItem1, $detailsTab); + }, + "Cancel": function() { + $(this).dialog("close"); + + } }).dialog("open"); } function doRestoreVM($actionLink, $detailsTab, $midmenuItem1) { - $("#dialog_confirmation") - .text(dictionary["message.action.restore.instance"]) - .dialog('option', 'buttons', { - "Confirm": function() { - $(this).dialog("close"); - - var jsonObj = $midmenuItem1.data("jsonObj"); - var id = jsonObj.id; - var apiCommand = "command=recoverVirtualMachine&id="+id; - doActionToTab(id, $actionLink, apiCommand, $midmenuItem1, $detailsTab); - }, - "Cancel": function() { - $(this).dialog("close"); - - } + $("#dialog_confirmation") + .text(dictionary["message.action.restore.instance"]) + .dialog('option', 'buttons', { + "Confirm": function() { + $(this).dialog("close"); + + var jsonObj = $midmenuItem1.data("jsonObj"); + var id = jsonObj.id; + var apiCommand = "command=recoverVirtualMachine&id="+id; + doActionToTab(id, $actionLink, apiCommand, $midmenuItem1, $detailsTab); + }, + "Cancel": function() { + $(this).dialog("close"); + + } }).dialog("open"); } @@ -1538,101 +1537,101 @@ function doEditVM($actionLink, $detailsTab, $midmenuItem1) { } function doEditVM2($actionLink, $detailsTab, $midmenuItem1, $readonlyFields, $editFields) { - // validate values - var isValid = true; - isValid &= validateString("Name", $detailsTab.find("#name_edit"), $detailsTab.find("#name_edit_errormsg"), true); //optional - isValid &= validateString("Display Text", $detailsTab.find("#group_edit"), $detailsTab.find("#group_edit_errormsg"), true); //optional - if (!isValid) - return; - - var jsonObj = $midmenuItem1.data("jsonObj"); - var id = jsonObj.id; - - var array1 = []; - var name = trim($detailsTab.find("#vmname_edit").val()); - array1.push("&displayName="+todb(name)); - - var group = trim($detailsTab.find("#group_edit").val()); - array1.push("&group="+todb(group)); - - var haenable = $detailsTab.find("#haenable_edit").val(); - array1.push("&haenable="+haenable); - - var ostypeid = $detailsTab.find("#ostypename_edit").val(); - array1.push("&ostypeid="+ostypeid); - - $.ajax({ - data: createURL("command=updateVirtualMachine&id="+id+array1.join("")), - dataType: "json", - success: function(json) { + // validate values + var isValid = true; + isValid &= validateString("Name", $detailsTab.find("#name_edit"), $detailsTab.find("#name_edit_errormsg"), true); //optional + isValid &= validateString("Display Text", $detailsTab.find("#group_edit"), $detailsTab.find("#group_edit_errormsg"), true); //optional + if (!isValid) + return; + + var jsonObj = $midmenuItem1.data("jsonObj"); + var id = jsonObj.id; + + var array1 = []; + var name = trim($detailsTab.find("#vmname_edit").val()); + array1.push("&displayName="+todb(name)); + + var group = trim($detailsTab.find("#group_edit").val()); + array1.push("&group="+todb(group)); + + var haenable = $detailsTab.find("#haenable_edit").val(); + array1.push("&haenable="+haenable); + + var ostypeid = $detailsTab.find("#ostypename_edit").val(); + array1.push("&ostypeid="+ostypeid); + + $.ajax({ + data: createURL("command=updateVirtualMachine&id="+id+array1.join("")), + dataType: "json", + success: function(json) { var jsonObj = json.updatevirtualmachineresponse.virtualmachine; vmToMidmenu(jsonObj, $midmenuItem1); - vmToRightPanel($midmenuItem1); - + vmToRightPanel($midmenuItem1); + $editFields.hide(); $readonlyFields.show(); - $("#save_button, #cancel_button").hide(); - } + $("#save_button, #cancel_button").hide(); + } }); } -function doAttachISO($actionLink, $detailsTab, $midmenuItem1) { - $.ajax({ - data: createURL("command=listIsos&isReady=true&isofilter=executable"), - dataType: "json", - async: false, - success: function(json) { - var isos = json.listisosresponse.iso; - var isoSelect = $("#dialog_attach_iso #attach_iso_select"); - if (isos != null && isos.length > 0) { - isoSelect.empty(); - for (var i = 0; i < isos.length; i++) { - isoSelect.append("");; - } - } - } - }); - - $("#dialog_attach_iso") - .dialog('option', 'buttons', { - "OK": function() { - var $thisDialog = $(this); - - var isValid = true; - isValid &= validateDropDownBox("ISO", $thisDialog.find("#attach_iso_select"), $thisDialog.find("#attach_iso_select_errormsg")); - if (!isValid) - return; - - $thisDialog.dialog("close"); - - var isoId = $("#dialog_attach_iso #attach_iso_select").val(); - - var jsonObj = $midmenuItem1.data("jsonObj"); - var id = jsonObj.id; - var apiCommand = "command=attachIso&virtualmachineid="+id+"&id="+isoId; - doActionToTab(id, $actionLink, apiCommand, $midmenuItem1, $detailsTab); - }, - "Cancel": function() { - $(this).dialog("close"); - } - }).dialog("open"); +function doAttachISO($actionLink, $detailsTab, $midmenuItem1) { + $.ajax({ + data: createURL("command=listIsos&isReady=true&isofilter=executable"), + dataType: "json", + async: false, + success: function(json) { + var isos = json.listisosresponse.iso; + var isoSelect = $("#dialog_attach_iso #attach_iso_select"); + if (isos != null && isos.length > 0) { + isoSelect.empty(); + for (var i = 0; i < isos.length; i++) { + isoSelect.append("");; + } + } + } + }); + + $("#dialog_attach_iso") + .dialog('option', 'buttons', { + "OK": function() { + var $thisDialog = $(this); + + var isValid = true; + isValid &= validateDropDownBox("ISO", $thisDialog.find("#attach_iso_select"), $thisDialog.find("#attach_iso_select_errormsg")); + if (!isValid) + return; + + $thisDialog.dialog("close"); + + var isoId = $("#dialog_attach_iso #attach_iso_select").val(); + + var jsonObj = $midmenuItem1.data("jsonObj"); + var id = jsonObj.id; + var apiCommand = "command=attachIso&virtualmachineid="+id+"&id="+isoId; + doActionToTab(id, $actionLink, apiCommand, $midmenuItem1, $detailsTab); + }, + "Cancel": function() { + $(this).dialog("close"); + } + }).dialog("open"); } -function doDetachISO($actionLink, $detailsTab, $midmenuItem1) { - $("#dialog_detach_iso_from_vm") - .dialog('option', 'buttons', { - "OK": function() { - $(this).dialog("close"); - - var jsonObj = $midmenuItem1.data("jsonObj"); - var id = jsonObj.id; - var apiCommand = "command=detachIso&virtualmachineid="+id; - doActionToTab(id, $actionLink, apiCommand, $midmenuItem1, $detailsTab); - }, - "Cancel": function() { - $(this).dialog("close"); - } - }).dialog("open"); +function doDetachISO($actionLink, $detailsTab, $midmenuItem1) { + $("#dialog_detach_iso_from_vm") + .dialog('option', 'buttons', { + "OK": function() { + $(this).dialog("close"); + + var jsonObj = $midmenuItem1.data("jsonObj"); + var id = jsonObj.id; + var apiCommand = "command=detachIso&virtualmachineid="+id; + doActionToTab(id, $actionLink, apiCommand, $midmenuItem1, $detailsTab); + }, + "Cancel": function() { + $(this).dialog("close"); + } + }).dialog("open"); } function doResetPassword($actionLink, $detailsTab, $midmenuItem1) { @@ -1657,32 +1656,32 @@ function doResetPassword($actionLink, $detailsTab, $midmenuItem1) { }).dialog("open"); return; } - - $("#dialog_confirmation") - .text(dictionary["message.action.instance.reset.password"]) - .dialog('option', 'buttons', { - "Yes": function() { - $(this).dialog("close"); - - if(jsonObj.passwordenabled != true) { - var $afterActionInfoContainer = $("#right_panel_content #after_action_info_container_on_top"); - $afterActionInfoContainer.find("#after_action_info").text("Reset password failed. Reason: This instance is not using a template that has the password reset feature enabled. If you have forgotten your root password, please contact support."); - $afterActionInfoContainer.addClass("errorbox").show(); - return; - } - - var id = jsonObj.id; - var apiCommand = "command=resetPasswordForVirtualMachine&id="+id; - doActionToTab(id, $actionLink, apiCommand, $midmenuItem1, $detailsTab); - }, - "No": function() { - $(this).dialog("close"); - } - }).dialog("open"); + + $("#dialog_confirmation") + .text(dictionary["message.action.instance.reset.password"]) + .dialog('option', 'buttons', { + "Yes": function() { + $(this).dialog("close"); + + if(jsonObj.passwordenabled != true) { + var $afterActionInfoContainer = $("#right_panel_content #after_action_info_container_on_top"); + $afterActionInfoContainer.find("#after_action_info").text("Reset password failed. Reason: This instance is not using a template that has the password reset feature enabled. If you have forgotten your root password, please contact support."); + $afterActionInfoContainer.addClass("errorbox").show(); + return; + } + + var id = jsonObj.id; + var apiCommand = "command=resetPasswordForVirtualMachine&id="+id; + doActionToTab(id, $actionLink, apiCommand, $midmenuItem1, $detailsTab); + }, + "No": function() { + $(this).dialog("close"); + } + }).dialog("open"); } -function doChangeService($actionLink, $detailsTab, $midmenuItem1) { - var jsonObj = $midmenuItem1.data("jsonObj"); +function doChangeService($actionLink, $detailsTab, $midmenuItem1) { + var jsonObj = $midmenuItem1.data("jsonObj"); var id = jsonObj.id; if (jsonObj.state != 'Stopped') { @@ -1694,49 +1693,49 @@ function doChangeService($actionLink, $detailsTab, $midmenuItem1) { } }).dialog("open"); return; - } - - $.ajax({ - data: createURL("command=listServiceOfferings&VirtualMachineId="+id), - dataType: "json", - async: false, - success: function(json) { - var offerings = json.listserviceofferingsresponse.serviceoffering; - var offeringSelect = $("#dialog_change_service_offering #change_service_offerings").empty(); - - if (offerings != null && offerings.length > 0) { - for (var i = 0; i < offerings.length; i++) { - var option = $("").data("name", fromdb(offerings[i].name)); - offeringSelect.append(option); - } - } - } - }); - - $("#dialog_change_service_offering") - .dialog('option', 'buttons', { - "OK": function() { - var $thisDialog = $(this); - - var isValid = true; - isValid &= validateDropDownBox("Service Offering", $thisDialog.find("#change_service_offerings"), $thisDialog.find("#change_service_offerings_errormsg")); - if (!isValid) - return; - - $thisDialog.dialog("close"); - var serviceOfferingId = $thisDialog.find("#change_service_offerings").val(); - - if(jsonObj.state != "Stopped") { - $midmenuItem1.find("#info_icon").addClass("error").show(); - $midmenuItem1.data("afterActionInfo", ($actionLink.data("label") + " action failed. Reason: virtual instance needs to be stopped before you can change its service.")); - } - var apiCommand = "command=changeServiceForVirtualMachine&id="+id+"&serviceOfferingId="+serviceOfferingId; - doActionToTab(id, $actionLink, apiCommand, $midmenuItem1, $detailsTab); - }, - "Cancel": function() { - $(this).dialog("close"); - } - }).dialog("open"); + } + + $.ajax({ + data: createURL("command=listServiceOfferings&VirtualMachineId="+id), + dataType: "json", + async: false, + success: function(json) { + var offerings = json.listserviceofferingsresponse.serviceoffering; + var offeringSelect = $("#dialog_change_service_offering #change_service_offerings").empty(); + + if (offerings != null && offerings.length > 0) { + for (var i = 0; i < offerings.length; i++) { + var option = $("").data("name", fromdb(offerings[i].name)); + offeringSelect.append(option); + } + } + } + }); + + $("#dialog_change_service_offering") + .dialog('option', 'buttons', { + "OK": function() { + var $thisDialog = $(this); + + var isValid = true; + isValid &= validateDropDownBox("Service Offering", $thisDialog.find("#change_service_offerings"), $thisDialog.find("#change_service_offerings_errormsg")); + if (!isValid) + return; + + $thisDialog.dialog("close"); + var serviceOfferingId = $thisDialog.find("#change_service_offerings").val(); + + if(jsonObj.state != "Stopped") { + $midmenuItem1.find("#info_icon").addClass("error").show(); + $midmenuItem1.data("afterActionInfo", ($actionLink.data("label") + " action failed. Reason: virtual instance needs to be stopped before you can change its service.")); + } + var apiCommand = "command=changeServiceForVirtualMachine&id="+id+"&serviceOfferingId="+serviceOfferingId; + doActionToTab(id, $actionLink, apiCommand, $midmenuItem1, $detailsTab); + }, + "Cancel": function() { + $(this).dialog("close"); + } + }).dialog("open"); } function doMigrateInstance($actionLink, $detailsTab, $midmenuItem1) { @@ -1813,19 +1812,19 @@ function vmToMidmenu(jsonObj, $midmenuItem1) { resetTopButtonMapFn = vmResetTopButtonMap; } -function vmToRightPanel($midmenuItem1) { - var jsonObj = $midmenuItem1.data("jsonObj"); - +function vmToRightPanel($midmenuItem1) { + var jsonObj = $midmenuItem1.data("jsonObj"); + var vmName = getVmName(jsonObj.name, jsonObj.displayname); - $("right_panel_header").find("#vm_name").text(vmName); - - copyActionInfoFromMidMenuToRightPanel($midmenuItem1); - - $("#right_panel_content").data("$midmenuItem1", $midmenuItem1); - $("#tab_details").click(); -} - -function vmJsonToDetailsTab(){ + $("right_panel_header").find("#vm_name").text(vmName); + + copyActionInfoFromMidMenuToRightPanel($midmenuItem1); + + $("#right_panel_content").data("$midmenuItem1", $midmenuItem1); + $("#tab_details").click(); +} + +function vmJsonToDetailsTab(){ var $midmenuItem1 = $("#right_panel_content").data("$midmenuItem1"); if ($midmenuItem1 == null) { vmJsonClearDetailsTab(); @@ -1840,103 +1839,103 @@ function vmJsonToDetailsTab(){ var $thisTab = $("#right_panel_content").find("#tab_content_details"); $thisTab.find("#tab_container").hide(); - $thisTab.find("#tab_spinning_wheel").show(); - + $thisTab.find("#tab_spinning_wheel").show(); + var id = jsonObj.id; //comment out the following AJAX call because it caused problem of multiple-selection middle menu - /* - $.ajax({ - data: createURL("command=listVirtualMachines&id="+id), - dataType: "json", - async: false, - success: function(json) { - var items = json.listvirtualmachinesresponse.virtualmachine; - if(items != null && items.length > 0) { - jsonObj = items[0]; //override jsonObj declared above - $midmenuItem1.data("jsonObj", jsonObj); - updateVmStateInMidMenu(jsonObj, $midmenuItem1); - } - } - }); + /* + $.ajax({ + data: createURL("command=listVirtualMachines&id="+id), + dataType: "json", + async: false, + success: function(json) { + var items = json.listvirtualmachinesresponse.virtualmachine; + if(items != null && items.length > 0) { + jsonObj = items[0]; //override jsonObj declared above + $midmenuItem1.data("jsonObj", jsonObj); + updateVmStateInMidMenu(jsonObj, $midmenuItem1); + } + } + }); */ - - resetViewConsoleAction(jsonObj, $thisTab); - setVmStateInRightPanel(jsonObj.state, $thisTab.find("#state")); - - - //refresh status every 2 seconds until status is not Starting/Stopping any more - var timerKey = "refreshInstanceStatus"; - $("body").stopTime(timerKey); //stop timer used by another middle menu item (i.e. stop timer when clicking on a different middle menu item) - if($midmenuItem1.find("#spinning_wheel").css("display") == "none") { - if(jsonObj.state in vmChangableStatus) { - $("body").everyTime( - 5000, - timerKey, - function() { - $.ajax({ - data: createURL("command=listVirtualMachines&id="+id), - dataType: "json", - async: false, - success: function(json) { - var items = json.listvirtualmachinesresponse.virtualmachine; - if(items != null && items.length > 0) { - jsonObj = items[0]; //override jsonObj declared above - $midmenuItem1.data("jsonObj", jsonObj); - if(!(jsonObj.state in vmChangableStatus)) { - $("body").stopTime(timerKey); - updateVmStateInMidMenu(jsonObj, $midmenuItem1); - if(jsonObj.id.toString() == $("#right_panel_content").find("#tab_content_details").find("#id").text()) { - setVmStateInRightPanel(jsonObj.state, $thisTab.find("#state")); - vmBuildActionMenu(jsonObj, $thisTab, $midmenuItem1); - } - } - } - } - }); - } - ); - } - } - - - $thisTab.find("#ipAddress").text(fromdb(jsonObj.ipaddress)); - $thisTab.find("#id").text(fromdb(jsonObj.id)); - $thisTab.find("#zoneName").text(fromdb(jsonObj.zonename)); - - var vmName = getVmName(jsonObj.name, jsonObj.displayname); - $thisTab.find("#title").text(vmName); - - $thisTab.find("#vmname").text(vmName); - $thisTab.find("#vmname_edit").val(fromdb(jsonObj.displayname)); - + + resetViewConsoleAction(jsonObj, $thisTab); + setVmStateInRightPanel(jsonObj.state, $thisTab.find("#state")); + + + //refresh status every 2 seconds until status is not Starting/Stopping any more + var timerKey = "refreshInstanceStatus"; + $("body").stopTime(timerKey); //stop timer used by another middle menu item (i.e. stop timer when clicking on a different middle menu item) + if($midmenuItem1.find("#spinning_wheel").css("display") == "none") { + if(jsonObj.state in vmChangableStatus) { + $("body").everyTime( + 5000, + timerKey, + function() { + $.ajax({ + data: createURL("command=listVirtualMachines&id="+id), + dataType: "json", + async: false, + success: function(json) { + var items = json.listvirtualmachinesresponse.virtualmachine; + if(items != null && items.length > 0) { + jsonObj = items[0]; //override jsonObj declared above + $midmenuItem1.data("jsonObj", jsonObj); + if(!(jsonObj.state in vmChangableStatus)) { + $("body").stopTime(timerKey); + updateVmStateInMidMenu(jsonObj, $midmenuItem1); + if(jsonObj.id.toString() == $("#right_panel_content").find("#tab_content_details").find("#id").text()) { + setVmStateInRightPanel(jsonObj.state, $thisTab.find("#state")); + vmBuildActionMenu(jsonObj, $thisTab, $midmenuItem1); + } + } + } + } + }); + } + ); + } + } + + + $thisTab.find("#ipAddress").text(fromdb(jsonObj.ipaddress)); + $thisTab.find("#id").text(fromdb(jsonObj.id)); + $thisTab.find("#zoneName").text(fromdb(jsonObj.zonename)); + + var vmName = getVmName(jsonObj.name, jsonObj.displayname); + $thisTab.find("#title").text(vmName); + + $thisTab.find("#vmname").text(vmName); + $thisTab.find("#vmname_edit").val(fromdb(jsonObj.displayname)); + $thisTab.find("#ipaddress").text(fromdb(jsonObj.ipaddress)); - $thisTab.find("#hypervisor").text(fromdb(jsonObj.hypervisor)); - $thisTab.find("#templateName").text(fromdb(jsonObj.templatename)); - + $thisTab.find("#hypervisor").text(fromdb(jsonObj.hypervisor)); + $thisTab.find("#templateName").text(fromdb(jsonObj.templatename)); + $thisTab.find("#ostypename").text(osTypeMap[fromdb(jsonObj.guestosid)]); - $thisTab.find("#ostypename_edit").val(fromdb(jsonObj.guestosid)); - - $thisTab.find("#serviceOfferingName").text(fromdb(jsonObj.serviceofferingname)); - $thisTab.find("#account").text(fromdb(jsonObj.account)); - $thisTab.find("#domain").text(fromdb(jsonObj.domain)); - $thisTab.find("#hostName").text(fromdb(jsonObj.hostname)); - - $thisTab.find("#group").text(fromdb(jsonObj.group)); - $thisTab.find("#group_edit").val(fromdb(jsonObj.group)); - - setDateField(jsonObj.created, $thisTab.find("#created")); - + $thisTab.find("#ostypename_edit").val(fromdb(jsonObj.guestosid)); + + $thisTab.find("#serviceOfferingName").text(fromdb(jsonObj.serviceofferingname)); + $thisTab.find("#account").text(fromdb(jsonObj.account)); + $thisTab.find("#domain").text(fromdb(jsonObj.domain)); + $thisTab.find("#hostName").text(fromdb(jsonObj.hostname)); + + $thisTab.find("#group").text(fromdb(jsonObj.group)); + $thisTab.find("#group_edit").val(fromdb(jsonObj.group)); + + setDateField(jsonObj.created, $thisTab.find("#created")); + setBooleanReadField(jsonObj.haenable, $thisTab.find("#haenable")); setBooleanEditField(jsonObj.haenable, $thisTab.find("#haenable_edit")); setBooleanReadField((jsonObj.isoid != null), $thisTab.find("#iso")); - //actions *** - vmBuildActionMenu(jsonObj, $thisTab, $midmenuItem1); + //actions *** + vmBuildActionMenu(jsonObj, $thisTab, $midmenuItem1); - $thisTab.find("#tab_spinning_wheel").hide(); + $thisTab.find("#tab_spinning_wheel").hide(); $thisTab.find("#tab_container").show(); } @@ -1945,69 +1944,68 @@ var vmChangableStatus = { "Stopping": 1 } -function vmBuildActionMenu(jsonObj, $thisTab, $midmenuItem1) { - var $actionMenu = $thisTab.find("#action_link #action_menu"); - $actionMenu.find("#action_list").empty(); - var noAvailableActions = true; - - if (jsonObj.state == 'Destroyed') { - if(isAdmin() || isDomainAdmin()) { - buildActionLinkForTab("label.action.restore.instance", vmActionMap, $actionMenu, $midmenuItem1, $thisTab); - noAvailableActions = false; - } - } - else if (jsonObj.state == 'Running') { - buildActionLinkForTab("label.action.edit.instance", vmActionMap, $actionMenu, $midmenuItem1, $thisTab); - buildActionLinkForTab("label.action.stop.instance", vmActionMap, $actionMenu, $midmenuItem1, $thisTab); - buildActionLinkForTab("label.action.reboot.instance", vmActionMap, $actionMenu, $midmenuItem1, $thisTab); +function vmBuildActionMenu(jsonObj, $thisTab, $midmenuItem1) { + var $actionMenu = $thisTab.find("#action_link #action_menu"); + $actionMenu.find("#action_list").empty(); + var noAvailableActions = true; + + if (jsonObj.state == 'Destroyed') { + if(isAdmin() || isDomainAdmin()) { + buildActionLinkForTab("label.action.restore.instance", vmActionMap, $actionMenu, $midmenuItem1, $thisTab); + noAvailableActions = false; + } + } + else if (jsonObj.state == 'Running') { + buildActionLinkForTab("label.action.edit.instance", vmActionMap, $actionMenu, $midmenuItem1, $thisTab); + buildActionLinkForTab("label.action.stop.instance", vmActionMap, $actionMenu, $midmenuItem1, $thisTab); + buildActionLinkForTab("label.action.reboot.instance", vmActionMap, $actionMenu, $midmenuItem1, $thisTab); buildActionLinkForTab("label.action.destroy.instance", vmActionMap, $actionMenu, $midmenuItem1, $thisTab); if (isAdmin() && (jsonObj.rootdevicetype == 'NetworkFilesystem' || jsonObj.rootdevicetype == 'IscsiLUN' || jsonObj.rootdevicetype == 'PreSetup') && (jsonObj.hypervisor == 'XenServer' || jsonObj.hypervisor == 'VMware')) { buildActionLinkForTab("label.action.migrate.instance", vmActionMap, $actionMenu, $midmenuItem1, $thisTab); - } - - if (jsonObj.isoid == null) - buildActionLinkForTab("label.action.attach.iso", vmActionMap, $actionMenu, $midmenuItem1, $thisTab); - else - buildActionLinkForTab("label.action.detach.iso", vmActionMap, $actionMenu, $midmenuItem1, $thisTab); - + } + + if (jsonObj.isoid == null) + buildActionLinkForTab("label.action.attach.iso", vmActionMap, $actionMenu, $midmenuItem1, $thisTab); + else + buildActionLinkForTab("label.action.detach.iso", vmActionMap, $actionMenu, $midmenuItem1, $thisTab); + buildActionLinkForTab("label.action.reset.password", vmActionMap, $actionMenu, $midmenuItem1, $thisTab); buildActionLinkForTab("label.action.change.service", vmActionMap, $actionMenu, $midmenuItem1, $thisTab); if(jsonObj.hypervisor == "BareMetal") buildActionLinkForTab("label.action.create.template", vmActionMap, $actionMenu, $midmenuItem1, $thisTab); - - noAvailableActions = false; - } - else if (jsonObj.state == 'Stopped') { - buildActionLinkForTab("label.action.edit.instance", vmActionMap, $actionMenu, $midmenuItem1, $thisTab); - buildActionLinkForTab("label.action.start.instance", vmActionMap, $actionMenu, $midmenuItem1, $thisTab); - buildActionLinkForTab("label.action.destroy.instance", vmActionMap, $actionMenu, $midmenuItem1, $thisTab); - - if (jsonObj.isoid == null) - buildActionLinkForTab("label.action.attach.iso", vmActionMap, $actionMenu, $midmenuItem1, $thisTab); - else - buildActionLinkForTab("label.action.detach.iso", vmActionMap, $actionMenu, $midmenuItem1, $thisTab); - - buildActionLinkForTab("label.action.reset.password", vmActionMap, $actionMenu, $midmenuItem1, $thisTab); + + noAvailableActions = false; + } + else if (jsonObj.state == 'Stopped') { + buildActionLinkForTab("label.action.edit.instance", vmActionMap, $actionMenu, $midmenuItem1, $thisTab); + buildActionLinkForTab("label.action.start.instance", vmActionMap, $actionMenu, $midmenuItem1, $thisTab); + buildActionLinkForTab("label.action.destroy.instance", vmActionMap, $actionMenu, $midmenuItem1, $thisTab); + + if (jsonObj.isoid == null) + buildActionLinkForTab("label.action.attach.iso", vmActionMap, $actionMenu, $midmenuItem1, $thisTab); + else + buildActionLinkForTab("label.action.detach.iso", vmActionMap, $actionMenu, $midmenuItem1, $thisTab); + + buildActionLinkForTab("label.action.reset.password", vmActionMap, $actionMenu, $midmenuItem1, $thisTab); buildActionLinkForTab("label.action.change.service", vmActionMap, $actionMenu, $midmenuItem1, $thisTab); if(jsonObj.hypervisor == "BareMetal") buildActionLinkForTab("label.action.create.template", vmActionMap, $actionMenu, $midmenuItem1, $thisTab); - - noAvailableActions = false; - } - + + noAvailableActions = false; + } else if (jsonObj.state == 'Error') { buildActionLinkForTab("label.action.destroy.instance", vmActionMap, $actionMenu, $midmenuItem1, $thisTab); noAvailableActions = false; } - // no available actions - if(noAvailableActions == true) { - $actionMenu.find("#action_list").append($("#no_available_actions").clone().show()); + // no available actions + if(noAvailableActions == true) { + $actionMenu.find("#action_list").append($("#no_available_actions").clone().show()); } } @@ -2018,46 +2016,46 @@ var vmTopButtonMap = { "destroy_vm_button": 0 }; -function vmCountTopButtonMap(jsonObj) { - if(jsonObj == null) - return; - - if (jsonObj.state == 'Running') { - vmTopButtonMap["stop_vm_button"] += 1; - vmTopButtonMap["reboot_vm_button"] += 1; - vmTopButtonMap["destroy_vm_button"] += 1; - } - else if (jsonObj.state == 'Stopped') { - vmTopButtonMap["start_vm_button"] += 1; - vmTopButtonMap["destroy_vm_button"] += 1; - } +function vmCountTopButtonMap(jsonObj) { + if(jsonObj == null) + return; + + if (jsonObj.state == 'Running') { + vmTopButtonMap["stop_vm_button"] += 1; + vmTopButtonMap["reboot_vm_button"] += 1; + vmTopButtonMap["destroy_vm_button"] += 1; + } + else if (jsonObj.state == 'Stopped') { + vmTopButtonMap["start_vm_button"] += 1; + vmTopButtonMap["destroy_vm_button"] += 1; + } else if (jsonObj.state == 'Error') { vmTopButtonMap["destroy_vm_button"] += 1; } } -function vmUncountTopButtonMap(jsonObj) { - if(jsonObj == null) - return; - - if (jsonObj.state == 'Running') { - vmTopButtonMap["stop_vm_button"] -= 1; - vmTopButtonMap["reboot_vm_button"] -= 1; - vmTopButtonMap["destroy_vm_button"] -= 1; - } - else if (jsonObj.state == 'Stopped') { - vmTopButtonMap["start_vm_button"] -= 1; - vmTopButtonMap["destroy_vm_button"] -= 1; - } +function vmUncountTopButtonMap(jsonObj) { + if(jsonObj == null) + return; + + if (jsonObj.state == 'Running') { + vmTopButtonMap["stop_vm_button"] -= 1; + vmTopButtonMap["reboot_vm_button"] -= 1; + vmTopButtonMap["destroy_vm_button"] -= 1; + } + else if (jsonObj.state == 'Stopped') { + vmTopButtonMap["start_vm_button"] -= 1; + vmTopButtonMap["destroy_vm_button"] -= 1; + } else if (jsonObj.state == 'Error') { vmTopButtonMap["destroy_vm_button"] -= 1; } } function vmGrayoutTopButtons() { - var itemCounts = 0; - for(var id in selectedItemsInMidMenu) { - itemCounts ++; + var itemCounts = 0; + for(var id in selectedItemsInMidMenu) { + itemCounts ++; } for(var buttonElementId in vmTopButtonMap) { @@ -2166,24 +2164,24 @@ function vmJsonToVolumeTab() { $thisTab.find("#tab_container").hide(); $thisTab.find("#tab_spinning_wheel").show(); - $.ajax({ - cache: false, + $.ajax({ + cache: false, data: createURL("command=listVolumes&virtualMachineId="+jsonObj.id), - dataType: "json", - success: function(json) { - var items = json.listvolumesresponse.volume; - var $container = $thisTab.find("#tab_container").empty(); - if (items != null && items.length > 0) { - var template = $("#volume_tab_template"); - for (var i = 0; i < items.length; i++) { - var newTemplate = template.clone(true); - vmVolumeJSONToTemplate(items[i], newTemplate); - $container.append(newTemplate.show()); - } - } - $thisTab.find("#tab_spinning_wheel").hide(); - $thisTab.find("#tab_container").show(); - } + dataType: "json", + success: function(json) { + var items = json.listvolumesresponse.volume; + var $container = $thisTab.find("#tab_container").empty(); + if (items != null && items.length > 0) { + var template = $("#volume_tab_template"); + for (var i = 0; i < items.length; i++) { + var newTemplate = template.clone(true); + vmVolumeJSONToTemplate(items[i], newTemplate); + $container.append(newTemplate.show()); + } + } + $thisTab.find("#tab_spinning_wheel").hide(); + $thisTab.find("#tab_container").show(); + } }); } @@ -2193,7 +2191,7 @@ function vmJsonClearVolumeTab() { $thisTab.find("#tab_container").empty(); } -function vmJsonToStatisticsTab() { +function vmJsonToStatisticsTab() { var $midmenuItem1 = $("#right_panel_content").data("$midmenuItem1"); if ($midmenuItem1 == null) { vmJsonClearStatisticsTab(); @@ -2246,34 +2244,34 @@ function vmClearRightPanel(jsonObj) { } function vmJsonClearDetailsTab(){ - var $thisTab = $("#right_panel_content").find("#tab_content_details"); - resetViewConsoleAction(null, $thisTab); - setVmStateInRightPanel(null, $thisTab.find("#state")); - $thisTab.find("#ipAddress").text(""); - $thisTab.find("#id").text(""); - $thisTab.find("#zoneName").text(""); - $thisTab.find("#title").text(""); - $thisTab.find("#vmname").text(""); - $thisTab.find("#vmname_edit").val(""); + var $thisTab = $("#right_panel_content").find("#tab_content_details"); + resetViewConsoleAction(null, $thisTab); + setVmStateInRightPanel(null, $thisTab.find("#state")); + $thisTab.find("#ipAddress").text(""); + $thisTab.find("#id").text(""); + $thisTab.find("#zoneName").text(""); + $thisTab.find("#title").text(""); + $thisTab.find("#vmname").text(""); + $thisTab.find("#vmname_edit").val(""); $thisTab.find("#ipaddress").text(""); - $thisTab.find("#hypervisor").text(""); - $thisTab.find("#templateName").text(""); + $thisTab.find("#hypervisor").text(""); + $thisTab.find("#templateName").text(""); $thisTab.find("#ostypename").text(""); - $thisTab.find("#ostypename_edit").val(""); - $thisTab.find("#serviceOfferingName").text(""); - $thisTab.find("#account").text(""); - $thisTab.find("#domain").text(""); - $thisTab.find("#hostName").text(""); - $thisTab.find("#group").text(""); - $thisTab.find("#group_edit").val(""); - $thisTab.find("#created").text(""); + $thisTab.find("#ostypename_edit").val(""); + $thisTab.find("#serviceOfferingName").text(""); + $thisTab.find("#account").text(""); + $thisTab.find("#domain").text(""); + $thisTab.find("#hostName").text(""); + $thisTab.find("#group").text(""); + $thisTab.find("#group_edit").val(""); + $thisTab.find("#created").text(""); $thisTab.find("#haenable").text(""); $thisTab.find("#iso").text(""); - //actions *** - var $actionMenu = $("#right_panel_content #tab_content_details #action_link #action_menu"); - $actionMenu.find("#action_list").empty(); - $actionMenu.find("#action_list").append($("#no_available_actions").clone().show()); + //actions *** + var $actionMenu = $("#right_panel_content #tab_content_details #action_link #action_menu"); + $actionMenu.find("#action_list").empty(); + $actionMenu.find("#action_list").append($("#no_available_actions").clone().show()); } //***** declaration for volume tab (begin) ********************************************************* @@ -2380,21 +2378,21 @@ function securityGroupIngressRuleJSONToTemplate(jsonObj, $template) { } function vmVolumeJSONToTemplate(json, $template) { - $template.attr("id","vm_volume_"+fromdb(json.id)); - $template.data("jsonObj", json); - $template.find("#title").text(fromdb(json.name)); - $template.find("#id").text(fromdb(json.id)); - $template.find("#name").text(fromdb(json.name)); - if (json.storagetype == "shared") - $template.find("#type").text(fromdb(json.type) + " (shared storage)"); - else - $template.find("#type").text(fromdb(json.type) + " (local storage)"); - - $template.find("#size").text((json.size == "0") ? "" : convertBytes(json.size)); - setDateField(json.created, $template.find("#created")); - - //***** actions (begin) ***** - var $actionLink = $template.find("#action_link"); + $template.attr("id","vm_volume_"+fromdb(json.id)); + $template.data("jsonObj", json); + $template.find("#title").text(fromdb(json.name)); + $template.find("#id").text(fromdb(json.id)); + $template.find("#name").text(fromdb(json.name)); + if (json.storagetype == "shared") + $template.find("#type").text(fromdb(json.type) + " (shared storage)"); + else + $template.find("#type").text(fromdb(json.type) + " (local storage)"); + + $template.find("#size").text((json.size == "0") ? "" : convertBytes(json.size)); + setDateField(json.created, $template.find("#created")); + + //***** actions (begin) ***** + var $actionLink = $template.find("#action_link"); bindActionLink($actionLink); /* $actionLink.unbind("mouseover").bind("mouseover", function(event) { @@ -2404,52 +2402,52 @@ function vmVolumeJSONToTemplate(json, $template) { $actionLink.unbind("mouseout").bind("mouseout", function(event) { $(this).find("#action_menu").hide(); return false; - }); - */ - - var $actionMenu = $actionLink.find("#action_menu"); - $actionMenu.find("#action_list").empty(); - var noAvailableActions = true; - - buildActionLinkForSubgridItem("label.action.take.snapshot", vmVolumeActionMap, $actionMenu, $template); - noAvailableActions = false; - - if(json.type=="ROOT") { //"label.action.create.template" is allowed(when stopped), "label.action.detach.disk" is disallowed. - if (json.vmstate == "Stopped") { - buildActionLinkForSubgridItem("label.action.create.template", vmVolumeActionMap, $actionMenu, $template); - noAvailableActions = false; - } - } - else { //json.type=="DATADISK": "label.action.detach.disk" is allowed, "label.action.create.template" is disallowed. - buildActionLinkForSubgridItem("label.action.detach.disk", vmVolumeActionMap, $actionMenu, $template); - noAvailableActions = false; - } - - // no available actions - if(noAvailableActions == true) { - $actionMenu.find("#action_list").append($("#no_available_actions").clone().show()); - } - //***** actions (end) ***** + }); + */ + + var $actionMenu = $actionLink.find("#action_menu"); + $actionMenu.find("#action_list").empty(); + var noAvailableActions = true; + + buildActionLinkForSubgridItem("label.action.take.snapshot", vmVolumeActionMap, $actionMenu, $template); + noAvailableActions = false; + + if(json.type=="ROOT") { //"label.action.create.template" is allowed(when stopped), "label.action.detach.disk" is disallowed. + if (json.vmstate == "Stopped") { + buildActionLinkForSubgridItem("label.action.create.template", vmVolumeActionMap, $actionMenu, $template); + noAvailableActions = false; + } + } + else { //json.type=="DATADISK": "label.action.detach.disk" is allowed, "label.action.create.template" is disallowed. + buildActionLinkForSubgridItem("label.action.detach.disk", vmVolumeActionMap, $actionMenu, $template); + noAvailableActions = false; + } + + // no available actions + if(noAvailableActions == true) { + $actionMenu.find("#action_list").append($("#no_available_actions").clone().show()); + } + //***** actions (end) ***** } //***** declaration for volume tab (end) ********************************************************* - -function appendInstanceGroup(groupId, groupName) { - var $leftmenuSubmenuTemplate = $("#leftmenu_submenu_template").clone().show(); - $leftmenuSubmenuTemplate.attr("id", ("leftmenu_instance_group_"+groupId)); - $leftmenuSubmenuTemplate.data("groupId", groupId) - $leftmenuSubmenuTemplate.find("#submenu_name").text(groupName); - $leftmenuSubmenuTemplate.find("#icon").attr("src", "images/instance_leftmenuicon.png").show(); - + +function appendInstanceGroup(groupId, groupName) { + var $leftmenuSubmenuTemplate = $("#leftmenu_submenu_template").clone().show(); + $leftmenuSubmenuTemplate.attr("id", ("leftmenu_instance_group_"+groupId)); + $leftmenuSubmenuTemplate.data("groupId", groupId) + $leftmenuSubmenuTemplate.find("#submenu_name").text(groupName); + $leftmenuSubmenuTemplate.find("#icon").attr("src", "images/instance_leftmenuicon.png").show(); + $leftmenuSubmenuTemplate.bind("click", function(event) { $("#midmenu_container").empty(); selectedItemsInMidMenu = {}; var groupId = $(this).data("groupId"); - $.ajax({ - cache: false, + $.ajax({ + cache: false, data: createURL("command=listVirtualMachines&groupid="+groupId+"&pagesize="+midmenuItemCount+"&page=1"), - dataType: "json", + dataType: "json", success: function(json) { var instances = json.listvirtualmachinesresponse.virtualmachine; if (instances != null && instances.length > 0) { @@ -2466,44 +2464,44 @@ function appendInstanceGroup(groupId, groupName) { } }); return false; - }); - $("#leftmenu_instance_group_container").append($leftmenuSubmenuTemplate); -} - + }); + $("#leftmenu_instance_group_container").append($leftmenuSubmenuTemplate); +} + function doCreateTemplateFromVmVolume($actionLink, $subgridItem) { var $dialogCreateTemplate = $("#dialog_create_template_from_volume"); var jsonObj = $subgridItem.data("jsonObj"); - - $dialogCreateTemplate - .dialog('option', 'buttons', { - "OK": function() { - var thisDialog = $(this); - - // validate values - var isValid = true; - isValid &= validateString("Name", thisDialog.find("#create_template_name"), thisDialog.find("#create_template_name_errormsg")); - isValid &= validateString("Display Text", thisDialog.find("#create_template_desc"), thisDialog.find("#create_template_desc_errormsg")); - if (!isValid) - return; - - thisDialog.dialog("close"); - - var name = trim(thisDialog.find("#create_template_name").val()); - var desc = trim(thisDialog.find("#create_template_desc").val()); - var osType = thisDialog.find("#create_template_os_type").val(); - var isPublic = thisDialog.find("#create_template_public").val(); - var password = thisDialog.find("#create_template_password").val(); - - var id = $subgridItem.data("jsonObj").id; - var apiCommand = "command=createTemplate&volumeId="+id+"&name="+todb(name)+"&displayText="+todb(desc)+"&osTypeId="+osType+"&isPublic="+isPublic+"&passwordEnabled="+password; - doActionToSubgridItem(id, $actionLink, apiCommand, $subgridItem); - }, - "Cancel": function() { - $(this).dialog("close"); - } - }).dialog("open"); -} + + $dialogCreateTemplate + .dialog('option', 'buttons', { + "OK": function() { + var thisDialog = $(this); + + // validate values + var isValid = true; + isValid &= validateString("Name", thisDialog.find("#create_template_name"), thisDialog.find("#create_template_name_errormsg")); + isValid &= validateString("Display Text", thisDialog.find("#create_template_desc"), thisDialog.find("#create_template_desc_errormsg")); + if (!isValid) + return; + + thisDialog.dialog("close"); + + var name = trim(thisDialog.find("#create_template_name").val()); + var desc = trim(thisDialog.find("#create_template_desc").val()); + var osType = thisDialog.find("#create_template_os_type").val(); + var isPublic = thisDialog.find("#create_template_public").val(); + var password = thisDialog.find("#create_template_password").val(); + + var id = $subgridItem.data("jsonObj").id; + var apiCommand = "command=createTemplate&volumeId="+id+"&name="+todb(name)+"&displayText="+todb(desc)+"&osTypeId="+osType+"&isPublic="+isPublic+"&passwordEnabled="+password; + doActionToSubgridItem(id, $actionLink, apiCommand, $subgridItem); + }, + "Cancel": function() { + $(this).dialog("close"); + } + }).dialog("open"); +} function doCreateTemplateFromVM($actionLink, $detailsTab, $midmenuItem1) { var $dialogCreateTemplate = $("#dialog_create_template_from_vm"); @@ -2555,21 +2553,20 @@ function doCreateTemplateFromVM($actionLink, $detailsTab, $midmenuItem1) { } }).dialog("open"); } - -function doTakeSnapshotFromVmVolume($actionLink, $subgridItem) { - $("#dialog_confirmation") - .text(dictionary["message.action.take.snapshot"]) - .dialog('option', 'buttons', { - "Confirm": function() { - $(this).dialog("close"); - - var id = $subgridItem.data("jsonObj").id; - var apiCommand = "command=createSnapshot&volumeid="+id; - doActionToSubgridItem(id, $actionLink, apiCommand, $subgridItem); - }, - "Cancel": function() { - $(this).dialog("close"); - } - }).dialog("open"); -} - + +function doTakeSnapshotFromVmVolume($actionLink, $subgridItem) { + $("#dialog_confirmation") + .text(dictionary["message.action.take.snapshot"]) + .dialog('option', 'buttons', { + "Confirm": function() { + $(this).dialog("close"); + + var id = $subgridItem.data("jsonObj").id; + var apiCommand = "command=createSnapshot&volumeid="+id; + doActionToSubgridItem(id, $actionLink, apiCommand, $subgridItem); + }, + "Cancel": function() { + $(this).dialog("close"); + } + }).dialog("open"); +}