Overview over monitoring states in admin panel.

This commit is contained in:
baldo 2016-06-11 15:31:57 +02:00
parent eb3e0d96be
commit 4ea37d59cd
4 changed files with 126 additions and 2 deletions

View file

@ -4,6 +4,7 @@ angular.module('ffffng').factory('MonitoringResource', function (
Constraints,
Validator,
MonitoringService,
Logger,
_,
Strings,
Resources,
@ -12,6 +13,30 @@ angular.module('ffffng').factory('MonitoringResource', function (
var isValidToken = Validator.forConstraint(Constraints.token);
return {
getAll: function (req, res) {
Resources.getValidRestParams('list', req, function (err, restParams) {
if (err) {
return Resources.error(res, err);
}
return MonitoringService.getAll(
restParams,
function (err, monitoringStates, total) {
if (err) {
Logger.tag('monitoring', 'admin').error('Could not get monitoring states:', err);
return Resources.error(res, {data: 'Internal error.', type: ErrorTypes.internalError});
}
res.set('X-Total-Count', total);
return Resources.success(res, _.map(monitoringStates, function (state) {
state.mapId = _.toLower(state.mac).replace(/:/g, '');
return state;
}));
}
);
});
},
confirm: function (req, res) {
var data = Resources.getData(req);

View file

@ -25,6 +25,8 @@ angular.module('ffffng').factory('Router', function (
app.put('/internal/api/tasks/enable/:id', TaskResource.enable);
app.put('/internal/api/tasks/disable/:id', TaskResource.disable);
app.get('/internal/api/monitoring', MonitoringResource.getAll);
app.get('/internal/api/mails', MailResource.getAll);
app.get('/internal/api/mails/:id', MailResource.get);
app.delete('/internal/api/mails/:id', MailResource.delete);

View file

@ -15,7 +15,8 @@ angular.module('ffffng')
Strings,
UrlBuilder,
Validator,
Constraints
Constraints,
Resources
) {
var MONITORING_MAILS_DB_BATCH_SIZE = 50;
var MONITORING_OFFLINE_MAILS_SCHEDULE = {
@ -352,6 +353,53 @@ angular.module('ffffng')
}
return {
getAll: function (restParams, callback) {
Database.get(
'SELECT count(*) AS total FROM node_state',
[],
function (err, row) {
if (err) {
return callback(err);
}
var total = row.total;
var filter = Resources.filterClause(
restParams,
'id',
[
'id',
'mac',
'state',
'last_seen',
'import_timestamp',
'last_status_mail_type',
'last_status_mail_sent',
'created_at',
'modified_at'
],
[
'mac',
'state',
'last_status_mail_type'
]
);
Database.all(
'SELECT * FROM node_state WHERE ' + filter.query,
_.concat([], filter.params),
function (err, rows) {
if (err) {
return callback(err);
}
callback(null, rows, total);
}
);
}
);
},
confirm: function (token, callback) {
NodeService.getNodeDataByMonitoringToken(token, function (err, node, nodeSecrets) {
if (err) {