diff --git a/src/sunstone/public/app/utils/vcenter/clusters.js b/src/sunstone/public/app/utils/vcenter/clusters.js index 8382c5dfde..9598bf6fd9 100644 --- a/src/sunstone/public/app/utils/vcenter/clusters.js +++ b/src/sunstone/public/app/utils/vcenter/clusters.js @@ -16,29 +16,29 @@ define(function(require) { // Dependencies - var Locale = require('utils/locale'); - var Sunstone = require('sunstone'); - var OpenNebulaHost = require('opennebula/host'); - var OpenNebulaCluster = require('opennebula/cluster'); - var OpenNebulaError = require('opennebula/error'); - var DomDataTable = require('utils/dom-datatable'); - var Notifier = require('utils/notifier'); - var UniqueId = require('utils/unique-id'); - var VCenterCommon = require('./vcenter-common'); + var Locale = require("utils/locale"); + var Sunstone = require("sunstone"); + var OpenNebulaHost = require("opennebula/host"); + var OpenNebulaCluster = require("opennebula/cluster"); + var OpenNebulaError = require("opennebula/error"); + var DomDataTable = require("utils/dom-datatable"); + var Notifier = require("utils/notifier"); + var UniqueId = require("utils/unique-id"); + var VCenterCommon = require("./vcenter-common"); - var TemplateHTML = require('hbs!./common/html'); - var RowTemplate = require('hbs!./clusters/row'); - var EmptyFieldsetHTML = require('hbs!./common/empty-fieldset'); - var FieldsetTableHTML = require('hbs!./common/fieldset-table'); + var TemplateHTML = require("hbs!./common/html"); + var RowTemplate = require("hbs!./clusters/row"); + var EmptyFieldsetHTML = require("hbs!./common/empty-fieldset"); + var FieldsetTableHTML = require("hbs!./common/fieldset-table"); function VCenterClusters() { return this; } VCenterClusters.prototype = { - 'html': VCenterCommon.html, - 'insert': _fillVCenterClusters, - 'import': _import + "html": VCenterCommon.html, + "insert": _fillVCenterClusters, + "import": _import }; VCenterClusters.prototype.constructor = VCenterClusters; @@ -56,7 +56,7 @@ define(function(require) { function _fillVCenterClusters(opts) { this.opts = opts; - var path = '/vcenter'; + var path = "/vcenter"; var context = $(".vcenter_import", opts.container); context.html( TemplateHTML({}) ); @@ -79,7 +79,7 @@ define(function(require) { var content; if (elements.length == 0) { content = EmptyFieldsetHTML({ - title : datacenter_name + ' ' + Locale.tr("DataCenter"), + title : datacenter_name + " " + Locale.tr("DataCenter"), message : Locale.tr("No new clusters found in this DataCenter") }); @@ -88,10 +88,10 @@ define(function(require) { var tableId = "vcenter_import_table_" + UniqueId.id(); content = FieldsetTableHTML({ tableId : tableId, - title : datacenter_name + ' ' + Locale.tr("DataCenter"), + title : datacenter_name + " " + Locale.tr("DataCenter"), toggleAdvanced : false, columns : [ - '', + "", Locale.tr("Cluster"), Locale.tr("vCenter ref"), Locale.tr("Location"), @@ -100,19 +100,19 @@ define(function(require) { }); var newdiv = $(content).appendTo($(".vcenter_datacenter_list", context)); - var tbody = $('#' + tableId + ' tbody', context); + var tbody = $("#" + tableId + " tbody", context); $.each(elements, function(id, cluster) { var cluster_name = cluster.simple_name; var cluster_location = cluster.cluster_location; var cluster_ref = cluster.cluster_ref; - var rp_list = '"; if (cluster.rp_list.length > 0){ for (var i = 0; i < cluster.rp_list.length; i++){ - rp_list += ''; + rp_list += ""; } } - rp_list += ''; + rp_list += ""; var opts = { name: cluster_name, location: cluster_location, cluster_ref: cluster_ref }; var trow = $(RowTemplate(opts)).appendTo(tbody); @@ -147,8 +147,8 @@ define(function(require) { selected: Locale.tr("%1$s Clusters selected.") }); - context.off('click', '.clear_imported'); - context.on('click', '.clear_imported', function() { + context.off("click", ".clear_imported"); + context.on("click", ".clear_imported", function() { _fillVCenterClusters(opts); return false; }); @@ -180,47 +180,42 @@ define(function(require) { var vcenter_version = $(this).data("cluster").vcenter_version; var cluster_name = $(this).data("cluster").cluster_name; - if (cluster_id == 0) { - var cluster_json = { - "cluster": { - "name": cluster_name - } - }; + var host_json = { + "host": { + "name": cluster_name, + "vm_mad": "vcenter", + "vnm_mad": "dummy", + "im_mad": "vcenter", + "cluster_id": null + } + }; - OpenNebulaCluster.create({ - timeout: true, - data: cluster_json, - success: function(request, response) { - - var host_json = { - "host": { - "name": cluster_name, - "vm_mad": "vcenter", - "vnm_mad": "dummy", - "im_mad": "vcenter", - "cluster_id": response.CLUSTER.ID + function successClusterList(request, obj_list){ + if (cluster_name && obj_list) { + let r = null; + obj_list.map(cluster => { + if (cluster && cluster.CLUSTER && cluster.CLUSTER.NAME) { + if (cluster.CLUSTER.NAME === cluster_name){ + r = cluster.CLUSTER; + } + } + }); + if(r && r.ID){ + host_json.host.cluster_id = r.ID; + createHost(); + }else{ + var cluster_json = { + "cluster": { + "name": cluster_name } }; - - OpenNebulaHost.create({ + OpenNebulaCluster.create({ timeout: true, - data: host_json, + data: cluster_json, success: function(request, response) { - VCenterCommon.importSuccess({ - context : row_context, - message : Locale.tr("Host created successfully. ID: %1$s", response.HOST.ID) - }); - - var template_raw = - "VCENTER_USER=\"" + that.opts.vcenter_user + "\"\n" + - "VCENTER_PASSWORD=\"" + that.opts.vcenter_password + "\"\n" + - "VCENTER_HOST=\"" + that.opts.vcenter_host + "\"\n" + - "VCENTER_INSTANCE_ID=\"" + vcenter_uuid + "\"\n" + - "VCENTER_CCR_REF=\"" + cluster_ref + "\"\n" + - "VCENTER_VERSION=\"" + vcenter_version + "\"\n"; - - Sunstone.runAction("Host.update_template", response.HOST.ID, template_raw); + host_json.host.cluster_id = response.CLUSTER.ID; + createHost(); }, error: function (request, error_json) { VCenterCommon.importFailure({ @@ -229,6 +224,27 @@ define(function(require) { }); } }); + } + } + } + + function createHost(){ + OpenNebulaHost.create({ + timeout: true, + data: host_json, + success: function(request, response) { + VCenterCommon.importSuccess({ + context : row_context, + message : Locale.tr("Host created successfully. ID: %1$s", response.HOST.ID) + }); + var template_raw = + "VCENTER_USER=\"" + that.opts.vcenter_user + "\"\n" + + "VCENTER_PASSWORD=\"" + that.opts.vcenter_password + "\"\n" + + "VCENTER_HOST=\"" + that.opts.vcenter_host + "\"\n" + + "VCENTER_INSTANCE_ID=\"" + vcenter_uuid + "\"\n" + + "VCENTER_CCR_REF=\"" + cluster_ref + "\"\n" + + "VCENTER_VERSION=\"" + vcenter_version + "\"\n"; + Sunstone.runAction("Host.update_template", response.HOST.ID, template_raw); }, error: function (request, error_json) { VCenterCommon.importFailure({ @@ -237,48 +253,20 @@ define(function(require) { }); } }); - - - } else { - - var host_json = { - "host": { - "name": 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) { - VCenterCommon.importSuccess({ - context : row_context, - message : Locale.tr("Host created successfully. ID: %1$s", response.HOST.ID) - }); - - var template_raw = - "VCENTER_USER=\"" + that.opts.vcenter_user + "\"\n" + - "VCENTER_PASSWORD=\"" + that.opts.vcenter_password + "\"\n" + - "VCENTER_HOST=\"" + that.opts.vcenter_host + "\"\n" + - "VCENTER_INSTANCE_ID=\"" + vcenter_uuid + "\"\n" + - "VCENTER_CCR_REF=\"" + cluster_ref + "\"\n" + - "VCENTER_VERSION=\"" + vcenter_version + "\"\n"; - - Sunstone.runAction("Host.update_template", response.HOST.ID, template_raw); - }, - error: function (request, error_json) { - VCenterCommon.importFailure({ - context : row_context, - message : (error_json.error.message || Locale.tr("Cannot contact server: is it running and reachable?")) - }); - } - }); } + if (cluster_id == 0) { + OpenNebulaCluster.list({ + timeout: true, + success: successClusterList, + error: error => { + console.log("ERROR", error); + } + }); + } else { + host_json.host.cluster_id = cluster_id; + createHost(); + } }); }); }