From 1644812213430043e44a3ad0b20d6cbe19e6a736 Mon Sep 17 00:00:00 2001 From: william Date: Sat, 30 Jan 2016 00:19:15 -0500 Subject: [PATCH 01/11] testing --- lxc.js | 47 ++++++++++++++++++++++++----------------------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/lxc.js b/lxc.js index 4bb1f6f..6dd871e 100644 --- a/lxc.js +++ b/lxc.js @@ -1,39 +1,38 @@ 'use strict'; var exec = require('child_process').exec; -function sysExec(command,callback){ - command = 'unset XDG_SESSION_ID XDG_RUNTIME_DIR; cgm movepid all virt $$; ' + command - exec(command,(function(){ - return function(err,data,stderr){ - if(!callback) return; - callback(data, err, stderr); - } - })(callback)); +function sysExec(command, callback){ + command = 'unset XDG_SESSION_ID XDG_RUNTIME_DIR; cgm movepid all virt $$; ' + command; + callback = callback || function(){}; + + return exec(command, callback); }; var lxc = { create: function(name, template, config, callback){ - sysExec('lxc-create -n '+name+' -t '+template, callback); + return sysExec('lxc-create -n '+name+' -t '+template, callback); }, clone: function(name, base_name, callback){ - sysExec('lxc-clone -o '+base_name+ ' -n '+name +' -B overlayfs -s', callback); + return sysExec('lxc-clone -o '+base_name+ ' -n '+name +' -B overlayfs -s', callback); }, destroy: function(name, callback){ - sysExec('lxc-destroy -n '+ name, function(data){ + return sysExec('lxc-destroy -n '+ name, function(data){ callback(!data.match(/Destroyed container/)); }); }, start: function(name, callback){ var cmd = 'lxc-start --name '+name+' --daemon'; - sysExec(cmd, callback); + return sysExec(cmd, callback); }, startEphemeral: function(name, base_name, callback){ - var output = ''; - sysExec('lxc-start-ephemeral -o '+base_name+ ' -n '+name +' --union-type overlayfs -d', function(data){ + var command = 'lxc-start-ephemeral -o '+base_name+ ' -n '+name +' --union-type overlayfs -d'; + callback = callback || function(){}; + + return sysExec(command, function(data){ if(data.match("doesn't exist.")){ return callback({status: 500, error: "doesn't exist."}); } @@ -49,19 +48,19 @@ var lxc = { }, stop: function(name, callback){ - sysExec('lxc-stop -n '+ name, callback); + return sysExec('lxc-stop -n '+ name, callback); }, freeze: function(name, callback){ - sysExec('lxc-freeze -n '+name, callback); + return sysExec('lxc-freeze -n '+name, callback); }, unfreeze: function(name, callback){ - sysExec('lxc-unfreeze -n '+name, callback); + return sysExec('lxc-unfreeze -n '+name, callback); }, info: function(name, callback){ - sysExec('lxc-info -n '+name, function(data){ + return sysExec('lxc-info -n '+name, function(data){ if(data.match("doesn't exist")){ return callback({state: 'NULL'}); } @@ -85,12 +84,13 @@ var lxc = { keys = keys.map(function(v){return v.toLowerCase()}); output = output.slice(0).splice(1).slice(0,-1); - for (var i in output) - { + for(var i in output){ - var aIn = output[i].split(/\s+/).slice(0,-1), - mapOut = {}; - aIn.map( function(v,i){ mapOut[keys[i]] = v; } ); + var aIn = output[i].split(/\s+/).slice(0,-1); + var mapOut = {}; + aIn.map(function(value,idx){ + mapOut[keys[idx]] = value; + }); info.push(mapOut); } @@ -98,4 +98,5 @@ var lxc = { }); } }; + module.exports = lxc; From fe838a7719b1d9a64c12393ff19afb8b2f19ee67 Mon Sep 17 00:00:00 2001 From: william Date: Sat, 30 Jan 2016 00:26:17 -0500 Subject: [PATCH 02/11] testing --- lxc.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lxc.js b/lxc.js index 6dd871e..638d3a1 100644 --- a/lxc.js +++ b/lxc.js @@ -1,11 +1,16 @@ 'use strict'; var exec = require('child_process').exec; +var callback_parse = callbackParse(err, data, stderr, callback){ + console.log(arguments) + return callback(data, err, stderr) +}; + function sysExec(command, callback){ command = 'unset XDG_SESSION_ID XDG_RUNTIME_DIR; cgm movepid all virt $$; ' + command; callback = callback || function(){}; - return exec(command, callback); + return exec(command, callback_parse(callback)); }; var lxc = { @@ -31,7 +36,7 @@ var lxc = { startEphemeral: function(name, base_name, callback){ var command = 'lxc-start-ephemeral -o '+base_name+ ' -n '+name +' --union-type overlayfs -d'; callback = callback || function(){}; - + return sysExec(command, function(data){ if(data.match("doesn't exist.")){ return callback({status: 500, error: "doesn't exist."}); From 1678cebe474bf65e5ab5ab7cb235acb97c94a8bb Mon Sep 17 00:00:00 2001 From: william Date: Sat, 30 Jan 2016 00:26:39 -0500 Subject: [PATCH 03/11] testing --- lxc.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lxc.js b/lxc.js index 638d3a1..0f8a9d3 100644 --- a/lxc.js +++ b/lxc.js @@ -1,7 +1,7 @@ 'use strict'; var exec = require('child_process').exec; -var callback_parse = callbackParse(err, data, stderr, callback){ +var callback_parse = function(err, data, stderr, callback){ console.log(arguments) return callback(data, err, stderr) }; From a756a79513d942988923e0450fc178d6cdca4d22 Mon Sep 17 00:00:00 2001 From: william Date: Sat, 30 Jan 2016 00:28:56 -0500 Subject: [PATCH 04/11] testing --- lxc.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lxc.js b/lxc.js index 0f8a9d3..c61dd8c 100644 --- a/lxc.js +++ b/lxc.js @@ -3,7 +3,7 @@ var exec = require('child_process').exec; var callback_parse = function(err, data, stderr, callback){ console.log(arguments) - return callback(data, err, stderr) + callback(data, err, stderr) }; function sysExec(command, callback){ From 6b955f488565a6452e35de5e68aa6c89dfa57c28 Mon Sep 17 00:00:00 2001 From: william Date: Sat, 30 Jan 2016 00:38:25 -0500 Subject: [PATCH 05/11] testing --- routes/api.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/routes/api.js b/routes/api.js index 45ceac9..0f97cf5 100644 --- a/routes/api.js +++ b/routes/api.js @@ -8,9 +8,10 @@ var client = redis.createClient(); var lxc = require('../lxc'); router.get('/start/:name', function(req, res, next){ - lxc.start(req.params.name, function(status, message){ + lxc.start(req.params.name, function(data){ + console.log('start': data); if(status){ - res.json({status: 500, name: req.params.name, message: message}); + res.json({status: 500, name: req.params.name, message: data}); }else{ setTimeout(function() { lxc.info(req.params.name, null, function(data){ @@ -32,12 +33,14 @@ router.get('/start/:name', function(req, res, next){ router.get('/live/:template/:name', function(req, res, next){ lxc.startEphemeral(req.params.name, req.params.template, function (data) { + console.log('live': data); res.json(data); }); }); router.get('/stop/:name', function(req, res, next){ lxc.stop(req.params.name, function(data){ + console.log('stop': data); if(data){ res.json({status: 500, name: req.params.name, message: data}); }else{ @@ -48,6 +51,7 @@ router.get('/stop/:name', function(req, res, next){ router.get('/clone/:template/:name', function(req, res, next){ lxc.clone(req.params.name, req.params.template, function(data){ + console.log('clone': data); if( data.match(/Created container/) ){ res.json({status: 200}); }else{ @@ -58,6 +62,7 @@ router.get('/clone/:template/:name', function(req, res, next){ router.get('/destroy/:name', function(req, res, next){ lxc.destroy(req.params.name, function(data){ + console.log('destroy': data); if(data){ res.json({status: 500, message: data}); }else{ @@ -68,12 +73,14 @@ router.get('/destroy/:name', function(req, res, next){ router.get('/info/:name', function(req, res, next){ lxc.info(req.params.name, function(data){ + console.log('info': data); res.json(data); }); }); router.get('/list', function(req, res, next) { lxc.list(function(data){ + console.log('list': data); res.json(data); }); }); From 471a64610a90b4e9a7a85962f0664e8c17cd757b Mon Sep 17 00:00:00 2001 From: william Date: Sat, 30 Jan 2016 00:39:00 -0500 Subject: [PATCH 06/11] testing --- routes/api.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/routes/api.js b/routes/api.js index 0f97cf5..30cbd10 100644 --- a/routes/api.js +++ b/routes/api.js @@ -9,7 +9,7 @@ var lxc = require('../lxc'); router.get('/start/:name', function(req, res, next){ lxc.start(req.params.name, function(data){ - console.log('start': data); + console.log('start', data); if(status){ res.json({status: 500, name: req.params.name, message: data}); }else{ @@ -33,14 +33,14 @@ router.get('/start/:name', function(req, res, next){ router.get('/live/:template/:name', function(req, res, next){ lxc.startEphemeral(req.params.name, req.params.template, function (data) { - console.log('live': data); + console.log('live', data); res.json(data); }); }); router.get('/stop/:name', function(req, res, next){ lxc.stop(req.params.name, function(data){ - console.log('stop': data); + console.log('stop', data); if(data){ res.json({status: 500, name: req.params.name, message: data}); }else{ @@ -51,7 +51,7 @@ router.get('/stop/:name', function(req, res, next){ router.get('/clone/:template/:name', function(req, res, next){ lxc.clone(req.params.name, req.params.template, function(data){ - console.log('clone': data); + console.log('clone', data); if( data.match(/Created container/) ){ res.json({status: 200}); }else{ @@ -62,7 +62,7 @@ router.get('/clone/:template/:name', function(req, res, next){ router.get('/destroy/:name', function(req, res, next){ lxc.destroy(req.params.name, function(data){ - console.log('destroy': data); + console.log('destroy', data); if(data){ res.json({status: 500, message: data}); }else{ @@ -73,14 +73,14 @@ router.get('/destroy/:name', function(req, res, next){ router.get('/info/:name', function(req, res, next){ lxc.info(req.params.name, function(data){ - console.log('info': data); + console.log('info', data); res.json(data); }); }); router.get('/list', function(req, res, next) { lxc.list(function(data){ - console.log('list': data); + console.log('list', data); res.json(data); }); }); From 08bddea17c0f85a798d6a2b4f352cc85312bb559 Mon Sep 17 00:00:00 2001 From: william Date: Sat, 30 Jan 2016 00:39:40 -0500 Subject: [PATCH 07/11] testing --- lxc.js | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/lxc.js b/lxc.js index c61dd8c..1dafc90 100644 --- a/lxc.js +++ b/lxc.js @@ -1,16 +1,16 @@ 'use strict'; var exec = require('child_process').exec; -var callback_parse = function(err, data, stderr, callback){ - console.log(arguments) - callback(data, err, stderr) -}; - function sysExec(command, callback){ command = 'unset XDG_SESSION_ID XDG_RUNTIME_DIR; cgm movepid all virt $$; ' + command; - callback = callback || function(){}; - return exec(command, callback_parse(callback)); + return exec(command, (function(){ + return function(err,data,stderr){ + if(!callback) return; + err = err || stderr || null; + callback(data, err, stderr); + } + })(callback)); }; var lxc = { @@ -35,8 +35,6 @@ var lxc = { startEphemeral: function(name, base_name, callback){ var command = 'lxc-start-ephemeral -o '+base_name+ ' -n '+name +' --union-type overlayfs -d'; - callback = callback || function(){}; - return sysExec(command, function(data){ if(data.match("doesn't exist.")){ return callback({status: 500, error: "doesn't exist."}); From 5e1561ef8a3502a62cc7636fb77dfc3969645bb3 Mon Sep 17 00:00:00 2001 From: william Date: Sat, 30 Jan 2016 01:16:52 -0500 Subject: [PATCH 08/11] testing --- routes/api.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/routes/api.js b/routes/api.js index 30cbd10..43665fb 100644 --- a/routes/api.js +++ b/routes/api.js @@ -9,7 +9,7 @@ var lxc = require('../lxc'); router.get('/start/:name', function(req, res, next){ lxc.start(req.params.name, function(data){ - console.log('start', data); + console.log('start', arguments); if(status){ res.json({status: 500, name: req.params.name, message: data}); }else{ @@ -33,14 +33,14 @@ router.get('/start/:name', function(req, res, next){ router.get('/live/:template/:name', function(req, res, next){ lxc.startEphemeral(req.params.name, req.params.template, function (data) { - console.log('live', data); + console.log('live', arguments); res.json(data); }); }); router.get('/stop/:name', function(req, res, next){ lxc.stop(req.params.name, function(data){ - console.log('stop', data); + console.log('stop', arguments); if(data){ res.json({status: 500, name: req.params.name, message: data}); }else{ @@ -51,7 +51,7 @@ router.get('/stop/:name', function(req, res, next){ router.get('/clone/:template/:name', function(req, res, next){ lxc.clone(req.params.name, req.params.template, function(data){ - console.log('clone', data); + console.log('clone', arguments); if( data.match(/Created container/) ){ res.json({status: 200}); }else{ @@ -62,7 +62,7 @@ router.get('/clone/:template/:name', function(req, res, next){ router.get('/destroy/:name', function(req, res, next){ lxc.destroy(req.params.name, function(data){ - console.log('destroy', data); + console.log('destroy', arguments); if(data){ res.json({status: 500, message: data}); }else{ @@ -73,14 +73,14 @@ router.get('/destroy/:name', function(req, res, next){ router.get('/info/:name', function(req, res, next){ lxc.info(req.params.name, function(data){ - console.log('info', data); + console.log('info', arguments); res.json(data); }); }); router.get('/list', function(req, res, next) { lxc.list(function(data){ - console.log('list', data); + console.log('list', arguments); res.json(data); }); }); From 81379ca0697d61554c08fc5604c114cffaf4525e Mon Sep 17 00:00:00 2001 From: william Date: Sat, 30 Jan 2016 01:19:28 -0500 Subject: [PATCH 09/11] testing --- routes/api.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routes/api.js b/routes/api.js index 43665fb..b95d434 100644 --- a/routes/api.js +++ b/routes/api.js @@ -10,7 +10,7 @@ var lxc = require('../lxc'); router.get('/start/:name', function(req, res, next){ lxc.start(req.params.name, function(data){ console.log('start', arguments); - if(status){ + if(!data){ res.json({status: 500, name: req.params.name, message: data}); }else{ setTimeout(function() { From bbc2150aef8bd3a93fbbe0781a6318dc5fb310a4 Mon Sep 17 00:00:00 2001 From: william Date: Sat, 30 Jan 2016 01:24:58 -0500 Subject: [PATCH 10/11] testing --- lxc.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lxc.js b/lxc.js index 1dafc90..cc1e8a4 100644 --- a/lxc.js +++ b/lxc.js @@ -7,7 +7,6 @@ function sysExec(command, callback){ return exec(command, (function(){ return function(err,data,stderr){ if(!callback) return; - err = err || stderr || null; callback(data, err, stderr); } })(callback)); @@ -97,7 +96,7 @@ var lxc = { info.push(mapOut); } - callback(info); + callback.apply(info); }); } }; From 5854426e7efaae0818a6b1a74e35f1f8423097ba Mon Sep 17 00:00:00 2001 From: william Date: Sat, 30 Jan 2016 01:27:11 -0500 Subject: [PATCH 11/11] testing --- lxc.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lxc.js b/lxc.js index cc1e8a4..728e17a 100644 --- a/lxc.js +++ b/lxc.js @@ -96,7 +96,7 @@ var lxc = { info.push(mapOut); } - callback.apply(info); + callback(info); }); } };