mirror of
https://github.com/OpenNebula/one.git
synced 2025-03-22 18:50:08 +03:00
Co-authored-by: Jorge Lobo <jlobo@opennebula.systems>
This commit is contained in:
parent
d75c203b3a
commit
f44b51bff8
@ -19,24 +19,29 @@ define(function(require) {
|
||||
DEPENDENCIES
|
||||
*/
|
||||
|
||||
var Humanize = require('utils/humanize');
|
||||
var Locale = require('utils/locale');
|
||||
var OpenNebulaService = require('opennebula/service');
|
||||
var PermissionsTable = require('utils/panel/permissions-table');
|
||||
var RenameTr = require('utils/panel/rename-tr');
|
||||
var Humanize = require("utils/humanize");
|
||||
var Locale = require("utils/locale");
|
||||
var OpenNebulaService = require("opennebula/service");
|
||||
var PermissionsTable = require("utils/panel/permissions-table");
|
||||
var RenameTr = require("utils/panel/rename-tr");
|
||||
var TemplateUtils = require("utils/template-utils");
|
||||
var Sunstone = require("sunstone");
|
||||
|
||||
var OpenNebulaAction = require("opennebula/action");
|
||||
var OpenNebula = require("opennebula");
|
||||
|
||||
/*
|
||||
TEMPLATES
|
||||
*/
|
||||
|
||||
var TemplateHTML = require('hbs!./info/html');
|
||||
var TemplateHTML = require("hbs!./info/html");
|
||||
|
||||
/*
|
||||
CONSTANTS
|
||||
*/
|
||||
|
||||
var TAB_ID = require('../tabId');
|
||||
var PANEL_ID = require('./info/panelId');
|
||||
var TAB_ID = require("../tabId");
|
||||
var PANEL_ID = require("./info/panelId");
|
||||
var XML_ROOT = "DOCUMENT";
|
||||
var RESOURCE = "Service";
|
||||
|
||||
@ -56,6 +61,7 @@ define(function(require) {
|
||||
Panel.PANEL_ID = PANEL_ID;
|
||||
Panel.prototype.html = _html;
|
||||
Panel.prototype.setup = _setup;
|
||||
Panel.prototype.onShow = _onShow;
|
||||
|
||||
return Panel;
|
||||
|
||||
@ -63,17 +69,161 @@ define(function(require) {
|
||||
FUNCTION DEFINITIONS
|
||||
*/
|
||||
|
||||
function dismissWarning(){
|
||||
$(".close_flowvms_async_error").off("click").on("click", function(e){
|
||||
e.preventDefault();
|
||||
var vm_pool = OpenNebulaAction.cache("VM");
|
||||
var element = $(this);
|
||||
var dataIds = element.data("ids");
|
||||
if(dataIds !== undefined && vm_pool && vm_pool.data){
|
||||
var ids = String(dataIds).split(",");
|
||||
|
||||
var findVm = function(id){
|
||||
return vm_pool.data.find(function(vm){
|
||||
return vm && vm.VM && vm.VM.ID === id;
|
||||
});
|
||||
};
|
||||
ids.forEach(id => {
|
||||
var vmData = findVm(id);
|
||||
var templateJSON = $.extend({}, vmData.VM.USER_TEMPLATE);
|
||||
delete templateJSON.ERROR;
|
||||
template_str = TemplateUtils.templateToString(templateJSON);
|
||||
Sunstone.runAction("VM.update_template", id, template_str);
|
||||
element.closest(".warning-message").hide("1500", function(){
|
||||
$(this).remove();
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function _html() {
|
||||
var that = this;
|
||||
var renameTrHTML = RenameTr.html(TAB_ID, RESOURCE, this.element.NAME);
|
||||
var permissionsTableHTML = PermissionsTable.html(TAB_ID, RESOURCE, this.element);
|
||||
var prettyStartTime = Humanize.prettyTime(this.element.TEMPLATE.BODY['start_time']);
|
||||
var prettyStartTime = Humanize.prettyTime(this.element.TEMPLATE.BODY["start_time"]);
|
||||
|
||||
var errorMessageHTML = "";
|
||||
var async = false;
|
||||
|
||||
function getVmPool(callback, errorCallback){
|
||||
var vm_pool = OpenNebulaAction.cache("VM");
|
||||
if(callback && typeof callback === "function"){
|
||||
if(vm_pool && vm_pool.data){
|
||||
callback(vm_pool.data);
|
||||
}else{
|
||||
OpenNebula.VM.list({
|
||||
timeout: true,
|
||||
success: function (request, item_list){
|
||||
if(item_list){
|
||||
async = true;
|
||||
callback(item_list);
|
||||
}
|
||||
},
|
||||
error: function(){
|
||||
if(errorCallback && typeof errorCallback === "function"){
|
||||
errorCallback();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// this render the alert
|
||||
function renderAlertFromUserTemplate(vmPool){
|
||||
var errors = {};
|
||||
if(
|
||||
vmPool &&
|
||||
that.element &&
|
||||
that.element.TEMPLATE &&
|
||||
that.element.TEMPLATE.BODY &&
|
||||
that.element.TEMPLATE.BODY.roles
|
||||
){
|
||||
var roles = Array.isArray(that.element.TEMPLATE.BODY.roles)? that.element.TEMPLATE.BODY.roles : [that.element.TEMPLATE.BODY.roles];
|
||||
roles.forEach(function(role){
|
||||
if(role && role.nodes){
|
||||
var nodes = Array.isArray(role.nodes)? role.nodes: [role.nodes];
|
||||
nodes.forEach(node => {
|
||||
if(node && node.deploy_id !== undefined){
|
||||
|
||||
var datavm = vmPool.find(function(vm){
|
||||
if(
|
||||
vm &&
|
||||
vm.VM &&
|
||||
vm.VM.ID === String(node.deploy_id) &&
|
||||
vm.VM.USER_TEMPLATE &&
|
||||
vm.VM.USER_TEMPLATE.ERROR
|
||||
){
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
if(
|
||||
datavm &&
|
||||
datavm.VM &&
|
||||
datavm.VM.ID &&
|
||||
datavm.VM.USER_TEMPLATE &&
|
||||
datavm.VM.USER_TEMPLATE.ERROR
|
||||
){
|
||||
if(errors[datavm.VM.USER_TEMPLATE.ERROR]){
|
||||
var value = errors[datavm.VM.USER_TEMPLATE.ERROR];
|
||||
value.push(datavm.VM.ID);
|
||||
}else{
|
||||
errors[datavm.VM.USER_TEMPLATE.ERROR] = [datavm.VM.ID];
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Object.keys(errors).forEach(function(element){
|
||||
if(element){
|
||||
render = $("<div/>", {class:"callout warning warning-message", style:"border-radius: .5em;" });
|
||||
render.data("data-ids","dsad");
|
||||
render.append(
|
||||
$("<div/>", {class: "row"}).append(
|
||||
$("<div/>",{class: "columns large-1"}).append(
|
||||
$("<i>/", {class: "fas fa-exclamation-circle"})
|
||||
).add(
|
||||
$("<div/>",{class: "columns large-9"}).append(
|
||||
$("<p/>").html(
|
||||
Locale.tr("VM: ")+
|
||||
"<b>"+errors[element].join(",")+" </b>"+
|
||||
Locale.tr("has error: ")+
|
||||
"<b>"+element+"</b>"
|
||||
)
|
||||
)
|
||||
).add(
|
||||
$("<div/>",{class: "columns large-2"}).append(
|
||||
$("<a/>",{class:"close_flowvms_async_error","data-ids": errors[element].join(",")}).append(
|
||||
$("<u/>").text(Locale.tr("Dismiss"))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
errorMessageHTML += render.prop("outerHTML");
|
||||
}
|
||||
});
|
||||
|
||||
if(async){
|
||||
$(".warningsVms").empty().append(errorMessageHTML);
|
||||
dismissWarning();
|
||||
}
|
||||
}
|
||||
|
||||
getVmPool(renderAlertFromUserTemplate);
|
||||
|
||||
return TemplateHTML({
|
||||
'element': this.element,
|
||||
'renameTrHTML': renameTrHTML,
|
||||
'permissionsTableHTML': permissionsTableHTML,
|
||||
'stateStr': OpenNebulaService.stateStr(this.element.TEMPLATE.BODY.state),
|
||||
'prettyStartTime': prettyStartTime
|
||||
"element": this.element,
|
||||
"renameTrHTML": renameTrHTML,
|
||||
"permissionsTableHTML": permissionsTableHTML,
|
||||
"stateStr": OpenNebulaService.stateStr(this.element.TEMPLATE.BODY.state),
|
||||
"prettyRegTime": prettyRegTime,
|
||||
"errorMessageHTML": errorMessageHTML,
|
||||
});
|
||||
}
|
||||
|
||||
@ -81,4 +231,8 @@ define(function(require) {
|
||||
RenameTr.setup(TAB_ID, RESOURCE, this.element.ID, context);
|
||||
PermissionsTable.setup(TAB_ID, RESOURCE, this.element, context);
|
||||
}
|
||||
|
||||
function _onShow(context) {
|
||||
dismissWarning();
|
||||
}
|
||||
});
|
||||
|
@ -69,6 +69,9 @@
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="warningsVms">
|
||||
{{{errorMessageHTML}}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="large-6 columns">{{{permissionsTableHTML}}}</div>
|
||||
</div>
|
||||
|
@ -25,9 +25,9 @@ define(function(require) {
|
||||
var OpenNebula = require("opennebula");
|
||||
var PermissionsTable = require("utils/panel/permissions-table");
|
||||
var RenameTr = require("utils/panel/rename-tr");
|
||||
var Sunstone = require('sunstone');
|
||||
var Sunstone = require("sunstone");
|
||||
var TemplateTable = require("utils/panel/template-table");
|
||||
var TemplateUtils = require('utils/template-utils');
|
||||
var TemplateUtils = require("utils/template-utils");
|
||||
|
||||
/*
|
||||
TEMPLATES
|
||||
@ -43,9 +43,9 @@ define(function(require) {
|
||||
var PANEL_ID = require("./info/panelId");
|
||||
var RESOURCE = "VM";
|
||||
var XML_ROOT = "VM";
|
||||
var REGEX_VCENTER_ATTRS = /^VCENTER_/
|
||||
var REGEX_VCENTER_ATTRS = /^VCENTER_/;
|
||||
// Get rid of the unwanted (for show) SCHED_* keys
|
||||
var REGEX_HIDDEN_ATTRS = /^(USER_INPUTS|BACKUP)$|SCHED_|ERROR/
|
||||
var REGEX_HIDDEN_ATTRS = /^(USER_INPUTS|BACKUP)$|SCHED_|ERROR/;
|
||||
|
||||
/*
|
||||
CONSTRUCTOR
|
||||
@ -80,7 +80,7 @@ define(function(require) {
|
||||
var lcmStateClass = OpenNebula.VM.lcmStateClass(this.element.LCM_STATE);
|
||||
var hostnameHTML = OpenNebula.VM.hostnameStrLink(this.element);
|
||||
var IP = OpenNebula.VM.ipsStr(this.element, { forceGroup: true });
|
||||
|
||||
|
||||
var vrouterHTML = "--";
|
||||
|
||||
if (this.element.TEMPLATE.VROUTER_ID != undefined){
|
||||
@ -90,13 +90,13 @@ define(function(require) {
|
||||
);
|
||||
}
|
||||
|
||||
var deployId = (typeof(this.element.DEPLOY_ID) == "object" ? "--" : this.element.DEPLOY_ID);
|
||||
var deployId = (typeof(this.element.DEPLOY_ID) === "object" ? "--" : this.element.DEPLOY_ID);
|
||||
var resched = (parseInt(this.element.RESCHED) ? Locale.tr("yes") : Locale.tr("no"));
|
||||
|
||||
var attributes = TemplateTable.getTemplatesAttributes(this.element.USER_TEMPLATE, {
|
||||
regexVCenter: REGEX_VCENTER_ATTRS,
|
||||
regexHidden: REGEX_HIDDEN_ATTRS
|
||||
})
|
||||
});
|
||||
|
||||
var templateTableHTML = TemplateTable.html(attributes.general, RESOURCE, Locale.tr("Attributes"));
|
||||
var templateTableVcenterHTML = TemplateTable.html(attributes.vcenter, RESOURCE, Locale.tr("vCenter information"));
|
||||
@ -113,14 +113,14 @@ define(function(require) {
|
||||
|
||||
var monitoringTableContentHTML = !$.isEmptyObject(monitoring) && Humanize.prettyPrintJSON(monitoring);
|
||||
|
||||
var errorMessageHTML = ""
|
||||
if (this.element &&
|
||||
var errorMessageHTML = "";
|
||||
if (this.element &&
|
||||
this.element.USER_TEMPLATE &&
|
||||
this.element.USER_TEMPLATE.ERROR){
|
||||
errorMessageHTML =
|
||||
"<div class='row'>" +
|
||||
"<div class='large-9 columns'>" +
|
||||
"<div class='callout warning warning-message' style='border-radius: .5em;' data-closable>" +
|
||||
errorMessageHTML =
|
||||
"<div class='row'>" +
|
||||
"<div class='large-9 columns'>" +
|
||||
"<div class='callout warning warning-message' style='border-radius: .5em;' data-closable>" +
|
||||
"<div class='row'>"+
|
||||
"<div class='columns large-1'>" +
|
||||
"<i class='fas fa-exclamation-circle'></i>"+
|
||||
@ -128,7 +128,7 @@ define(function(require) {
|
||||
"<div class='columns large-9'>"+
|
||||
"<p>" + this.element.USER_TEMPLATE.ERROR + "</p>" +
|
||||
"</div>"+
|
||||
"<div class='columns large-2'>" +
|
||||
"<div class='columns large-2'>" +
|
||||
"<a id='close_vm_async_error' data-close>" +
|
||||
"<u>Dismiss</u>"+
|
||||
"</a>" +
|
||||
@ -157,21 +157,21 @@ define(function(require) {
|
||||
"templateTableHTML": templateTableHTML,
|
||||
"monitoringTableContentHTML": monitoringTableContentHTML,
|
||||
"vrouterHTML": vrouterHTML,
|
||||
"errorMessageHTML": errorMessageHTML,
|
||||
"errorMessageHTML": errorMessageHTML
|
||||
});
|
||||
}
|
||||
|
||||
function _setup(context) {
|
||||
var that = this;
|
||||
|
||||
|
||||
RenameTr.setup(TAB_ID, RESOURCE, this.element.ID, context);
|
||||
PermissionsTable.setup(TAB_ID, RESOURCE, this.element, context);
|
||||
|
||||
|
||||
var attributes = TemplateTable.getTemplatesAttributes(this.element.USER_TEMPLATE, {
|
||||
regexVCenter: REGEX_VCENTER_ATTRS,
|
||||
regexHidden: REGEX_HIDDEN_ATTRS
|
||||
})
|
||||
|
||||
});
|
||||
|
||||
if($.isEmptyObject(attributes.vcenter)){
|
||||
$(".vcenter", context).hide();
|
||||
}
|
||||
@ -192,9 +192,9 @@ define(function(require) {
|
||||
});
|
||||
|
||||
if (OpenNebula.VM.isvCenterVM(this.element)) {
|
||||
$('button[href="VM.upload_marketplace_dialog"]').attr('disabled','disabled');
|
||||
$("button[href=\"VM.upload_marketplace_dialog\"]").attr("disabled","disabled");
|
||||
} else {
|
||||
$('button[href="VM.upload_marketplace_dialog"]').removeAttr('disabled');
|
||||
$("button[href=\"VM.upload_marketplace_dialog\"]").removeAttr("disabled");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
Loading…
x
Reference in New Issue
Block a user