commit
58cdf6c42d
8
app.js
8
app.js
@ -4,10 +4,6 @@ var favicon = require('serve-favicon');
|
|||||||
var logger = require('morgan');
|
var logger = require('morgan');
|
||||||
var cookieParser = require('cookie-parser');
|
var cookieParser = require('cookie-parser');
|
||||||
var bodyParser = require('body-parser');
|
var bodyParser = require('body-parser');
|
||||||
|
|
||||||
var routes = require('./routes/index');
|
|
||||||
var users = require('./routes/users');
|
|
||||||
|
|
||||||
var app = express();
|
var app = express();
|
||||||
|
|
||||||
// view engine setup
|
// view engine setup
|
||||||
@ -22,8 +18,8 @@ app.use(bodyParser.urlencoded({ extended: false }));
|
|||||||
app.use(cookieParser());
|
app.use(cookieParser());
|
||||||
app.use(express.static(path.join(__dirname, 'public')));
|
app.use(express.static(path.join(__dirname, 'public')));
|
||||||
|
|
||||||
app.use('/', users);
|
app.use('/', require('./routes/index'));
|
||||||
app.use('/api', routes);
|
app.use('/api', require('./routes/api'));
|
||||||
|
|
||||||
// catch 404 and forward to error handler
|
// catch 404 and forward to error handler
|
||||||
app.use(function(req, res, next) {
|
app.use(function(req, res, next) {
|
||||||
|
6
lxc.js
6
lxc.js
@ -1,3 +1,5 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
module.exports = function(config){
|
module.exports = function(config){
|
||||||
var obj = {};
|
var obj = {};
|
||||||
var cmd = require('node-cmd');
|
var cmd = require('node-cmd');
|
||||||
@ -11,8 +13,8 @@ module.exports = function(config){
|
|||||||
sysExec('lxc-create -n '+name+' -t '+template, cbComplete);
|
sysExec('lxc-create -n '+name+' -t '+template, cbComplete);
|
||||||
};
|
};
|
||||||
|
|
||||||
obj.clone = function(name, base_name, cbComplete, cbData){
|
obj.clone = function(name, base_name, callback){
|
||||||
sysExec('lxc-clone -o '+base_name+ ' -n '+name +' -B overlayfs -s', cbComplete, cbData);
|
sysExec('lxc-clone -o '+base_name+ ' -n '+name +' -B overlayfs -s', callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
obj.destroy = function(name, callback){
|
obj.destroy = function(name, callback){
|
||||||
|
81
routes/api.js
Normal file
81
routes/api.js
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
var express = require('express');
|
||||||
|
var router = express.Router();
|
||||||
|
var extend = require('node.extend');
|
||||||
|
var redis = require("redis");
|
||||||
|
var client = redis.createClient();
|
||||||
|
var lxc = require('../lxc')();
|
||||||
|
//lxc.startEphemeral('ubuntu_template', 'ue0', function(){console.log('cb1', arguments)}, function(){console.log('cb2', arguments)})
|
||||||
|
router.get('/start/:name', function(req, res, next){
|
||||||
|
lxc.start(req.params.name, function(status, message){
|
||||||
|
if(status){
|
||||||
|
res.json({status: 500, name: req.params.name, message: message});
|
||||||
|
}else{
|
||||||
|
setTimeout(function() {
|
||||||
|
lxc.info(req.params.name, null, function(data){
|
||||||
|
var domain = req.query.domain || 'vm42.us';
|
||||||
|
domain = req.params.name+'.'+domain;
|
||||||
|
client.SADD("hosts", domain, function(){});
|
||||||
|
|
||||||
|
var ip = data.ip + ':5000';
|
||||||
|
client.HSET(domain, "ip", ip, redis.print);
|
||||||
|
client.HSET(domain, "updated", (new Date).getTime(), redis.print);
|
||||||
|
client.hset(domain, "include", "proxy.include");
|
||||||
|
res.json({status: 200, info: data});
|
||||||
|
});
|
||||||
|
}, 5000);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
router.get('/live/:template/:name', function(req, res, next){
|
||||||
|
lxc.startEphemeral(req.params.name, req.params.template, function (data) {
|
||||||
|
res.json(data);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
router.get('/stop/:name', function(req, res, next){
|
||||||
|
lxc.stop(req.params.name, function(data, message){
|
||||||
|
if(data){
|
||||||
|
res.json({status: 500, name: req.params.name, message: message});
|
||||||
|
}else{
|
||||||
|
res.json({status: 200});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
router.get('/clone/:template/:name', function(req, res, next){
|
||||||
|
lxc.clone(req.params.name, req.params.template, function(data){
|
||||||
|
if( data.match(/Created container/) ){
|
||||||
|
res.json({status: 200});
|
||||||
|
}else{
|
||||||
|
res.json({status: 500, message: data});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
router.get('/destroy/:name', function(req, res, next){
|
||||||
|
lxc.destroy(req.params.name, function(data){
|
||||||
|
if(data){
|
||||||
|
res.json({status: 500, message: data});
|
||||||
|
}else{
|
||||||
|
res.json({status: 200});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
router.get('/info/:name', function(req, res, next){
|
||||||
|
lxc.info(req.params.name, function(data){
|
||||||
|
res.json(data);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
router.get('/list', function(req, res, next) {
|
||||||
|
lxc.list(function(data){
|
||||||
|
res.json(data);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
module.exports = router;
|
@ -1,80 +1,9 @@
|
|||||||
var express = require('express');
|
var express = require('express');
|
||||||
var router = express.Router();
|
var router = express.Router();
|
||||||
var extend = require('node.extend');
|
|
||||||
var redis = require("redis");
|
|
||||||
var client = redis.createClient();
|
|
||||||
var lxc = require('../lxc')({sshBind: false/*['/usr/bin/ssh', 'virt@127.0.0.1']*/});
|
|
||||||
//lxc.startEphemeral('ubuntu_template', 'ue0', function(){console.log('cb1', arguments)}, function(){console.log('cb2', arguments)})
|
|
||||||
|
|
||||||
router.get('/start/:name', function(req, res, next){
|
/* GET users listing. */
|
||||||
lxc.start(req.params.name, function(status, message){
|
router.get('/', function(req, res, next) {
|
||||||
if(status){
|
res.render('index')
|
||||||
res.json({status: 500, name: req.params.name, message: message});
|
|
||||||
}else{
|
|
||||||
setTimeout(function() {
|
|
||||||
lxc.info(req.params.name, null, function(data){
|
|
||||||
var domain = req.query.domain || 'vm42.us';
|
|
||||||
domain = req.params.name+'.'+domain;
|
|
||||||
client.SADD("hosts", domain, function(){});
|
|
||||||
|
|
||||||
var ip = data.ip + ':5000';
|
|
||||||
client.HSET(domain, "ip", ip, redis.print);
|
|
||||||
client.HSET(domain, "updated", (new Date).getTime(), redis.print);
|
|
||||||
client.hset(domain, "include", "proxy.include");
|
|
||||||
res.json({status: 200, info: data});
|
|
||||||
});
|
|
||||||
}, 5000);
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
router.get('/live/:template/:name', function(req, res, next){
|
|
||||||
lxc.startEphemeral(req.params.name, req.params.template, function (data) {
|
|
||||||
res.json(data);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
router.get('/stop/:name', function(req, res, next){
|
|
||||||
lxc.stop(req.params.name, function(data, message){
|
|
||||||
if(data){
|
|
||||||
res.json({status: 500, name: req.params.name, message: message});
|
|
||||||
}else{
|
|
||||||
res.json({status: 200});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
router.get('/clone/:template/:name', function(req, res, next){
|
|
||||||
lxc.clone(req.params.name, req.params.template, function(message){
|
|
||||||
if( message.match(/Created container/) ){
|
|
||||||
res.json({status: 200});
|
|
||||||
}else{
|
|
||||||
res.json({status: 500, message: message});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
router.get('/destroy/:name', function(req, res, next){
|
|
||||||
lxc.destroy(req.params.name, function(data){
|
|
||||||
if(data){
|
|
||||||
res.json({status: 500, message: data});
|
|
||||||
}else{
|
|
||||||
res.json({status: 200});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
router.get('/info/:name', function(req, res, next){
|
|
||||||
lxc.info(req.params.name, function(data){
|
|
||||||
res.json(data);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
router.get('/list', function(req, res, next) {
|
|
||||||
lxc.list(function(data){
|
|
||||||
res.json(data);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
module.exports = router;
|
module.exports = router;
|
||||||
|
@ -1,9 +0,0 @@
|
|||||||
var express = require('express');
|
|
||||||
var router = express.Router();
|
|
||||||
|
|
||||||
/* GET users listing. */
|
|
||||||
router.get('/', function(req, res, next) {
|
|
||||||
res.render('index')
|
|
||||||
});
|
|
||||||
|
|
||||||
module.exports = router;
|
|
Loading…
x
Reference in New Issue
Block a user