commit
58cdf6c42d
8
app.js
8
app.js
@ -4,10 +4,6 @@ var favicon = require('serve-favicon');
|
||||
var logger = require('morgan');
|
||||
var cookieParser = require('cookie-parser');
|
||||
var bodyParser = require('body-parser');
|
||||
|
||||
var routes = require('./routes/index');
|
||||
var users = require('./routes/users');
|
||||
|
||||
var app = express();
|
||||
|
||||
// view engine setup
|
||||
@ -22,8 +18,8 @@ app.use(bodyParser.urlencoded({ extended: false }));
|
||||
app.use(cookieParser());
|
||||
app.use(express.static(path.join(__dirname, 'public')));
|
||||
|
||||
app.use('/', users);
|
||||
app.use('/api', routes);
|
||||
app.use('/', require('./routes/index'));
|
||||
app.use('/api', require('./routes/api'));
|
||||
|
||||
// catch 404 and forward to error handler
|
||||
app.use(function(req, res, next) {
|
||||
|
6
lxc.js
6
lxc.js
@ -1,3 +1,5 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = function(config){
|
||||
var obj = {};
|
||||
var cmd = require('node-cmd');
|
||||
@ -11,8 +13,8 @@ module.exports = function(config){
|
||||
sysExec('lxc-create -n '+name+' -t '+template, cbComplete);
|
||||
};
|
||||
|
||||
obj.clone = function(name, base_name, cbComplete, cbData){
|
||||
sysExec('lxc-clone -o '+base_name+ ' -n '+name +' -B overlayfs -s', cbComplete, cbData);
|
||||
obj.clone = function(name, base_name, callback){
|
||||
sysExec('lxc-clone -o '+base_name+ ' -n '+name +' -B overlayfs -s', 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 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){
|
||||
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(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);
|
||||
});
|
||||
/* GET users listing. */
|
||||
router.get('/', function(req, res, next) {
|
||||
res.render('index')
|
||||
});
|
||||
|
||||
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