Commit 47ea333d authored by project's avatar project

--no commit message

--no commit message
parent d9801661
...@@ -5,6 +5,7 @@ var app = express(); ...@@ -5,6 +5,7 @@ var app = express();
var bodyParser = require('body-parser'); var bodyParser = require('body-parser');
var ConnCtx = ctx.getLib('lib/conn/connection-context'); var ConnCtx = ctx.getLib('lib/conn/connection-context');
var JobManager = require('./lib/job-manager')
var API_PORT = 19980; var API_PORT = 19980;
module.exports.create = function(cfg) module.exports.create = function(cfg)
...@@ -36,11 +37,11 @@ ControllerAPI.prototype._http_start = function() ...@@ -36,11 +37,11 @@ ControllerAPI.prototype._http_start = function()
extended: true extended: true
})); }));
// var context = ctx.getLib('lib/ws/http-context'); var context = ctx.getLib('lib/ws/http-context');
// app.use(context.middleware({ app.use(context.middleware({
// 'httpacl' : self.httpacl, 'conn' : self.conn,
// 'jobcaller' : self.jobcaller 'jobManager' : JobManager.create({'conn' : self.conn})
// })); }));
app.use(require('./ws')); app.use(require('./ws'));
......
var ctx = require('../../context');
var cfg = ctx.config;
var JobRegistry = ctx.getLib('lib/mems/job-registry');
var JUtils = ctx.getLib('lib/job/jobutils');
module.exports.create = function(cfg)
{
return new JobManager(cfg);
}
function JobManager (cfg)
{
this.config = cfg;
this.conn = cfg.conn;
this.mem = this.conn.getMemstore();
this.job_registry = JobRegistry.create({'redis':this.mem});
}
JobManager.prototype.listJob = function (prm,cb)
{
var self = this;
var param = prm;
if(typeof prm == 'function')
{
cb = prm;
param = {};
}
self.job_registry.listJob(function (err,jobs){
if(jobs){
cb(null,jobs);
}else{
cb(null,[]);
}
});
}
JobManager.prototype.getJob = function (prm,cb)
{
var self = this;
self.job_registry.getJob(prm.jid,function (err,jobcfg){
cb(err,jobcfg)
})
}
var express = require('express'); var express = require('express');
var router = express.Router(); var router = express.Router();
router.use('/jobs',require('./service-jobs')); router.use('/jobs',require('./ws-jobs'));
module.exports = router; module.exports = router;
...@@ -5,19 +5,33 @@ var router = express.Router(); ...@@ -5,19 +5,33 @@ var router = express.Router();
var cfg = ctx.config; var cfg = ctx.config;
var response = ctx.getLib('lib/ws/response'); var response = ctx.getLib('lib/ws/response');
var request = ctx.getLib('lib/ws/request'); var request = ctx.getLib('lib/ws/request');
router.get('/',function (req, res) { router.get('/',function (req, res) {
var reqHelper = request.create(req); var reqHelper = request.create(req);
var respHelper = response.create(res); var respHelper = response.create(res);
var jid = req.params.id; var jm = req.context.jobManager;
//get_object(reqHelper,respHelper,jid); jm.listJob({},function (err,jobs){
respHelper.responseOK({'status':'OK'}); respHelper.responseOK(jobs);
})
}); });
router.get('/:jid',function (req, res) {
var reqHelper = request.create(req);
var respHelper = response.create(res);
var jid = req.params.jid;
var jm = req.context.jobManager;
jm.getJob({'jid':jid},function (err,jobs){
if(jobs)
{
respHelper.responseOK(jobs);
}else{
respHelper.response404('Not found');
}
})
});
module.exports = router; module.exports = router;
function validate (jobcfg)
{
var ret = true;
if(!jobcfg){ return false;}
if(!jobcfg.job_id){return false;}
if(!validate_trigger(jobcfg.trigger)){return false;}
return ret;
}
function validate_trigger (trigger)
{
if(!trigger){return false;}
if(!trigger.type){return false;}
return true;
}
module.exports.validate = validate;
...@@ -46,3 +46,18 @@ JobRegistry.prototype.setJob = function(jobid,job,cb) ...@@ -46,3 +46,18 @@ JobRegistry.prototype.setJob = function(jobid,job,cb)
} }
} }
JobRegistry.prototype.listJob = function(cb)
{
var self = this;
var jobKeys = PREFIX + ':*';
this.mem.keys(jobKeys,function(err,keys){
if(err || !keys){return cb(err,null);}
var arr =[];
for(var i = 0, len = keys.length; i < len; i++) {
arr.push(keys[i].split(':')[3]);
}
cb(err,arr);
});
}
...@@ -123,67 +123,67 @@ const crypto = require("crypto"); ...@@ -123,67 +123,67 @@ 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",
"active" : true, // "active" : true,
"trigger" : { // "trigger" : {
"type": "cron", // "type": "cron",
"cmd": "15,45 * * * *" // "cmd": "15,45 * * * *"
}, // },
"data_in" : { // "data_in" : {
"type": "agritronics", // "type": "agritronics",
"profile": { // "profile": {
"station_id": "GISDA-01", // "station_id": "GISDA-01",
"latitude": "", // "latitude": "",
"longitude": "" // "longitude": ""
}, // },
"param": { // "param": {
"url": "http://agritronics.nstda.or.th/ws/get.php", // "url": "http://agritronics.nstda.or.th/ws/get.php",
"appkey": "0c5a295bd8c07a081f4f0061eee6665c38", // "appkey": "0c5a295bd8c07a081f4f0061eee6665c38",
"station_id": "GISTDA-01", // "station_id": "GISTDA-01",
"data_types": [ // "data_types": [
{"type": "1", "node_id": "4096"}, // {"type": "1", "node_id": "4096"},
{"type": "2", "node_id": "4096"}, // {"type": "2", "node_id": "4096"},
{"type": "4", "node_id": "4096"}, // {"type": "4", "node_id": "4096"},
{"type": "5", "node_id": "4096"}, // {"type": "5", "node_id": "4096"},
{"type": "6", "node_id": "4096"}, // {"type": "6", "node_id": "4096"},
{"type": "7", "node_id": "4096"}, // {"type": "7", "node_id": "4096"},
{"type": "8", "node_id": "4096"}, // {"type": "8", "node_id": "4096"},
{"type": "10", "node_id": "4096"}, // {"type": "10", "node_id": "4096"},
{"type": "2021", "node_id": "7328"}, // {"type": "2021", "node_id": "7328"},
{"type": "2022", "node_id": "7328"} // {"type": "2022", "node_id": "7328"}
], // ],
"init_observed_date": "2017-03-10", // "init_observed_date": "2017-03-10",
"init_observed_time": "12:00:00" // "init_observed_time": "12:00:00"
} // }
}, // },
"data_transform" : { // "data_transform" : {
"type": "agritronics" // "type": "agritronics"
}, // },
"data_out" : { // "data_out" : {
"type": "console" // "type": "console"
} // }
} // }
// var JobTask = ctx.getLib('jobworker/lib/jobtask'); // var JobTask = ctx.getLib('jobworker/lib/jobtask');
...@@ -219,18 +219,24 @@ var ag = { ...@@ -219,18 +219,24 @@ var ag = {
// }); // });
var client = redis.createClient('redis://bigmaster.igridproject.info:6379/1'); //var client = redis.createClient('redis://bigmaster.igridproject.info:6379/1');
// var client = redis.createClient('redis://localhost:9736/1');
// client.keys('bs:jobs:*', function (err, keys) {
// if (err) return console.log(err); client.keys('bs:regis:jobs:*', function (err, keys) {
// if (err) return console.log(err);
// for(var i = 0, len = keys.length; i < len; i++) {
// console.log(keys[i]); var arr =[];
// client.get(keys[i], function(err, data){ for(var i = 0, len = keys.length; i < len; i++) {
// console.log(data); //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);
});
// 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