Starting and stopping gns3server in local-server.js manager

This commit is contained in:
ziajka 2019-02-07 13:35:07 +01:00
parent 6c7196c0be
commit 06bda9fc79
2 changed files with 59 additions and 26 deletions

@ -1,39 +1,71 @@
const { spawn } = require('child_process');
const kill = require('tree-kill');
servers = [
{
name: 'my-local',
path: 'c:\\Program Files\\GNS3\\gns3server.EXE'
}
]
let runningServers = {};
function getServerArguments(server, overrides) {
let serverArguments = [];
return serverArguments;
}
async function stopAll() {
Object.keys(runningServers).forEach(async (serverName) => {
await stop(serverName);
});
}
async function stop(serverName) {
const runningServer = runningServers[serverName];
const pid = runningServer.process.pid;
console.log(`Stopping '${serverName}' with PID='${pid}'`);
kill(pid, (error) => {
if(error) {
console.error(`Error occured during stopping '${serverName}' with PID='${pid}'`);
}
else {
console.log(`Stopped '${serverName}' with PID='${pid}'`);
}
});
}
async function run(server, options) {
const logStdout = options.logStdout || false;
async function run(server) {
console.log(`Running '${server.path}'`);
const process = spawn(server.path);
let serverProcess = spawn(server.path, getServerArguments(server));
process.on('exit', () => {
console.log(`Process has exited`);
runningServers[server.name] = {
process: serverProcess
};
serverProcess.stdout.on('data', function(data) {
if(logStdout) {
console.log(data.toString());
}
});
process.on('close', (code) => {
console.log(`child process exited with code ${code}`);
});
process.stdout.on('data', (data) => {
console.log(`stdout: ${data}`);
});
process.stderr.on('data', (data) => {
console.log(`stderr: ${data}`);
});
}
async function main() {
await run(servers[0]);
await run({
name: 'my-local',
path: 'c:\\Program Files\\GNS3\\gns3server.EXE',
port: 3080
}, {
logStdout: true
});
}
if (require.main === module) {
process.on('SIGINT', function() {
console.log("Caught interrupt signal");
stopAll();
});
process.on('unhandledRejection', (reason, promise) => {
console.log(`UnhandledRejection occured 'reason'`);
process.exit(1);
});
main();
}

@ -61,14 +61,14 @@
"material-design-icons": "^3.0.1",
"ng2-file-upload": "^1.3.0",
"ngx-electron": "^2.0.0",
"node-fetch": "^2.3.0",
"notosans-fontface": "^1.1.0",
"raven-js": "^3.27.0",
"rxjs": "^6.3.3",
"rxjs-compat": "^6.3.3",
"typeface-roboto": "^0.0.54",
"yargs": "^12.0.5",
"zone.js": "^0.8.26",
"node-fetch": "^2.3.0"
"zone.js": "^0.8.26"
},
"devDependencies": {
"@angular-devkit/build-angular": "~0.11.4",
@ -97,6 +97,7 @@
"prettier": "^1.15.2",
"protractor": "~5.4.2",
"replace": "^1.0.1",
"tree-kill": "^1.2.1",
"ts-mockito": "^2.3.1",
"ts-node": "~7.0.1",
"tslint": "~5.12.0",