Commit 49185e0e authored by project's avatar project

--no commit message

--no commit message
parent 217af7a0
...@@ -2,6 +2,7 @@ var ctx = require('../../context'); ...@@ -2,6 +2,7 @@ var ctx = require('../../context');
var cfg = ctx.config; var cfg = ctx.config;
var JobRegistry = ctx.getLib('lib/mems/job-registry'); var JobRegistry = ctx.getLib('lib/mems/job-registry');
var TriggerRegistry = ctx.getLib('lib/mems/trigger-registry');
var JUtils = ctx.getLib('lib/job/jobutils'); var JUtils = ctx.getLib('lib/job/jobutils');
module.exports.create = function(cfg) module.exports.create = function(cfg)
...@@ -15,6 +16,7 @@ function JobManager (cfg) ...@@ -15,6 +16,7 @@ function JobManager (cfg)
this.conn = cfg.conn; this.conn = cfg.conn;
this.mem = this.conn.getMemstore(); this.mem = this.conn.getMemstore();
this.job_registry = JobRegistry.create({'redis':this.mem}); this.job_registry = JobRegistry.create({'redis':this.mem});
this.trigger_registry = TriggerRegistry.create({'redis':this.mem});
} }
JobManager.prototype.listJob = function (prm,cb) JobManager.prototype.listJob = function (prm,cb)
...@@ -43,5 +45,18 @@ JobManager.prototype.getJob = function (prm,cb) ...@@ -43,5 +45,18 @@ JobManager.prototype.getJob = function (prm,cb)
self.job_registry.getJob(prm.jid,function (err,jobcfg){ self.job_registry.getJob(prm.jid,function (err,jobcfg){
cb(err,jobcfg) cb(err,jobcfg)
}) })
}
JobManager.prototype.setJob = function (prm,cb)
{
var self = this;
var job = prm.job;
if(JUtils.validate(job)){
self.job_registry.setJob(job.job_id,job);
self.trigger_registry.setByJob(job);
cb(null);
}else{
cb('Invalid job config');
}
} }
...@@ -41,6 +41,7 @@ SchedulerService.prototype.reload = function () ...@@ -41,6 +41,7 @@ SchedulerService.prototype.reload = function ()
self.clean(); self.clean();
self.crons.update(function(err){ self.crons.update(function(err){
var cl = self.crons.list; var cl = self.crons.list;
console.log(cl);
for(var i=0;i<cl.length;i++) for(var i=0;i<cl.length;i++)
{ {
var c = cl[i]; var c = cl[i];
......
...@@ -34,4 +34,22 @@ router.get('/:jid',function (req, res) { ...@@ -34,4 +34,22 @@ router.get('/:jid',function (req, res) {
}) })
}); });
router.post('/',function (req, res) {
var reqHelper = request.create(req);
var respHelper = response.create(res);
var jm = req.context.jobManager;
var json_job = req.body;
jm.setJob({'job':json_job},function(err,res){
if(err)
{
respHelper.response400(err);
}else{
respHelper.response201();
}
});
});
module.exports = router; module.exports = router;
var redis = require('redis'); var redis = require('redis');
const PREFIX = 'bs:scheduler:cronlist'; const PREFIX = 'bs:scheduler:cronlist';
const KEYS = 'bs:regis:triggers';
module.exports.create = function(cfg) module.exports.create = function(cfg)
{ {
...@@ -54,12 +55,30 @@ CronList.prototype.clean = function() ...@@ -54,12 +55,30 @@ CronList.prototype.clean = function()
CronList.prototype.update = function(cb) CronList.prototype.update = function(cb)
{ {
var self=this; var self=this;
this.mem.get(PREFIX, function (err, result) { // this.mem.get(PREFIX, function (err, result) {
if(!err && result){ // if(!err && result){
self.list = JSON.parse(result); // self.list = JSON.parse(result);
// }
// cb(err);
// });
self.list = [];
self.mem.hgetall(KEYS,function (err,res){
if(!err && Array.isArray(res)){
var ks = Object.keys(res);
for(int i=0;i<ks.length;i++)
{
var k = ks[i];
var trigger = JSON.parse(res[k]);
if(trigger.type == 'cron')
{
var cl = self.mkCron(trigger.id,trigger.cmd,trigger.job_id);
self.list.push(cl);
}
}
} }
cb(err); cb(err);
}); });
} }
CronList.prototype.commit = function(cb) CronList.prototype.commit = function(cb)
......
var redis = require('redis');
const KEYS = 'bs:regis:triggers';
module.exports.create = function(cfg)
{
return new TR(cfg);
}
var TR = function TriggerRegistry(cfg)
{
this.config = cfg;
if(cfg.conn){
this.mem = redis.createClient(cfg.conn);
}else if(cfg.redis){
this.mem = cfg.redis;
}else{
this.mem = null;
}
}
TR.prototype.setTrigger = function(name,trigger,cb)
{
var self = this;
var strTrigger = JSON.stringify(trigger);
self.mem.hset(KEYS,name,strTrigger);
if(typeof cb == 'function'){
cb();
}
}
TR.prototype.setByJob = function(job,cb)
{
var self = this;
var id = 'def.' + job.job_id;
var trigger = job.trigger;
trigger.id = id;
trigger.job_id = job.job_id;
self.setTrigger(id,trigger,cb);
}
TR.prototype.clear = function (cb)
{
self.mem.del(KEYS);
if(typeof cb == 'function'){
cb();
}
}
...@@ -125,23 +125,23 @@ const crypto = require("crypto"); ...@@ -125,23 +125,23 @@ const crypto = require("crypto");
var redis = require('redis'); var redis = require('redis');
// var handle = {'mem' : redis.createClient('redis://bigmaster.igridproject.info:6379/1')} // var handle = {'mem' : redis.createClient('redis://bigmaster.igridproject.info:6379/1')}
// var input_data = {}; // var input_data = {};
// var job_config = { var job_config = {
// "job_id" : "example", "job_id" : "example",
// "active" : true, "active" : true,
// "trigger" : { "trigger" : {
// "type": "cron", "type": "cron",
// "cmd": "29,59 * * * * *" "cmd": "29,59 * * * * *"
// }, },
// "data_in" : { "data_in" : {
// "type": "example" "type": "example"
// }, },
// "data_transform" : { "data_transform" : {
// "type": "noop" "type": "noop"
// }, },
// "data_out" : { "data_out" : {
// "type": "console" "type": "console"
// } }
// } }
// //
// var ag = { // var ag = {
// "job_id" : "agritronics-gistda-01", // "job_id" : "agritronics-gistda-01",
...@@ -219,24 +219,16 @@ var redis = require('redis'); ...@@ -219,24 +219,16 @@ var redis = require('redis');
// }); // });
//var client = redis.createClient('redis://bigmaster.igridproject.info:6379/1'); var client = redis.createClient('redis://lab1.igridproject.info:6379/1');
var client = redis.createClient('redis://localhost:9736/1'); //var client = redis.createClient('redis://localhost:9736/1');
client.keys('bs:regis:jobs:*', function (err, keys) {
if (err) return console.log(err);
var arr =[];
for(var i = 0, len = keys.length; i < len; i++) {
//console.log(keys[i]);
arr.push(keys[i].split(':')[3]);
client.get(keys[i], function(err, data){
var obj_data = JSON.parse(data);
//arr.push(obj_data);
});
}
console.log(arr); client.hgetall('bs:regis:triggers', function (err, rep) {
Object.keys(rep).forEach(function(a,b){
console.log(b);
})
//console.log(Object.keys(rep));
}); });
//client.hset('bs:regis:triggers','job01',JSON.stringify(job_config));
// var CronList = ctx.getLib('lib/mems/cronlist'); // var CronList = ctx.getLib('lib/mems/cronlist');
// //
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment