1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-21 14:50:08 +03:00

Feature #3748: Oneflow service tab

This commit is contained in:
Carlos Martín 2015-06-09 12:11:01 +02:00
parent 13d05f2184
commit 19ed2a1c4b
7 changed files with 244 additions and 11 deletions

View File

@ -23,6 +23,7 @@ define(function(require) {
require('tabs/zones-tab'),
require('tabs/marketplace-tab'),
require('tabs/oneflow-dashboard'),
require('tabs/oneflow-services-tab'),
require('tabs/oneflow-templates-tab')
];

View File

@ -1,5 +1,6 @@
define(function(require) {
var OpenNebulaAction = require('./action');
var Locale = require('utils/locale');
var RESOURCE = "DOCUMENT";
var PATH = 'service';
@ -42,17 +43,17 @@ define(function(require) {
},
"state" : function(state_int) {
var state = [
tr("PENDING"),
tr("DEPLOYING"),
tr("RUNNING"),
tr("UNDEPLOYING"),
tr("WARNING"),
tr("DONE"),
tr("FAILED_UNDEPLOYING"),
tr("FAILED_DEPLOYING"),
tr("SCALING"),
tr("FAILED_SCALING"),
tr("COOLDOWN")
Locale.tr("PENDING"),
Locale.tr("DEPLOYING"),
Locale.tr("RUNNING"),
Locale.tr("UNDEPLOYING"),
Locale.tr("WARNING"),
Locale.tr("DONE"),
Locale.tr("FAILED_UNDEPLOYING"),
Locale.tr("FAILED_DEPLOYING"),
Locale.tr("SCALING"),
Locale.tr("FAILED_SCALING"),
Locale.tr("COOLDOWN")
][state_int]
return state ? state : state_int;
}

View File

@ -0,0 +1,43 @@
define(function(require) {
var Locale = require('utils/locale');
var Buttons = require('./oneflow-services-tab/buttons');
var Actions = require('./oneflow-services-tab/actions');
var Table = require('./oneflow-services-tab/datatable');
var TAB_ID = require('./oneflow-services-tab/tabId');
var DATATABLE_ID = "dataTableService";
var RESOURCE = "Service";
var _dialogs = [
];
var _panels = [
];
var _formPanels = [
];
var Tab = {
tabId: TAB_ID,
title: Locale.tr("Services"),
tabClass: "subTab",
parentTab: "oneflow-dashboard",
listHeader: '<i class="fa fa-fw fa-cubes"></i>&emsp;'+Locale.tr("OneFlow - Services"),
infoHeader: '<i class="fa fa-fw fa-cubes"></i>&emsp;'+Locale.tr("OneFlow - Service"),
subheader: '',
content: '<div class="row oneflow_services_error_message" hidden>\
<div class="small-6 columns small-centered text-center">\
<div class="alert-box alert radius">'+Locale.tr("Cannot connect to OneFlow server")+'</div>\
</div>\
</div>',
resource: RESOURCE,
buttons: Buttons,
actions: Actions,
dataTable: new Table(DATATABLE_ID, {actions: true, info: true}),
panels: _panels,
formPanels: _formPanels,
dialogs: _dialogs
};
return Tab;
});

View File

@ -0,0 +1,56 @@
define(function(require) {
var Sunstone = require('sunstone');
var Notifier = require('utils/notifier');
var Locale = require('utils/locale');
var OpenNebulaResource = require('opennebula/service');
var CommonActions = require('utils/common-actions');
var TAB_ID = require('./tabId');
var XML_ROOT = "DOCUMENT";
var RESOURCE = "Service";
var _commonActions = new CommonActions(OpenNebulaResource, RESOURCE, TAB_ID);
var _actions = {
"Service.show" : _commonActions.show(),
"Service.refresh" : _commonActions.refresh(),
"Service.delete" : _commonActions.delete(),
"Service.chown": _commonActions.multipleAction('chown'),
"Service.chgrp": _commonActions.multipleAction('chgrp'),
"Service.chmod": _commonActions.singleAction('chmod'),
"Service.list" : {
type: "list",
call: OpenNebulaResource.list,
callback: function(request, response) {
$(".oneflow_services_error_message").hide();
Sunstone.getDataTable(TAB_ID).updateView(request, response);
},
error: function(request, error_json) {
Notifier.onError(request, error_json, $(".oneflow_services_error_message"));
}
},
/* TODO
"Service.shutdown" : {
type: "multiple",
call: OpenNebula.Service.shutdown,
elements: serviceElements,
error: onError,
notify: true
},
"Service.recover" : {
type: "multiple",
call: OpenNebula.Service.recover,
elements: serviceElements,
error: onError,
notify: true
}
*/
};
return _actions;
});

View File

@ -0,0 +1,43 @@
define(function(require) {
var Locale = require('utils/locale');
var Buttons = {
"Service.refresh" : {
type: "action",
layout: "refresh",
alwaysActive: true
},
"Service.chown" : {
type: "confirm_with_select",
text: Locale.tr("Change owner"),
select: "User",
tip: Locale.tr("Select the new owner")+":",
layout: "user_select"
},
"Service.chgrp" : {
type: "confirm_with_select",
text: Locale.tr("Change group"),
select: "Group",
tip: Locale.tr("Select the new group")+":",
layout: "user_select"
},
"Service.shutdown" : {
type: "action",
layout: "main",
text: Locale.tr("Shutdown")
},
"Service.recover" : {
type: "action",
layout: "main",
text: Locale.tr("Recover")
},
"Service.delete" : {
type: "confirm",
text: Locale.tr("Delete"),
layout: "del",
tip: Locale.tr("This will delete the selected services")
}
};
return Buttons;
});

View File

@ -0,0 +1,86 @@
define(function(require) {
/*
DEPENDENCIES
*/
var TabDataTable = require('utils/tab-datatable');
var SunstoneConfig = require('sunstone-config');
var Locale = require('utils/locale');
var OpenNebulaService = require('opennebula/service');
/*
CONSTANTS
*/
var RESOURCE = "Service";
var XML_ROOT = "DOCUMENT";
var TAB_NAME = require('./tabId');
/*
CONSTRUCTOR
*/
function Table(dataTableId, conf) {
this.conf = conf || {};
this.tabId = TAB_NAME;
this.dataTableId = dataTableId;
this.resource = RESOURCE;
this.xmlRoot = XML_ROOT;
this.dataTableOptions = {
"bAutoWidth": false,
"bSortClasses" : false,
"bDeferRender": true,
"aoColumnDefs": [
{"bSortable": false, "aTargets": ["check"]},
{"sWidth": "35px", "aTargets": [0]},
{"bVisible": true, "aTargets": SunstoneConfig.tabTableColumns(TAB_NAME)},
{"bVisible": false, "aTargets": ['_all']}
]
};
this.columns = [
Locale.tr("ID") ,
Locale.tr("Owner") ,
Locale.tr("Group"),
Locale.tr("Name"),
Locale.tr("State")
];
this.selectOptions = {
"id_index": 1,
"name_index": 4,
"select_resource": Locale.tr("Please select a Service from the list"),
"you_selected": Locale.tr("You selected the following Service:"),
"select_resource_multiple": Locale.tr("Please select one or more Services from the list"),
"you_selected_multiple": Locale.tr("You selected the following Services:")
};
TabDataTable.call(this);
}
Table.prototype = Object.create(TabDataTable.prototype);
Table.prototype.constructor = Table;
Table.prototype.elementArray = _elementArray;
return Table;
/*
FUNCTION DEFINITIONS
*/
function _elementArray(element_json) {
var element = element_json[XML_ROOT];
return [
'<input class="check_item" type="checkbox" id="' + RESOURCE.toLowerCase() + '_' +
element.ID + '" name="selected_items" value="' +
element.ID + '"/>',
element.ID,
element.UNAME,
element.GNAME,
element.NAME,
OpenNebulaService.state(element.TEMPLATE.BODY.state)
];
}
});

View File

@ -0,0 +1,3 @@
define(function(require){
return 'oneflow-services';
});