Commit 49185e0e authored by project's avatar project

--no commit message

--no commit message
parent 217af7a0
......@@ -2,6 +2,7 @@ var ctx = require('../../context');
var cfg = ctx.config;
var JobRegistry = ctx.getLib('lib/mems/job-registry');
var TriggerRegistry = ctx.getLib('lib/mems/trigger-registry');
var JUtils = ctx.getLib('lib/job/jobutils');
module.exports.create = function(cfg)
......@@ -15,6 +16,7 @@ function JobManager (cfg)
this.conn = cfg.conn;
this.mem = this.conn.getMemstore();
this.job_registry = JobRegistry.create({'redis':this.mem});
this.trigger_registry = TriggerRegistry.create({'redis':this.mem});
}
JobManager.prototype.listJob = function (prm,cb)
......@@ -43,5 +45,18 @@ JobManager.prototype.getJob = function (prm,cb)
self.job_registry.getJob(prm.jid,function (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 ()
self.clean();
self.crons.update(function(err){
var cl = self.crons.list;
console.log(cl);
for(var i=0;i<cl.length;i++)
{
var c = cl[i];
......
......@@ -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;
var redis = require('redis');
const PREFIX = 'bs:scheduler:cronlist';
const KEYS = 'bs:regis:triggers';
module.exports.create = function(cfg)
{
......@@ -54,12 +55,30 @@ CronList.prototype.clean = function()
CronList.prototype.update = function(cb)
{
var self=this;
this.mem.get(PREFIX, function (err, result) {
if(!err && result){
self.list = JSON.parse(result);
// this.mem.get(PREFIX, function (err, result) {
// if(!err && 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);
});
}
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");
var redis = require('redis');
// var handle = {'mem' : redis.createClient('redis://bigmaster.igridproject.info:6379/1')}
// var input_data = {};
// var job_config = {
// "job_id" : "example",
// "active" : true,
// "trigger" : {
// "type": "cron",
// "cmd": "29,59 * * * * *"
// },
// "data_in" : {
// "type": "example"
// },
// "data_transform" : {
// "type": "noop"
// },
// "data_out" : {
// "type": "console"
// }
// }
var job_config = {
"job_id" : "example",
"active" : true,
"trigger" : {
"type": "cron",
"cmd": "29,59 * * * * *"
},
"data_in" : {
"type": "example"
},
"data_transform" : {
"type": "noop"
},
"data_out" : {
"type": "console"
}
}
//
// var ag = {
// "job_id" : "agritronics-gistda-01",
......@@ -219,24 +219,16 @@ var redis = require('redis');
// });
//var client = redis.createClient('redis://bigmaster.igridproject.info:6379/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);
});
}
var client = redis.createClient('redis://lab1.igridproject.info:6379/1');
//var client = redis.createClient('redis://localhost:9736/1');
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');
//
......
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