-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathCreate.js
More file actions
60 lines (55 loc) · 2.21 KB
/
Create.js
File metadata and controls
60 lines (55 loc) · 2.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
module.exports = function(RED) {
var child_process=require("child_process");
var StringDecoder = require('string_decoder').StringDecoder;
var decoder = new StringDecoder('utf8');
function CreateNode(config) {
RED.nodes.createNode(this,config);
var node = this;
this.on('input', function(msg) {
var container=msg.payload.Service.toLowerCase()+"_"+msg.payload.S_Tag+"_"+msg.payload.C_Tag;
var cmd;
var args,cmd,rm;
if(msg.payload.CmdLine!=null){
args=msg.payload.CmdLine.args;
cmd=msg.payload.CmdLine.cmd;
}
if(msg.payload.rm==true){
rm=" --rm ";
}else{
rm=" -d ";
}
if(msg.payload.Service.toLowerCase()=="vsg"){
cmd="docker run --net=none --privileged=true -d vsg";
}else{
var interfaces=msg.payload.Interfaces;
if(interfaces.indexOf("wan")>=0){
cmd="docker run"+rm+"--net=container:vsg_"+msg.payload.S_Tag+"_"+msg.payload.C_Tag+" "+ msg.payload.Service.toLowerCase()+ " "+cmd+" "+args;
}else{
cmd="docker run"+rm+"--net=none"+ msg.payload.Service.toLowerCase()+ " "+cmd+" "+args;
}
}
console.log(cmd);
child_process.exec(cmd,function(error,stdout,stderr){
var strOutcome=decoder.write(stdout);
console.log("error:"+error+" stdout:"+stdout+" stderr:"+stderr);
//need to rename container
if(error!=null){
msg.payload.container="Error";
msg.payload.error=stderr;
node.send(msg);
return;
}
cmd="docker rename " + strOutcome.trim()+ " "+container;
console.log(cmd);
child_process.exec(cmd,function(error,stdout,stderr){
console.log("stdout:"+stdout);
console.log(decoder.write(stdout));
msg.payload.result=container;
msg.payload.container="created";
node.send(msg);
});
});
});
}
RED.nodes.registerType("create",CreateNode);
}