From 7498be0febfa0ad6984567ddca10648e0e5c8fa4 Mon Sep 17 00:00:00 2001 From: Jorge Lobo <47326048+jloboescalona2@users.noreply.github.com> Date: Wed, 6 Mar 2019 10:20:52 +0100 Subject: [PATCH] b # 2993 delete langs and solved fix Vm_quota in conditions (#3030) (cherry picked from commit 52a38a9b9029f8952f71bf1add562436ec207d13) --- install.sh | 5 - src/sunstone/public/app/tabs/provision-tab.js | 2589 ++++++++--------- 2 files changed, 1216 insertions(+), 1378 deletions(-) diff --git a/install.sh b/install.sh index 95df272ca6..f30921479c 100755 --- a/install.sh +++ b/install.sh @@ -549,7 +549,6 @@ INSTALL_SUNSTONE_PUBLIC_MINIFIED_FILES=( SUNSTONE_PUBLIC_LOCALE_CS_CZ:$SUNSTONE_LOCATION/public/locale/languages SUNSTONE_PUBLIC_LOCALE_DE:$SUNSTONE_LOCATION/public/locale/languages SUNSTONE_PUBLIC_LOCALE_DA:$SUNSTONE_LOCATION/public/locale/languages - SUNSTONE_PUBLIC_LOCALE_EL_GR:$SUNSTONE_LOCATION/public/locale/languages SUNSTONE_PUBLIC_LOCALE_EN_US:$SUNSTONE_LOCATION/public/locale/languages SUNSTONE_PUBLIC_LOCALE_ES_ES:$SUNSTONE_LOCATION/public/locale/languages SUNSTONE_PUBLIC_LOCALE_FA_IR:$SUNSTONE_LOCATION/public/locale/languages @@ -1998,10 +1997,6 @@ SUNSTONE_PUBLIC_LOCALE_DA="\ src/sunstone/public/locale/languages/da.js \ src/sunstone/public/locale/languages/da_datatable.txt" -SUNSTONE_PUBLIC_LOCALE_EL_GR="\ -src/sunstone/public/locale/languages/el_GR.js \ -src/sunstone/public/locale/languages/el_datatable.txt" - SUNSTONE_PUBLIC_LOCALE_EN_US="\ src/sunstone/public/locale/languages/en_US.js \ src/sunstone/public/locale/languages/en_datatable.txt" diff --git a/src/sunstone/public/app/tabs/provision-tab.js b/src/sunstone/public/app/tabs/provision-tab.js index 93972d3560..0803dcc6ef 100644 --- a/src/sunstone/public/app/tabs/provision-tab.js +++ b/src/sunstone/public/app/tabs/provision-tab.js @@ -15,1229 +15,554 @@ /* -------------------------------------------------------------------------- */ define(function(require) { -// require('foundation.core'); -// require('foundation.accordion'); - require("datatables.net"); - require("datatables.foundation"); - var Locale = require("utils/locale"); - var Config = require("sunstone-config"); - var OpenNebula = require("opennebula"); - var Sunstone = require("sunstone"); - var Notifier = require("utils/notifier"); - var QuotaWidgets = require("utils/quotas/quota-widgets"); - var QuotaDefaults = require("utils/quotas/quota-defaults"); - var Accounting = require("utils/accounting"); - var Showback = require("utils/showback"); - var Humanize = require("utils/humanize"); - var QuotaLimits = require("utils/quotas/quota-limits"); - var RangeSlider = require("utils/range-slider"); - var DisksResize = require("utils/disks-resize"); - var NicsSection = require("utils/nics-section"); - var VMGroupSection = require("utils/vmgroup-section"); - var TemplateUtils = require("utils/template-utils"); - var WizardFields = require("utils/wizard-fields"); - var UserInputs = require("utils/user-inputs"); - var CapacityInputs = require("tabs/templates-tab/form-panels/create/wizard-tabs/general/capacity-inputs"); - var LabelsUtils = require("utils/labels/utils"); - var DatastoresTable = require("tabs/datastores-tab/datatable"); - var UniqueId = require("utils/unique-id"); - - var ProvisionVmsList = require("./provision-tab/vms/list"); - var ProvisionTemplatesList = require("./provision-tab/templates/list"); - var ProvisionFlowsList = require("./provision-tab/flows/list"); - - // Templates - var TemplateContent = require("hbs!./provision-tab/content"); - var TemplateDashboardQuotas = require("hbs!./provision-tab/dashboard/quotas"); - var TemplateDashboardGroupQuotas = require("hbs!./provision-tab/dashboard/group-quotas"); - var TemplateDashboardVms = require("hbs!./provision-tab/dashboard/vms"); - var TemplateDashboardGroupVms = require("hbs!./provision-tab/dashboard/group-vms"); - - var TAB_ID = require("./provision-tab/tabId"); - var FLOW_TEMPLATE_LABELS_COLUMN = 2; - - var povision_actions = { - "Provision.Flow.instantiate" : { - type: "single", - call: OpenNebula.ServiceTemplate.instantiate, - callback: function(){ - OpenNebula.Action.clear_cache("SERVICE"); - ProvisionFlowsList.show(0); - var context = $("#provision_create_flow"); - $("#flow_name", context).val(""); - $(".total_cost_div", context).hide(); - $(".provision-pricing-table", context).removeClass("selected"); - }, - error: Notifier.onError - }, - - "Provision.instantiate" : { - type: "single", - call: OpenNebula.Template.instantiate, - callback: _clearVMCreate, - error: Notifier.onError - }, - - "Provision.instantiate_persistent" : { - type: "single", - call: OpenNebula.Template.instantiate_persistent, - callback: _clearVMCreate, - error: Notifier.onError - } - }; - - function _clearVMCreate(){ - OpenNebula.Action.clear_cache("VM"); - ProvisionVmsList.show(0); - var context = $("#provision_create_vm"); - $("#vm_name", context).val(""); - $(".provision_selected_networks").html(""); - $(".provision_vmgroup_selector").html(""); - $(".provision_ds_selector").html(""); - $(".provision-pricing-table", context).removeClass("selected"); - $(".alert-box-error", context).hide(); - $(".total_cost_div", context).hide(); - - $("#provision_vm_instantiate_templates_owner_filter").val("all").change(); - $("#provision_vm_instantiate_template_search").val("").trigger("input"); - } - - //$(document).foundation(); - - function generate_cardinality_selector(context, role_template, template_json) { - context.off(); - var min_vms = (role_template.min_vms||1); - var max_vms = (role_template.max_vms||20); - - context.html( - "
"); - - var cost = OpenNebula.Template.cost(template_json); - - var has_cost = (cost != 0) && Config.isFeatureEnabled("showback"); - - if (has_cost) { - $(".provision_create_service_cost_div", context).show(); - $(".provision_create_service_cost_div", context).data("cost", cost); - - var cost_value = cost*parseInt(role_template.cardinality); - $(".cost_value", context).html(cost_value.toFixed(2)); - _calculateFlowCost(); - } else { - $(".provision_create_service_cost_div", context).hide(); - } - - if (max_vms > min_vms) { - $( ".cardinality_slider_div", context).html(RangeSlider.html({ - min: min_vms, - max: max_vms, - initial: role_template.cardinality, - label: Locale.tr("Number of VMs for Role")+" "+role_template.name, - name: "cardinality" - })); - - $( ".cardinality_slider_div", context).show(); - $( ".cardinality_no_slider_div", context).hide(); - - $( ".cardinality_slider_div", context).off("input"); - - if (has_cost) { - $( ".cardinality_slider_div", context).on("input", "input", function() { - var cost_value = $(".provision_create_service_cost_div", context).data("cost")*$(this).val(); - $(".cost_value", context).html(cost_value.toFixed(2)); - _calculateFlowCost(); - }); - } - } else { - $( ".cardinality_slider_div", context).hide(); - $( ".cardinality_no_slider_div", context).show(); - } - } - - function generate_provision_capacity_accordion(context, element) { - - var capacity = element.TEMPLATE; - - context.off(); - var memory_value; - var memory_unit; - - if (capacity.MEMORY >= 1024){ - memory_value = (capacity.MEMORY/1024).toFixed(2); - memory_unit = "GB"; - } else { - memory_value = (capacity.MEMORY ? capacity.MEMORY : "-"); - memory_unit = "MB"; - } - - context.html( - ""); - - if (Config.provision.dashboard.isEnabled("quotas")) { - $("#quotas-mem", context).show(); - $("#quotas-cpu", context).show(); - var quotaMem = false; - var quotaCpu = false; - - var user = this.user; - if (!$.isEmptyObject(user.VM_QUOTA)){ - var memUsed = parseFloat(user.VM_QUOTA.VM.MEMORY_USED); - var cpuUsed = parseFloat(user.VM_QUOTA.VM.CPU_USED); - if (user.VM_QUOTA.VM.MEMORY === "-1" || user.VM_QUOTA.VM.MEMORY === "-2"){ - $("#quotas-mem", context).text(Humanize.size(memUsed * 1024) + " / ∞"); - } else { - quotaMem = true; - $("#quotas-mem", context).text(Humanize.size(memUsed * 1024) + " / " + Humanize.size(user.VM_QUOTA.VM.MEMORY * 1024)); - } - if (user.VM_QUOTA.VM.CPU === "-1" || user.VM_QUOTA.VM.CPU === "-2"){ - $("#quotas-cpu", context).text(cpuUsed + " / ∞"); - } else { - quotaCpu = true; - $("#quotas-cpu", context).text(cpuUsed + " / " + user.VM_QUOTA.VM.CPU); - } - } - } - - CapacityInputs.setup(context); - CapacityInputs.fill(context, element); - - CapacityInputs.setCallback(context, function(values){ - $(".cpu_value", context).html(values.CPU); - - var memory_value; - var memory_unit; - - if (values.MEMORY >= 1024){ - memory_value = (values.MEMORY/1024).toFixed(2); - memory_unit = "GB"; - } else { - memory_value = values.MEMORY; - memory_unit = "MB"; - } - - $(".memory_value", context).html(memory_value); - $(".memory_unit", context).html(memory_unit); - - if (!values.MEMORY){ - values.MEMORY = 0; - } - if (!values.CPU){ - values.CPU = 0; - } - if (!$.isEmptyObject(user.VM_QUOTA)){ - if (quotaMem){ - $("#quotas-mem", context).text( Humanize.size((parseFloat(user.VM_QUOTA.VM.MEMORY_USED) + parseFloat(values.MEMORY)) * 1024) + " / " + Humanize.size(user.VM_QUOTA.VM.MEMORY * 1024)); - if ((parseFloat(values.MEMORY) + parseFloat(user.VM_QUOTA.VM.MEMORY_USED)) > user.VM_QUOTA.VM.MEMORY){ - $("#quotas-mem", context).css("color", "red"); - } else { - $("#quotas-mem", context).css("color", "black"); - } - } else { - $("#quotas-mem", context).text( Humanize.size((parseFloat(user.VM_QUOTA.VM.MEMORY_USED) + parseFloat(values.MEMORY)) * 1024) + " / ∞"); - } - if (quotaCpu){ - $("#quotas-cpu", context).text(((parseFloat(user.VM_QUOTA.VM.CPU_USED) + parseFloat(values.CPU))).toFixed(2) + " / " + user.VM_QUOTA.VM.CPU); - if ((parseFloat(values.CPU) + parseFloat(user.VM_QUOTA.VM.CPU_USED)) > user.VM_QUOTA.VM.CPU){ - $("#quotas-cpu", context).css("color", "red"); - } else { - $("#quotas-cpu", context).css("color", "black"); - } - } else { - $("#quotas-cpu", context).text(((parseFloat(user.VM_QUOTA.VM.CPU_USED) + parseFloat(values.CPU))).toFixed(2) + " / ∞"); - } - } - }); - - var cost = 0; - - var cpuCost = capacity.CPU_COST; - var memoryCost = capacity.MEMORY_COST; - - if (cpuCost == undefined){ - cpuCost = Config.onedConf.DEFAULT_COST.CPU_COST; - } - - if (memoryCost == undefined){ - memoryCost = Config.onedConf.DEFAULT_COST.MEMORY_COST; - } - - var _redoCost = function(values){ - var cost = 0; - - if (values.CPU != undefined){ - cost += cpuCost * values.CPU; - } - - if (values.MEMORY != undefined){ - cost += memoryCost * values.MEMORY; - } - - $(".cost_value", context).html(cost.toFixed(2)); - - _calculateCost(); - }; - - if ((cpuCost != 0 || memoryCost != 0) && Config.isFeatureEnabled("showback")) { - $(".provision_create_template_cost_div").show(); - - _redoCost(capacity); - - if (Config.provision.create_vm.isEnabled("capacity_select")){ - CapacityInputs.setCallback(context, _redoCost); - } - } else { - $(".provision_create_template_cost_div").hide(); - } - } - - function _calculateCost(){ - var context = $("#provision_create_vm"); - - var capacity_val = parseFloat( $(".provision_create_template_cost_div .cost_value", context).text() ); - var disk_val = parseFloat( $(".provision_create_template_disk_cost_div .cost_value", context).text() ); - - var total = capacity_val + disk_val; - - if (total != 0 && Config.isFeatureEnabled("showback")) { - $(".total_cost_div", context).show(); - - $(".total_cost_div .cost_value", context).text( (total).toFixed(2) ); - } - - if (Config.provision.dashboard.isEnabled("quotas") && !$.isEmptyObject(user.VM_QUOTA)) { - if (!$("#quotas-disks").text().includes("/")){ - var totalSize = parseFloat($("#quotas-disks").text()); - if (this.user.VM_QUOTA.VM.SYSTEM_DISK_SIZE === "-1" || this.user.VM_QUOTA.VM.SYSTEM_DISK_SIZE === "-2"){ - $("#quotas-disks").text(Humanize.size((parseFloat(this.user.VM_QUOTA.VM.SYSTEM_DISK_SIZE_USED) + totalSize) * 1024) + " / ∞"); - } else { - $("#quotas-disks").text(Humanize.size((parseFloat(this.user.VM_QUOTA.VM.SYSTEM_DISK_SIZE_USED) + totalSize) * 1024) + " / " + Humanize.size(parseFloat(this.user.VM_QUOTA.VM.SYSTEM_DISK_SIZE) * 1024)); - if ((parseFloat(this.user.VM_QUOTA.VM.SYSTEM_DISK_SIZE_USED) + totalSize) > parseFloat(this.user.VM_QUOTA.VM.SYSTEM_DISK_SIZE)){ - $("#quotas-disks", context).css("color", "red"); - } else { - $("#quotas-disks", context).css("color", "black"); - } - } - } - } - } - - function _calculateFlowCost(){ - var context = $("#provision_create_flow"); - - var total = 0; - - $.each($(".provision_create_service_cost_div .cost_value", context), function(){ - total += parseFloat($(this).text()); - }); - - if (total != 0 && Config.isFeatureEnabled("showback")) { - $(".total_cost_div", context).show(); - - $(".total_cost_div .cost_value", context).text( (total).toFixed(2) ); - } - } - - - function show_provision_dashboard() { - $(".section_content").hide(); - $("#provision_dashboard").fadeIn(); - - $("#provision_dashboard").html(""); - - if (Config.provision.dashboard.isEnabled("vms")) { - $("#provision_dashboard").append(TemplateDashboardVms()); - - if(!Config.isFeatureEnabled("cloud_vm_create")){ - $(".provision_create_vm_button").hide(); - } - - var start_time = Math.floor(new Date().getTime() / 1000); - // ms to s - - // 604800 = 7 days = 7*24*60*60 - start_time = start_time - 604800; - - // today - var end_time = -1; - - var options = { - "start_time": start_time, - "end_time": end_time, - "userfilter": config["user_id"] - }; - - - OpenNebula.VM.list({ - timeout: true, - success: function (request, item_list){ - var total = 0; - var totalGroup = 0; - var running = 0; - var off = 0; - var error = 0; - var deploying = 0; - - $.each(item_list, function(index, vm){ - if (vm.VM.UID == config["user_id"]) { - var state = ProvisionVmsList.state(vm.VM); - - total = total + 1; - - switch (state.color) { - case "deploying": - deploying = deploying + 1; - break; - case "error": - error = error + 1; - break; - case "running": - running = running + 1; - break; - case "powering_off": - off = off + 1; - break; - case "off": - off = off + 1; - break; - } - } - else{ - totalGroup += 1; - } - }); - - var context = $("#provision_vms_dashboard"); - $("#provision_dashboard_owner", context).html(total); - $("#provision_dashboard_group", context).html(totalGroup); - $("#provision_dashboard_running", context).html(running); - $("#provision_dashboard_off", context).html(off); - $("#provision_dashboard_error", context).html(error); - $("#provision_dashboard_deploying", context).html(deploying); - }, - error: Notifier.onError - }); - } - - if (Config.provision.dashboard.isEnabled("groupvms")) { - $("#provision_dashboard").append(TemplateDashboardGroupVms()); - - var start_time = Math.floor(new Date().getTime() / 1000); - // ms to s - - // 604800 = 7 days = 7*24*60*60 - start_time = start_time - 604800; - - // today - var end_time = -1; - - var options = { - "start_time": start_time, - "end_time": end_time - }; - - OpenNebula.VM.list({ - timeout: true, - success: function (request, item_list){ - var total = 0; - var running = 0; - var off = 0; - var error = 0; - var deploying = 0; - - $.each(item_list, function(index, vm){ - var state = ProvisionVmsList.state(vm.VM); - - total = total + 1; - - switch (state.color) { - case "deploying": - deploying = deploying + 1; - break; - case "error": - error = error + 1; - break; - case "running": - running = running + 1; - break; - case "powering_off": - off = off + 1; - break; - case "off": - off = off + 1; - break; - default: - break; - } - }); - - var context = $("#provision_group_vms_dashboard"); - $("#provision_dashboard_group_total", context).html(total); - $("#provision_dashboard_group_running", context).html(running); - $("#provision_dashboard_group_off", context).html(off); - $("#provision_dashboard_group_error", context).html(error); - $("#provision_dashboard_group_deploying", context).html(deploying); - }, - error: Notifier.onError - }); - } - - if (Config.provision.dashboard.isEnabled("quotas")) { - $("#provision_dashboard").append(TemplateDashboardQuotas()); - - var that = this; - OpenNebula.User.show({ - data : { - id: "-1" - }, - success: function(request,user_json){ - var user = user_json.USER; - that.user = user; - - QuotaWidgets.initEmptyQuotas(user); - - if (!$.isEmptyObject(user.VM_QUOTA)){ - $("#provision_quotas_dashboard").show(); - var default_user_quotas = QuotaDefaults.default_quotas(user.DEFAULT_USER_QUOTAS); - - var vms = QuotaWidgets.quotaInfo( - user.VM_QUOTA.VM.VMS_USED, - user.VM_QUOTA.VM.VMS, - default_user_quotas.VM_QUOTA.VM.VMS); - - $("#provision_dashboard_rvms_percentage").html(vms["percentage"]); - $("#provision_dashboard_rvms_str").html(vms["str"]); - $("#provision_dashboard_rvms_meter").val(vms["percentage"]); - - var memory = QuotaWidgets.quotaMBInfo( - user.VM_QUOTA.VM.MEMORY_USED, - user.VM_QUOTA.VM.MEMORY, - default_user_quotas.VM_QUOTA.VM.MEMORY); - - $("#provision_dashboard_memory_percentage").html(memory["percentage"]); - $("#provision_dashboard_memory_str").html(memory["str"]); - $("#provision_dashboard_memory_meter").val(memory["percentage"]); - - var cpu = QuotaWidgets.quotaFloatInfo( - user.VM_QUOTA.VM.CPU_USED, - user.VM_QUOTA.VM.CPU, - default_user_quotas.VM_QUOTA.VM.CPU); - - $("#provision_dashboard_cpu_percentage").html(cpu["percentage"]); - $("#provision_dashboard_cpu_str").html(cpu["str"]); - $("#provision_dashboard_cpu_meter").val(cpu["percentage"]); - } else { - $("#provision_quotas_dashboard").hide(); - } - } - }); - } - - if (Config.provision.dashboard.isEnabled("groupquotas")) { - $("#provision_dashboard").append(TemplateDashboardGroupQuotas()); - - - OpenNebula.Group.show({ - data : { - id: "-1" - }, - success: function(request,group_json){ - var group = group_json.GROUP; - - QuotaWidgets.initEmptyQuotas(group); - - if (!$.isEmptyObject(group.VM_QUOTA)){ - var default_group_quotas = QuotaDefaults.default_quotas(group.DEFAULT_GROUP_QUOTAS); - - var vms = QuotaWidgets.quotaInfo( - group.VM_QUOTA.VM.VMS_USED, - group.VM_QUOTA.VM.VMS, - default_group_quotas.VM_QUOTA.VM.VMS); - - $("#provision_dashboard_group_rvms_percentage").html(vms["percentage"]); - $("#provision_dashboard_group_rvms_str").html(vms["str"]); - $("#provision_dashboard_group_rvms_meter").val(vms["percentage"]); - - var memory = QuotaWidgets.quotaMBInfo( - group.VM_QUOTA.VM.MEMORY_USED, - group.VM_QUOTA.VM.MEMORY, - default_group_quotas.VM_QUOTA.VM.MEMORY); - - $("#provision_dashboard_group_memory_percentage").html(memory["percentage"]); - $("#provision_dashboard_group_memory_str").html(memory["str"]); - $("#provision_dashboard_group_memory_meter").val(memory["percentage"]); - - var cpu = QuotaWidgets.quotaFloatInfo( - group.VM_QUOTA.VM.CPU_USED, - group.VM_QUOTA.VM.CPU, - default_group_quotas.VM_QUOTA.VM.CPU); - - $("#provision_dashboard_group_cpu_percentage").html(cpu["percentage"]); - $("#provision_dashboard_group_cpu_str").html(cpu["str"]); - $("#provision_dashboard_group_cpu_meter").val(cpu["percentage"]); - } - } - }); - } - } - - function show_provision_create_vm() { - OpenNebula.Action.clear_cache("VMTEMPLATE"); - - ProvisionTemplatesList.updateDatatable(provision_vm_instantiate_templates_datatable); - $("#provision_vm_instantiate_templates_owner_filter").val("all").change(); - $("#provision_vm_instantiate_template_search").val("").trigger("input"); - - $(".provision_accordion_template .selected_template").hide(); - $(".provision_accordion_template .select_template").show(); - - $("#provision_create_vm .provision_capacity_selector").html(""); - $("#provision_create_vm .provision_disk_selector").html(""); - $("#provision_create_vm .provision_disk_selector").removeData("template_json"); - $("#provision_create_vm .provision_network_selector").html(""); - $("#provision_create_vm .provision_vmgroup_selector").html(""); - $("#provision_create_vm .provision_ds_selector").html(""); - $("#provision_create_vm .provision_add_vmgroup").show(); - $("#provision_create_vm .provision_vmgroup").hide(); - $("#provision_create_vm .provision_ds").hide(); - - $("#provision_create_vm .provision_custom_attributes_selector").html(""); - - $("#provision_create_vm li:not(.is-active) a[href='#provision_dd_template']").trigger("click"); - - $("#provision_create_vm .total_cost_div").hide(); - $("#provision_create_vm .alert-box-error").hide(); - - $(".section_content").hide(); - $("#provision_create_vm").fadeIn(); - } - - function show_provision_create_flow() { - update_provision_flow_templates_datatable(provision_flow_templates_datatable); - - var context = $("#provision_create_flow"); - - $("#provision_customize_flow_template", context).hide(); - $("#provision_customize_flow_template", context).html(""); - - $(".provision_network_selector", context).html(""); - $(".provision_vmgroup_selector", context).html(""); - $(".provision_add_vmgroup", context).show(); - $(".provision_vmgroup", context).hide(); - //$(".provision_ds", context).hide(); - $(".provision_custom_attributes_selector", context).html(""); - - $(".provision_accordion_flow_template .selected_template", context).hide(); - $(".provision_accordion_flow_template .select_template", context).show(); - - $("li:not(.is-active) a[href='#provision_dd_flow_template']", context).trigger("click"); - - $(".total_cost_div", context).hide(); - $(".alert-box-error", context).hide(); - - $(".section_content").hide(); - $("#provision_create_flow").fadeIn(); - } - - function update_provision_flow_templates_datatable(datatable, timeout) { - datatable.html("