diff --git a/src/sunstone/public/app/tabs/hosts-tab/form-panels/create.js b/src/sunstone/public/app/tabs/hosts-tab/form-panels/create.js index ad7cc9a4fe..98cf0ed0b9 100644 --- a/src/sunstone/public/app/tabs/hosts-tab/form-panels/create.js +++ b/src/sunstone/public/app/tabs/hosts-tab/form-panels/create.js @@ -13,7 +13,7 @@ define(function(require) { var OpenNebulaHost = require('opennebula/host'); var OpenNebulaTemplate = require('opennebula/template'); var OpenNebulaVM = require('opennebula/vm'); - var OpenNebulaNetwork = require('opennebula/network'); + var VCenterNetworks = require('utils/vcenter/networks'); /* TEMPLATES @@ -43,6 +43,8 @@ define(function(require) { } } + this.vCenterNetworks = new VCenterNetworks(); + BaseFormPanel.call(this); }; @@ -61,10 +63,14 @@ define(function(require) { */ function _htmlWizard() { - return TemplateWizardHTML({formPanelId: this.formPanelId}); + return TemplateWizardHTML({ + 'formPanelId': this.formPanelId, + 'vcenterNetworksHTML': this.vCenterNetworks.html() + }); } function _setup(context) { + var that = this; $(".drivers", context).hide(); @@ -93,6 +99,8 @@ define(function(require) { } }); + $("#host_type_mad", context).change(); + $("#get_vcenter_clusters", context).on("click", function() { // TODO notify if credentials empty var container = $(".vcenter_clusters", context); @@ -168,7 +176,6 @@ define(function(require) { var templates_container = $(".vcenter_templates", context); var vms_container = $(".vcenter_vms", context); - var networks_container = $(".vcenter_networks", context); var vcenter_user = $("#vcenter_user", context).val(); var vcenter_password = $("#vcenter_password", context).val(); @@ -181,12 +188,12 @@ define(function(require) { vcenter_host: vcenter_host }); - fillVCenterNetworks({ - container: networks_container, - vcenter_user: vcenter_user, - vcenter_password: vcenter_password, - vcenter_host: vcenter_host - }); + that.vCenterNetworks.insert({ + container: context, + vcenter_user: vcenter_user, + vcenter_password: vcenter_password, + vcenter_host: vcenter_host + }); }, error: function(response) { $(".vcenter_clusters", context).hide(); @@ -349,104 +356,7 @@ define(function(require) { }); }); - $.each($(".network_name:checked", context), function() { - var network_context = $(this).closest(".vcenter_network"); - - $(".vcenter_network_result:not(.success)", network_context).html( - '' + - '' + - '' + - ''); - - var network_size = $(".netsize", network_context).val(); - var network_tmpl = $(this).data("one_network"); - var netname = $(this).data("network_name"); - var type = $('.type_select', network_context).val(); - - var ar_array = []; - ar_array.push("TYPE=" + type); - ar_array.push("SIZE=" + network_size); - - switch (type) { - case 'ETHER': - var mac = $('.eth_mac_net', network_context).val(); - - if (mac) { - ar_array.push("MAC=" + mac); - } - - break; - case 'IP4': - var mac = $('.four_mac_net', network_context).val(); - var ip = $('.four_ip_net', network_context).val(); - - if (mac) { - ar_array.push("MAC=" + mac); - } - if (ip) { - ar_array.push("IP=" + ip); - } - - break; - case 'IP6': - var mac = $('.six_mac_net', network_context).val(); - var gp = $('.six_global_net', network_context).val(); - var ula = $('.six_mac_net', network_context).val(); - - if (mac) { - ar_array.push("MAC=" + mac); - } - if (gp) { - ar_array.push("GLOBAL_PREFIX=" + gp); - } - if (ula) { - ar_array.push("ULA_PREFIX=" + ula); - } - - break; - } - - network_tmpl += "\nAR=[" - network_tmpl += ar_array.join(",\n") - network_tmpl += "]" - - if ($(".vlaninfo", network_context)) { - network_tmpl += "VLAN=\"YES\"\n"; - network_tmpl += "VLAN_ID=" + $(".vlaninfo", network_context).val() + "\n"; - } - - var vnet_json = { - "vnet": { - "vnet_raw": network_tmpl - } - }; - - OpenNebulaNetwork.create({ - timeout: true, - data: vnet_json, - success: function(request, response) { - $(".vcenter_network_result", network_context).addClass("success").html( - '' + - '' + - '' + - ''); - - $(".vcenter_network_response", network_context).html('

' + - Locale.tr("Virtual Network created successfully") + ' ID:' + response.VNET.ID + - '

'); - }, - error: function (request, error_json) { - $(".vcenter_network_result", network_context).html('' + - '' + - '' + - ''); - - $(".vcenter_network_response", network_context).html('

' + - (error_json.error.message || Locale.tr("Cannot contact server: is it running and reachable?")) + - '

'); - } - }); - }); + that.vCenterNetworks.import(); return false; }); @@ -619,181 +529,4 @@ define(function(require) { return false; } - - /* - Retrieve the list of networks from vCenter and fill the container with them - - opts = { - datacenter: "Datacenter Name", - cluster: "Cluster Name", - container: Jquery div to inject the html, - vcenter_user: vCenter Username, - vcenter_password: vCenter Password, - vcenter_host: vCenter Host - } - */ - function fillVCenterNetworks(opts) { - var path = '/vcenter/networks'; - - opts.container.show(); - - $(".accordion_advanced_toggle", opts.container).trigger("click"); - - $.ajax({ - url: path, - type: "GET", - data: {timeout: false}, - dataType: "json", - headers: { - "X_VCENTER_USER": opts.vcenter_user, - "X_VCENTER_PASSWORD": opts.vcenter_password, - "X_VCENTER_HOST": opts.vcenter_host - }, - success: function(response){ - $(".content", opts.container).html(""); - - $('
' + - '
' + - '

' + Locale.tr("Please select the vCenter Networks to be imported to OpenNebula.") + '

' + - '
' + - '
').appendTo($(".content", opts.container)) - - $.each(response, function(datacenter_name, networks){ - $('
' + - '
' + - '
' + - datacenter_name + ' ' + Locale.tr("DataCenter") + - '
' + - '
' + - '
').appendTo($(".content", opts.container)) - - if (networks.length == 0) { - $('
' + - '
' + - '' + - '
' + - '
').appendTo($(".content", opts.container)) - } else { - $.each(networks, function(id, network){ - var netname = network.name.replace(" ","_"); - var vlan_info = "" - - if (network.vlan) { - var vlan_info = '
' + - '
'+ - ''+ - '
'+ - '
'; - } - - var trow = $('
' + - '
' + - '
' + - '
' + - '' + - '
'+ - '
'+ - '' + - '
'+ - '
'+ - '' + - '
'+ - '
' + - '
'+ - ''+ - '
'+ - '
'+ - vlan_info + - '
'+ - '
'+ - '
' + - '
'+ - '
'+ - '
'+ - '
').appendTo($(".content", opts.container)) - - - $('.type_select', trow).on("change",function(){ - var network_context = $(this).closest(".vcenter_network"); - var type = $(this).val(); - - var net_form_str = '' - - switch(type) { - case 'ETHER': - net_form_str = - '
'+ - ''+ - '
'; - break; - case 'IP4': - net_form_str = - '
'+ - ''+ - '
'+ - '
'+ - ''+ - '
'; - break; - case 'IP6': - net_form_str = - '
'+ - ''+ - '
'+ - '
'+ - ''+ - '
'+ - '
'+ - ''+ - '
'; - break; - } - - $('.net_options', network_context).html(net_form_str); - }); - - $(".network_name", trow).data("network_name", netname) - $(".network_name", trow).data("one_network", network.one) - }); - }; - }); - }, - error: function(response){ - opts.container.hide(); - Notifier.onError({}, OpenNebulaError(response)); - } - }); - - return false; - } - }); diff --git a/src/sunstone/public/app/tabs/hosts-tab/form-panels/create/wizard.hbs b/src/sunstone/public/app/tabs/hosts-tab/form-panels/create/wizard.hbs index d64c05990b..8a074158ed 100644 --- a/src/sunstone/public/app/tabs/hosts-tab/form-panels/create/wizard.hbs +++ b/src/sunstone/public/app/tabs/hosts-tab/form-panels/create/wizard.hbs @@ -141,13 +141,8 @@

-