reformated LXC
This commit is contained in:
parent
dcf7faad33
commit
2585509f6d
79
lxc.js
79
lxc.js
@ -1,62 +1,66 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
var cmd = require('node-cmd');
|
||||||
|
|
||||||
module.exports = function(config){
|
var sysExec = function(command, callback){
|
||||||
var obj = {};
|
|
||||||
var cmd = require('node-cmd');
|
|
||||||
|
|
||||||
var sysExec = function(command, callback){
|
|
||||||
// console.log('sysExec: ', command, '||| callback:', callback)
|
// console.log('sysExec: ', command, '||| callback:', callback)
|
||||||
cmd.get('unset XDG_SESSION_ID XDG_RUNTIME_DIR; cgm movepid all virt $$; '+command, callback)
|
cmd.get('unset XDG_SESSION_ID XDG_RUNTIME_DIR; cgm movepid all virt $$; '+command, callback);
|
||||||
}
|
};
|
||||||
|
|
||||||
obj.create = function(name, template, config, cbComplete){
|
var lxc = {
|
||||||
|
create: function(name, template, config, cbComplete){
|
||||||
sysExec('lxc-create -n '+name+' -t '+template, cbComplete);
|
sysExec('lxc-create -n '+name+' -t '+template, cbComplete);
|
||||||
};
|
},
|
||||||
|
|
||||||
obj.clone = function(name, base_name, callback){
|
clone: function(name, base_name, callback){
|
||||||
sysExec('lxc-clone -o '+base_name+ ' -n '+name +' -B overlayfs -s', callback);
|
sysExec('lxc-clone -o '+base_name+ ' -n '+name +' -B overlayfs -s', callback);
|
||||||
};
|
},
|
||||||
|
|
||||||
obj.destroy = function(name, callback){
|
destroy: function(name, callback){
|
||||||
sysExec('lxc-destroy -n '+ name, function(data){
|
sysExec('lxc-destroy -n '+ name, function(data){
|
||||||
callback(!data.match(/Destroyed container/))
|
callback(!data.match(/Destroyed container/));
|
||||||
});
|
});
|
||||||
};
|
},
|
||||||
|
|
||||||
obj.start = function(name, callback){
|
start: function(name, callback){
|
||||||
var cmd = 'lxc-start --name '+name+' --daemon';
|
var cmd = 'lxc-start --name '+name+' --daemon';
|
||||||
console.log('start cmd\n', cmd, '\n');
|
|
||||||
sysExec(cmd, callback);
|
sysExec(cmd, callback);
|
||||||
};
|
},
|
||||||
|
|
||||||
obj.startEphemeral = function(name, base_name, callback){
|
startEphemeral: function(name, base_name, callback){
|
||||||
var output = '';
|
var output = '';
|
||||||
sysExec('lxc-start-ephemeral -o '+base_name+ ' -n '+name +' --union-type overlayfs -d', function(data){
|
sysExec('lxc-start-ephemeral -o '+base_name+ ' -n '+name +' --union-type overlayfs -d', function(data){
|
||||||
if(data.match("doesn't exist.")) return callback({status: 500, error: "doesn't exist."});
|
if(data.match("doesn't exist.")){
|
||||||
if(data.match("already exists.")) return callback({status: 500, error: "already exists"});
|
return callback({status: 500, error: "doesn't exist."});
|
||||||
if(data.match(/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/)) return callback({status: 200, state:'RUNNING', ip: data.match(/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/)[0]});
|
}
|
||||||
|
if(data.match("already exists.")){
|
||||||
|
return callback({status: 500, error: "already exists"});
|
||||||
|
}
|
||||||
|
if(data.match(/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/)){
|
||||||
|
return callback({status: 200, state:'RUNNING', ip: data.match(/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/)[0]});
|
||||||
|
}
|
||||||
|
|
||||||
callback({'?': '?', data: data, name: name, base_name: base_name});
|
callback({'?': '?', data: data, name: name, base_name: base_name});
|
||||||
});
|
});
|
||||||
};
|
},
|
||||||
|
|
||||||
obj.stop = function(name, callback){
|
stop: function(name, callback){
|
||||||
console.log('stop', name);
|
|
||||||
sysExec('lxc-stop -n '+ name, callback);
|
sysExec('lxc-stop -n '+ name, callback);
|
||||||
};
|
},
|
||||||
|
|
||||||
obj.freeze = function(name, callback){
|
freeze: function(name, callback){
|
||||||
sysExec('lxc-freeze -n '+name, callback);
|
sysExec('lxc-freeze -n '+name, callback);
|
||||||
};
|
},
|
||||||
|
|
||||||
obj.unfreeze = function(name, callback){
|
unfreeze: function(name, callback){
|
||||||
sysExec('lxc-unfreeze -n '+name, callback);
|
sysExec('lxc-unfreeze -n '+name, callback);
|
||||||
};
|
},
|
||||||
|
|
||||||
obj.info = function(name, callback){
|
info: function(name, callback){
|
||||||
var output = '';
|
|
||||||
sysExec('lxc-info -n '+name, function(data){
|
sysExec('lxc-info -n '+name, function(data){
|
||||||
console.log('info', name, data)
|
if(data.match("doesn't exist")){
|
||||||
if(data.match("doesn't exist")) return callback({state: 'NULL'});
|
return callback({state: 'NULL'});
|
||||||
|
}
|
||||||
|
|
||||||
var info = {};
|
var info = {};
|
||||||
data = data.replace(/\suse/ig, '').replace(/\sbytes/ig, '').split("\n").slice(0,-1);
|
data = data.replace(/\suse/ig, '').replace(/\sbytes/ig, '').split("\n").slice(0,-1);
|
||||||
for(var i in data){
|
for(var i in data){
|
||||||
@ -65,9 +69,9 @@ module.exports = function(config){
|
|||||||
}
|
}
|
||||||
callback(info);
|
callback(info);
|
||||||
});
|
});
|
||||||
};
|
},
|
||||||
|
|
||||||
obj.list = function(callback){
|
list: function(callback){
|
||||||
sysExec('lxc-ls --fancy', function(data){
|
sysExec('lxc-ls --fancy', function(data){
|
||||||
var output = data.split("\n");
|
var output = data.split("\n");
|
||||||
var keys = output.splice(0,1)[0].split(/\s+/).slice(0,-1);
|
var keys = output.splice(0,1)[0].split(/\s+/).slice(0,-1);
|
||||||
@ -87,7 +91,6 @@ module.exports = function(config){
|
|||||||
}
|
}
|
||||||
callback(info);
|
callback(info);
|
||||||
});
|
});
|
||||||
};
|
}
|
||||||
|
|
||||||
return obj;
|
|
||||||
};
|
};
|
||||||
|
module.exports = lxc;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user