occaecatidicta
Version:
60 lines (57 loc) • 2.42 kB
text/typescript
import * as program from 'commander';
import { DEFAULT_USERNAME, DEFAULT_PWD, DEFAULT_MASTER_HOST, DEFAULT_MASTER_PORT } from '../utils/constants';
import { connectToMaster } from '../utils/utils';
import {AdminClient} from 'omelox-admin';
import * as cliff from 'cliff';
import { ConsoleModule as co } from '../../lib/modules/console';
export default function (program: program.CommanderStatic) {
program.command('list')
.description('list the servers')
.option('-u, --username <username>', 'administration user name', DEFAULT_USERNAME)
.option('-p, --password <password>', 'administration password', DEFAULT_PWD)
.option('-h, --host <master-host>', 'master server host', DEFAULT_MASTER_HOST)
.option('-P, --port <master-port>', 'master server port', DEFAULT_MASTER_PORT)
.action(function (opts) {
list(opts);
});
}
/**
* List omelox processes.
*
* @param {Object} opts options for `list` operation
*/
function list(opts: any) {
let id = 'pinus_list_' + Date.now();
connectToMaster(id, opts, function (client: AdminClient) {
client.request(co.moduleId, { signal: 'list' }, function (err: Error, data: any) {
if (err) {
console.error(err);
}
let servers: any[] = [];
for (let key in data.msg) {
servers.push(data.msg[key]);
}
let comparer = function (a: any, b: any) {
if (a.serverType < b.serverType) {
return -1;
} else if (a.serverType > b.serverType) {
return 1;
} else if (a.serverId < b.serverId) {
return -1;
} else if (a.serverId > b.serverId) {
return 1;
} else {
return 0;
}
};
servers.sort(comparer);
let rows: string[][] = [];
rows.push(['serverId', 'serverType', 'pid', 'rss(M)', 'heapTotal(M)', 'heapUsed(M)', 'uptime(m)']);
servers.forEach(function (server) {
rows.push([server.serverId, server.serverType, server.pid, server.rss, server.heapTotal, server.heapUsed, server.uptime]);
});
console.log(cliff.stringifyRows(rows, ['red', 'blue', 'green', 'cyan', 'magenta', 'white', 'yellow']));
process.exit(0);
});
});
}