Semaphore/lib/routes/task/task.js

63 lines
1.2 KiB
JavaScript
Raw Normal View History

var models = require('../../models')
var mongoose = require('mongoose')
var express = require('express')
var jobRunner = require('../../runner');
exports.unauthorized = function (app, template) {
template([
'view'
], {
prefix: 'task'
});
}
exports.httpRouter = function (app) {
}
exports.router = function (app) {
var task = express.Router();
task.get('/', view)
.delete('/', remove)
app.param('task_id', get)
app.use('/playbook/:playbook_id/job/:job_id/task/:task_id', task);
}
function get (req, res, next, id) {
models.Task.findOne({
_id: id
}).exec(function (err, task) {
if (err || !task) {
return res.send(404);
}
req.task = task;
next();
});
}
function view (req, res) {
res.send(req.task);
}
function remove (req, res) {
if (req.task.status == 'Running') {
return res.send(400, 'Job is Running.');
}
jobRunner.queue.pause();
for (var i = 0; i < jobRunner.queue.tasks.length; i++) {
if (jobRunner.queue.tasks[i].data._id.toString() == req.task._id.toString()) {
// This is our task
jobRunner.queue.tasks.splice(i, 1);
break;
}
}
jobRunner.queue.resume();
req.task.remove(function (err) {
res.send(201);
})
}