Skip to content

Commit

Permalink
B #3280: check import vcenter cluster (#3365)
Browse files Browse the repository at this point in the history
* B #3280: check import vCenter cluster

Signed-off-by: Jorge Lobo <[email protected]>

* B #3280: check import vCenter cluster

Signed-off-by: Jorge Lobo <[email protected]>

* B #3365: Changing function order for readibility
  • Loading branch information
jloboescalona2 authored and Tino Vázquez committed May 23, 2019
1 parent 8dee71c commit e85bd07
Showing 1 changed file with 90 additions and 102 deletions.
192 changes: 90 additions & 102 deletions src/sunstone/public/app/utils/vcenter/clusters.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 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 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");

function VCenterClusters() {
return this;
}

VCenterClusters.prototype = {
'html': VCenterCommon.html,
'insert': _fillVCenterClusters,
'import': _import
"html": VCenterCommon.html,
"insert": _fillVCenterClusters,
"import": _import
};
VCenterClusters.prototype.constructor = VCenterClusters;

Expand All @@ -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({}) );
Expand All @@ -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")
});

Expand All @@ -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 : [
'<input type="checkbox" class="check_all"/>',
"<input type=\"checkbox\" class=\"check_all\"/>",
Locale.tr("Cluster"),
Locale.tr("vCenter ref"),
Locale.tr("Location"),
Expand All @@ -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 = '<select class="select_rp"><option></option>';
var rp_list = "<select class=\"select_rp\"><option></option>";
if (cluster.rp_list.length > 0){
for (var i = 0; i < cluster.rp_list.length; i++){
rp_list += '<option>' + cluster.rp_list[i].name + '</option>';
rp_list += "<option>" + cluster.rp_list[i].name + "</option>";
}
}
rp_list += '</select>';
rp_list += "</select>";
var opts = { name: cluster_name, location: cluster_location, cluster_ref: cluster_ref };
var trow = $(RowTemplate(opts)).appendTo(tbody);

Expand Down Expand Up @@ -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;
});
Expand Down Expand Up @@ -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
}
};

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
var host_json = {
"host": {
"name": cluster_name,
"vm_mad": "vcenter",
"vnm_mad": "dummy",
"im_mad": "vcenter",
"cluster_id": null
}
};

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({
Expand All @@ -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({
Expand All @@ -237,48 +253,20 @@ define(function(require) {
});
}
});
}


if (cluster_id == 0) {
OpenNebulaCluster.list({
timeout: true,
success: successClusterList,
error: error => {
console.log("ERROR", error);
}
});
} 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?"))
});
}
});
host_json.host.cluster_id = cluster_id;
createHost();
}

});
});
}
Expand Down

0 comments on commit e85bd07

Please sign in to comment.