diff --git a/index.js b/index.js index 749af8a..6faaf2b 100644 --- a/index.js +++ b/index.js @@ -17,10 +17,11 @@ along with this program. If not, see . */ "use strict"; +let fs = require('fs'); let config = require('./config.js'); +let packageJson = JSON.parse(fs.readFileSync('./package.json')); let logger = require('./libs/logger'); -let fs = require('fs'); let path = require('path'); let async = require('async'); @@ -359,7 +360,7 @@ let successHandler = res => { * $ref: "#/definitions/Response" */ app.post('/task/cancel', uuidCheck, (req, res) => { - taskManager.cancel(req.body.uuid, e(res)); + taskManager.cancel(req.body.uuid, successHandler(res)); }); /** @swagger @@ -448,6 +449,31 @@ app.get('/getOptions', (req, res) => { }); }); +/** @swagger +* /getInfo: +* get: +* description: Retrieves information about this node. +* responses: +* 200: +* description: Info +* schema: +* type: object +* required: [version, taskQueueCount] +* properties: +* version: +* type: string +* description: Current version +* taskQueueCount: +* type: integer +* description: Number of tasks currently being processed or waiting to be processed +*/ +app.get('/getInfo', (req, res) => { + res.json({ + version: packageJson.version, + currentTaskQueue: taskManager.getQueueCount() + }); +}); + let gracefulShutdown = done => { async.series([ cb => taskManager.dumpTaskList(cb), diff --git a/libs/TaskManager.js b/libs/TaskManager.js index eb98afd..dfdd333 100644 --- a/libs/TaskManager.js +++ b/libs/TaskManager.js @@ -241,4 +241,17 @@ module.exports = class TaskManager{ if (done !== undefined) done(); }); } + + getQueueCount(){ + let count = 0; + for (let uuid in this.tasks){ + let task = this.tasks[uuid]; + + if ([statusCodes.QUEUED, + statusCodes.RUNNING].indexOf(task.status.code) !== -1){ + count++; + } + } + return count; + } }; diff --git a/libs/utils.js b/libs/utils.js index 466550b..492771e 100644 --- a/libs/utils.js +++ b/libs/utils.js @@ -1,3 +1,4 @@ +"use strict"; module.exports = { get: function(scope, prop, defaultValue){ let parts = prop.split(".");