UNPKG

jchaos

Version:

module to access chaos resources

313 lines (238 loc) 8.24 kB
#!/usr/bin/env node const { MongoClient } = require('mongodb'); const fs = require('fs'); 'use strict'; function checker(value, vect) { for (var i = 0; i < vect.length; i++) { if (value == vect[i]) { return true; } } return false; } var server="localhost:27017"; function Usage() { var pjson = require('../package.json'); console.log("Version:" + pjson.version); console.log("Usage:\n" + process.argv[1] + "\n[ --server server[:port] ("+server+")]\n" + "[--count_nodes] retrieves number of chaos nodes\n" + "[--dump <collection name>] dump collection\n" + "[--dumpall] dump all collections\n" + "[--remove_node <node name>] remove node name\n" + "[--clean_logs <all|log|error|alarm|tag|..>] logs\n" + "[--clean_daq] remove all daq\n" + "[--list_node] list chaos nodes\n" + "[--list_collections] list all collections\n" + "[--help]\n" ); } const args = require('minimist')(process.argv.slice(2)) if (args.hasOwnProperty("help")) { Usage(); process.exit(0); } var cnode = { uid: "", desc: {} }; if ((typeof args['server'] !== "undefined")&&typeof args['server'] === "string") { server=args['server']; } console.log("* using mongo:"+server); if (args.count_nodes !== undefined) { const uri = "mongodb://" + server; const client = new MongoClient(uri,{ useUnifiedTopology: true }); client.connect((err, cli) => { if (err) { console.error("Error connecting:" + err.message); process.exit(-1); } else { cli.db("chaos").collection("mds_nodes").countDocuments((err, num) => { if (err) { console.error("Error getting mds_nodes:" + err.message); process.exit(-1); } else { console.log(num); process.exit(0); } }); } }); return 0; } if (args['list_collections'] !== undefined) { const uri = "mongodb://" + server; const client = new MongoClient(uri,{ useUnifiedTopology: true }); client.connect((err, cli) => { if (err) { console.error("Error connecting:" + err.message); process.exit(-1); } else { cli.db("chaos").listCollections().toArray((err, doc) => { if (err) { console.error("Error getting "+args['dump']+" :" + err.message); process.exit(-1); } else { console.log(JSON.stringify(doc)); var names=[]; doc.forEach(ele=>{ names.push(ele.name); }); console.log(JSON.stringify(names)); process.exit(0); } }); } }); return 0; } if (args['list_node'] !== undefined) { const uri = "mongodb://" + server; const client = new MongoClient(uri,{ useUnifiedTopology: true }); client.connect((err, cli) => { if (err) { console.error("Error connecting:" + err.message); process.exit(-1); } else { cli.db("chaos").collection('mds_nodes').find({}, { projection: { ndk_uid: 1} }).toArray((err, doc) => { if (err) { console.error("Error getting "+args['dump']+" :" + err.message); process.exit(-1); } else { console.log(JSON.stringify(doc)); process.exit(0); } }); } }); return 0; } if ((args['clean_logs'] !== undefined)&&(typeof args['clean_logs'] === "string")) { const uri = "mongodb://" + server; const client = new MongoClient(uri,{ useUnifiedTopology: true }); client.connect((err, cli) => { if (err) { console.error("Error connecting:" + err.message); process.exit(-1); } else { var filter={"mdsndk_nl_ld":"alarm"}; if(args['clean_logs']=="all"){ filter={}; } else { filter={"mdsndk_nl_ld":args['clean_logs']}; } console.log("Cleaning logs of type :" + args['clean_logs']); cli.db("chaos").collection('mds_logging').deleteMany(filter, (err, doc) => { if (err) { console.error("Error deleting logs :" + err.message); process.exit(-1); } else { console.log(JSON.stringify(doc)); process.exit(0); } }); } }); return 0; } if (args['clean_daq'] !== undefined) { const uri = "mongodb://" + server; const client = new MongoClient(uri,{ useUnifiedTopology: true }); client.connect((err, cli) => { if (err) { console.error("Error connecting:" + err.message); process.exit(-1); } else { cli.db("chaos").collection('daq').deleteMany({}, (err, doc) => { if (err) { console.error("Error deleting logs :" + err.message); process.exit(-1); } else { console.log(JSON.stringify(doc)); process.exit(0); } }); } }); return 0; } if (typeof args['remove_node'] === "string") { const uri = "mongodb://" + server; const client = new MongoClient(uri,{ useUnifiedTopology: true }); client.connect((err, cli) => { if (err) { console.error("Error connecting:" + err.message); process.exit(-1); } else { cli.db("chaos").collection('mds_nodes').deleteOne({'ndk_uid':args['remove_node']},(err, doc) => { if (err) { console.error("Error removing "+args['remove_node']+" :" + err.message); process.exit(-1); } else { console.log("removed:"+args['remove_node']); process.exit(0); } }); } }); return 0; } if (typeof args['dump'] === "string") { const uri = "mongodb://" + server; const client = new MongoClient(uri,{ useUnifiedTopology: true }); client.connect((err, cli) => { if (err) { console.error("Error connecting:" + err.message); process.exit(-1); } else { cli.db("chaos").collection(args['dump']).find().toArray((err, doc) => { if (err) { console.error("Error getting "+args['dump']+" :" + err.message); process.exit(-1); } else { console.log(JSON.stringify(doc)); process.exit(0); } }); } }); return 0; } if (args['dumpall'] !== undefined) { const uri = "mongodb://" + server; const client = new MongoClient(uri,{ useUnifiedTopology: true }); client.connect((err, cli) => { if (err) { console.error("Error connecting:" + err.message); process.exit(-1); } else { cli.db("chaos").listCollections().toArray((err, doc) => { if (err) { console.error("Error getting "+args['dump']+" :" + err.message); process.exit(-1); } else { doc.forEach(ele=>{ cli.db("chaos").collection(ele.name).find().toArray((err, d) => { if (err) { console.error("Error getting "+ele.name+" :" + err.message); process.exit(-1); } else { console.log("dumping collection:"+ele.name+ " on:"+ele.name+".json"); fs.writeFile(ele.name+".json", JSON.stringify(d), function (err) { if (err) throw err; console.log("Generating "+ele.name+".json"); }); //console.log(JSON.stringify(doc)); } }); }); process.exit(0); } }); } }); return 0; } console.error("Uknown option:") Usage(); process.exit(-1);