From bb314d956271f2503e9ca51a90e615023ee63e03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn?= Date: Mon, 22 Jun 2015 17:17:03 +0200 Subject: [PATCH] Feature #3748: Refactor vCenter clusters import --- .../app/tabs/hosts-tab/form-panels/create.js | 146 ++------------- .../hosts-tab/form-panels/create/wizard.hbs | 9 +- .../public/app/utils/vcenter/clusters.js | 173 ++++++++++++++++++ .../app/utils/vcenter/clusters/html.hbs | 6 + 4 files changed, 199 insertions(+), 135 deletions(-) create mode 100644 src/sunstone/public/app/utils/vcenter/clusters.js create mode 100644 src/sunstone/public/app/utils/vcenter/clusters/html.hbs 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 7c1f01f49b..335b8d7fc9 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 @@ -9,8 +9,7 @@ define(function(require) { var Tips = require('utils/tips'); var Notifier = require('utils/notifier'); var ResourceSelect = require('utils/resource-select'); - var OpenNebulaError = require('opennebula/error'); - var OpenNebulaHost = require('opennebula/host'); + var VCenterClusters = require('utils/vcenter/clusters'); var VCenterTemplates = require('utils/vcenter/templates'); var VCenterNetworks = require('utils/vcenter/networks'); @@ -42,6 +41,7 @@ define(function(require) { } } + this.vCenterClusters = new VCenterClusters(); this.vCenterNetworks = new VCenterNetworks(); this.vCenterTemplates = new VCenterTemplates(); @@ -65,6 +65,7 @@ define(function(require) { function _htmlWizard() { return TemplateWizardHTML({ 'formPanelId': this.formPanelId, + 'vCenterClustersHTML': this.vCenterClusters.html(), 'vCenterTemplatesHTML': this.vCenterTemplates.html(), 'vCenterNetworksHTML': this.vCenterNetworks.html() }); @@ -104,81 +105,23 @@ define(function(require) { $("#get_vcenter_clusters", context).on("click", function() { // TODO notify if credentials empty - var container = $(".vcenter_clusters", context); - container.show(); + var vcenter_user = $("#vcenter_user", context).val(); + var vcenter_password = $("#vcenter_password", context).val(); + var vcenter_host = $("#vcenter_host", context).val(); - $(".accordion_advanced_toggle", container).trigger("click"); - - $.ajax({ - url: 'vcenter', - type: "GET", - data: {timeout: false}, - dataType: "json", - headers: { - "X_VCENTER_USER": $("#vcenter_user", context).val(), - "X_VCENTER_PASSWORD": $("#vcenter_password", context).val(), - "X_VCENTER_HOST": $("#vcenter_host", context).val() - }, - success: function(response) { + that.vCenterClusters.insert({ + container: context, + vcenter_user: vcenter_user, + vcenter_password: vcenter_password, + vcenter_host: vcenter_host, + success: function(){ $("#vcenter_user", context).attr("disabled", "disabled"); $("#vcenter_password", context).attr("disabled", "disabled"); $("#vcenter_host", context).attr("disabled", "disabled"); $("#get_vcenter_clusters", context).hide(); $(".import_vcenter_clusters_div", context).show(); - $(".content", container).html(""); - - $('
' + - '
' + - '

' + Locale.tr("Please select the vCenter Clusters to be imported to OpenNebula. Each vCenter Cluster will be included as a new OpenNebula Host") + '

' + - '
' + - '
').appendTo($(".content", container)); - - $.each(response, function(datacenter_name, clusters) { - $('
' + - '
' + - '
' + - datacenter_name + ' ' + Locale.tr("Datacenter") + - '
' + - '
' + - '
').appendTo($(".content", container)); - - if (clusters.length == 0) { - $('
' + - '
' + - '' + - '
' + - '
').appendTo($(".content", container)); - } else { - $.each(clusters, function(id, cluster_name) { - var row = $('
' + - '
' + - '
' + - '' + - '
' + - '
' + - '
' + - '
' + - '
' + - '
' + - '
').appendTo($(".content", container)); - - $(".cluster_name", row).data("cluster_name", cluster_name); - //$(".cluster_name", row).data("datacenter_name", datacenter_name); - }); - } - }); - - var vcenter_user = $("#vcenter_user", context).val(); - var vcenter_password = $("#vcenter_password", context).val(); - var vcenter_host = $("#vcenter_host", context).val(); - that.vCenterTemplates.insert({ container: context, vcenter_user: vcenter_user, @@ -192,10 +135,6 @@ define(function(require) { vcenter_password: vcenter_password, vcenter_host: vcenter_host }); - }, - error: function(response) { - $(".vcenter_clusters", context).hide(); - Notifier.onError({}, OpenNebulaError(response)); } }); @@ -208,61 +147,9 @@ define(function(require) { var cluster_id = $('#host_cluster_id .resource_list_select', context).val(); if (!cluster_id) cluster_id = "-1"; - $.each($(".cluster_name:checked", context), function() { - var cluster_context = $(this).closest(".vcenter_cluster"); - $(".vcenter_host_result:not(.success)", cluster_context).html('' + - '' + - '' + - ''); - - var host_json = { - "host": { - "name": $(this).data("cluster_name"), - "vm_mad": "vcenter", - "vnm_mad": "dummy", - "im_mad": "vcenter", - "cluster_id": cluster_id - } - }; - - OpenNebulaHost.create({ - timeout: true, - data: host_json, - success: function(request, response) { - $(".vcenter_host_result", cluster_context).addClass("success").html( - '' + - '' + - '' + - ''); - - $(".vcenter_host_response", cluster_context).html('

' + - Locale.tr("Host created successfully") + ' ID:' + response.HOST.ID + - '

'); - - var template_raw = - "VCENTER_USER=\"" + $("#vcenter_user", context).val() + "\"\n" + - "VCENTER_PASSWORD=\"" + $("#vcenter_password", context).val() + "\"\n" + - "VCENTER_HOST=\"" + $("#vcenter_host", context).val() + "\"\n"; - - Sunstone.runAction("Host.update_template", response.HOST.ID, template_raw); - Sunstone.getDataTable(TAB_ID).addElement(request, response); - }, - error: function (request, error_json) { - $(".vcenter_host_result", context).html('' + - '' + - '' + - ''); - - $(".vcenter_host_response", context).html('

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

'); - } - }); - }); - - that.vCenterTemplates.import(); - - that.vCenterNetworks.import(); + that.vCenterClusters.import(context, cluster_id); + that.vCenterTemplates.import(context); + that.vCenterNetworks.import(context); return false; }); @@ -346,6 +233,9 @@ define(function(require) { if (!cluster_id) cluster_id = "-1"; ResourceSelect.insert('#host_cluster_id', context, "Cluster", cluster_id, false); + + $("#host_type_mad", context).change(); + 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 6c251e9fbc..d01767a2e4 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 @@ -120,13 +120,8 @@ {{tr "Get vCenter Clusters"}} -