Skip to content

Commit

Permalink
Merge pull request #606 from ric03uec/master
Browse files Browse the repository at this point in the history
adding logs route for workers
  • Loading branch information
a-murphy committed May 10, 2017
2 parents 739315d + 4a04d52 commit 0662288
Show file tree
Hide file tree
Showing 2 changed files with 97 additions and 0 deletions.
1 change: 1 addition & 0 deletions api/workers/Routes.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ var validateAccount = require('../../common/auth/validateAccount.js');

function workerRoutes(app) {
app.get('/api/workers', validateAccount, require('./get.js'));
app.get('/api/workers/logs', validateAccount, require('./getLogs.js'));
app.post('/api/workers', validateAccount, require('./post.js'));
app.post('/api/workers/initialize', validateAccount,
require('./initialize.js'));
Expand Down
96 changes: 96 additions & 0 deletions api/workers/getLogs.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
'use strict';

var self = getLogs;
module.exports = self;

var async = require('async');
var fs = require('fs');
var readline = require('readline');
var path = require('path');

function getLogs(req, res) {
var bag = {
reqQuery: req.query,
resBody: [],
component: 'workers',
skipRead: false
};

bag.who = util.format('workers|%s', self.name);
logger.info(bag.who, 'Starting');

async.series([
_checkInputParams.bind(null, bag),
_checkFile.bind(null, bag),
_get.bind(null, bag)
],
function (err) {
logger.info(bag.who, 'Completed');
if (err)
return respondWithError(res, err);

sendJSONResponse(res, bag.resBody);
}
);
}

function _checkInputParams(bag, next) {
var who = bag.who + '|' + _checkInputParams.name;
logger.verbose(who, 'Inside');

bag.logsFile = path.join(
global.config.runtimeDir, '/logs/', bag.component + '.log');

return next();
}

function _checkFile(bag, next) {
var who = bag.who + '|' + _checkFile.name;
logger.verbose(who, 'Inside');

fs.stat(bag.logsFile,
function (err) {
if (err && err.code === 'ENOENT')
bag.skipRead = true;
else if (err)
return next(
new ActErr(who, ActErr.OperationFailed,
'Failed to get logs for ' + bag.component +
' with error: ' + util.inspect(err))
);

return next();
}
);
}

function _get(bag, next) {
if (bag.skipRead) return next();

var who = bag.who + '|' + _get.name;
logger.verbose(who, 'Inside');

var filereader = readline.createInterface({
input: fs.createReadStream(bag.logsFile),
console: false
});

filereader.on('line',
function (line) {
bag.resBody.push(line);
}
);

filereader.on('close',
function (err) {
if (err)
return next(
new ActErr(who, ActErr.OperationFailed,
'Failed to get logs for ' + bag.component +
' with error: ' + util.inspect(err))
);

return next(null);
}
);
}

0 comments on commit 0662288

Please sign in to comment.