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

View File

@ -1,39 +1,71 @@
const { spawn } = require('child_process'); const { spawn } = require('child_process');
const kill = require('tree-kill');
servers = [ let runningServers = {};
{
name: 'my-local', function getServerArguments(server, overrides) {
path: 'c:\\Program Files\\GNS3\\gns3server.EXE' 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}'`); console.log(`Running '${server.path}'`);
const process = spawn(server.path);
process.on('exit', () => { let serverProcess = spawn(server.path, getServerArguments(server));
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() { 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) { 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(); main();
} }

View File

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