commit
9e01f9ec47
@ -14,6 +14,7 @@
|
|||||||
"morgan": "~1.6.1",
|
"morgan": "~1.6.1",
|
||||||
"serve-favicon": "~2.3.0",
|
"serve-favicon": "~2.3.0",
|
||||||
"node.extend": "~1.1.5",
|
"node.extend": "~1.1.5",
|
||||||
"redis": "~2.4.2"
|
"redis": "~2.4.2",
|
||||||
|
"request": "~2.69.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ var router = express.Router();
|
|||||||
var extend = require('node.extend');
|
var extend = require('node.extend');
|
||||||
var redis = require("redis");
|
var redis = require("redis");
|
||||||
var client = redis.createClient();
|
var client = redis.createClient();
|
||||||
|
var request = require('request');
|
||||||
var lxc = require('../lxc');
|
var lxc = require('../lxc');
|
||||||
|
|
||||||
router.get('/start/:name', function(req, res, next){
|
router.get('/start/:name', function(req, res, next){
|
||||||
@ -32,55 +33,81 @@ router.get('/start/:name', function(req, res, next){
|
|||||||
});
|
});
|
||||||
|
|
||||||
router.get('/live/:template/:name', function(req, res, next){
|
router.get('/live/:template/:name', function(req, res, next){
|
||||||
lxc.startEphemeral(req.params.name, req.params.template, function (data) {
|
return lxc.startEphemeral(req.params.name, req.params.template, function (data) {
|
||||||
console.log('live', arguments);
|
console.log('live', arguments);
|
||||||
res.json(data);
|
return res.json(data);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
router.get('/stop/:name', function(req, res, next){
|
router.get('/stop/:name', function(req, res, next){
|
||||||
lxc.stop(req.params.name, function(data){
|
return lxc.stop(req.params.name, function(data){
|
||||||
console.log('stop', arguments);
|
console.log('stop', arguments);
|
||||||
if(data){
|
if(data){
|
||||||
res.json({status: 500, name: req.params.name, message: data});
|
return res.json({status: 500, name: req.params.name, message: data});
|
||||||
}else{
|
}else{
|
||||||
res.json({status: 200});
|
return res.json({status: 200});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
router.get('/clone/:template/:name', function(req, res, next){
|
router.get('/clone/:template/:name', function(req, res, next){
|
||||||
lxc.clone(req.params.name, req.params.template, function(data){
|
return lxc.clone(req.params.name, req.params.template, function(data){
|
||||||
console.log('clone', arguments);
|
console.log('clone', arguments);
|
||||||
if( data.match(/Created container/) ){
|
if( data.match(/Created container/) ){
|
||||||
res.json({status: 200});
|
return res.json({status: 200});
|
||||||
}else{
|
}else{
|
||||||
res.json({status: 500, message: data});
|
return res.json({status: 500, message: data});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
router.get('/destroy/:name', function(req, res, next){
|
router.get('/destroy/:name', function(req, res, next){
|
||||||
lxc.destroy(req.params.name, function(data){
|
return lxc.destroy(req.params.name, function(data){
|
||||||
console.log('destroy', arguments);
|
console.log('destroy', arguments);
|
||||||
if(data){
|
if(data){
|
||||||
res.json({status: 500, message: data});
|
return res.json({status: 500, message: data});
|
||||||
}else{
|
}else{
|
||||||
res.json({status: 200});
|
return res.json({status: 200});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
router.get('/info/:name', function(req, res, next){
|
router.get('/info/:name', function(req, res, next){
|
||||||
lxc.info(req.params.name, function(data){
|
return lxc.info(req.params.name, function(data){
|
||||||
res.json(data);
|
return res.json(data);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
router.get('/list', function(req, res, next) {
|
router.get('/list', function(req, res, next) {
|
||||||
lxc.list(function(data){
|
return lxc.list(function(data){
|
||||||
res.json(data);
|
return res.json(data);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
router.post('/run/:ip?', function(req, res, next){
|
||||||
|
|
||||||
|
var runner = function(res, req, ip){
|
||||||
|
console.log('runner on', ip,'with body:\n', JSON.stringify(req.body));
|
||||||
|
return request.post({url:'http://'+ip, form: req.body}, function(error, response, body){
|
||||||
|
console.log('request args:', arguments)
|
||||||
|
body = JSON.parse(body);
|
||||||
|
body['ip'] = ip.replace('10.0.', '')
|
||||||
|
return res.json(body)
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
if(req.params.ip){
|
||||||
|
var ip = '10.0.'+ req.params.ip;
|
||||||
|
return runner(res, req, ip);
|
||||||
|
}else{
|
||||||
|
var name = 'u1-'+(Math.random()*100).toString().replace('.','');
|
||||||
|
console.log('new VM', name);
|
||||||
|
return lxc.startEphemeral(name, 'u1', function(data){
|
||||||
|
return runner(res, req, data.ip);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
module.exports = router;
|
module.exports = router;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user