aboutsummaryrefslogtreecommitdiffstats
path: root/admportal/server/router/routes/sla.js
diff options
context:
space:
mode:
Diffstat (limited to 'admportal/server/router/routes/sla.js')
-rw-r--r--admportal/server/router/routes/sla.js369
1 files changed, 369 insertions, 0 deletions
diff --git a/admportal/server/router/routes/sla.js b/admportal/server/router/routes/sla.js
new file mode 100644
index 00000000..92fa846b
--- /dev/null
+++ b/admportal/server/router/routes/sla.js
@@ -0,0 +1,369 @@
+var express = require('express');
+var router = express.Router();
+var exec = require('child_process').exec;
+//var util = require('util');
+var fs = require('fs');
+var dbRoutes = require('./dbRoutes');
+var csp = require('./csp');
+var multer = require('multer');
+var bodyParser = require('body-parser');
+//var sax = require('sax'),strict=true,parser = sax.parser(strict);
+var async = require('async');
+
+
+// SVC_LOGIC table columns
+var _module=''; // cannot use module its a reserved word
+var version='';
+var rpc='';
+var mode='';
+var xmlfile='';
+
+
+// used for file upload button, retain original file name
+//router.use(bodyParser());
+router.use(bodyParser.urlencoded({
+ extended: true
+}));
+//var upload = multer({ dest: process.cwd() + '/uploads/', rename: function(fieldname,filename){ return filename; } });
+
+// multer 1.1
+var storage = multer.diskStorage({
+ destination: function (req, file, cb) {
+ cb(null, process.cwd() + '/uploads/')
+ },
+ filename: function (req, file, cb) {
+ cb(null, file.originalname )
+ }
+});
+
+var upload = multer({
+ storage: storage
+});
+
+
+/*
+router.use(multer({
+ dest: process.cwd() + '/uploads/',
+ rename: function(fieldname,filename){
+ return filename;
+ }
+}));
+*/
+
+
+//router.use(express.json());
+//router.use(express.urlencoded());
+//router.use(multer({ dest: './uploads/' }));
+
+
+// GET
+router.get('/listSLA', csp.checkAuth, dbRoutes.checkDB, function(req,res) {
+ dbRoutes.listSLA(req,res,{code:'', msg:''} );
+});
+
+router.get('/activate', csp.checkAuth, dbRoutes.checkDB, function(req,res){
+
+ var _module = req.query.module;
+ var rpc = req.query.rpc;
+ var version = req.query.version;
+ var mode = req.query.mode;
+
+ var tasks = [];
+ tasks.push( function(callback) { dbRoutes.global_deactivate(req,res,_module,rpc,mode,callback); } );
+ tasks.push( function(callback) { dbRoutes.activate(req,res,_module,rpc,version,mode,callback); } );
+ async.series(tasks, function(err,result){
+
+ if ( err ) {
+ dbRoutes.listSLA(req,res,{code:'failure', msg:'Failed to activate, '+ String(err) });
+ }
+ else {
+ dbRoutes.listSLA(req,res,{ code:'success', msg:'Successfully activated directed graph.'});
+ }
+ });
+});
+
+router.get('/deactivate', csp.checkAuth, dbRoutes.checkDB, function(req,res){
+
+ var _module = req.query.module;
+ var rpc = req.query.rpc;
+ var version = req.query.version;
+ var mode = req.query.mode;
+
+ var tasks = [];
+ tasks.push( function(callback) { dbRoutes.deactivate(req,res,_module,rpc,version,mode,callback); } );
+ async.series(tasks, function(err,result){
+
+ if ( err ) {
+ dbRoutes.listSLA(req,res,{code:'failure', msg:'There was an error uploading the file. '+ err });
+ }
+ else {
+ dbRoutes.listSLA(req,res,{ code:'success', msg:'Successfully deactivated directed graph.'});
+ }
+ });
+});
+
+router.get('/deleteDG', csp.checkAuth, dbRoutes.checkDB, function(req,res){
+
+ var _module = req.query.module;
+ var rpc = req.query.rpc;
+ var version = req.query.version;
+ var mode = req.query.mode;
+
+ var tasks = [];
+ tasks.push( function(callback) { dbRoutes.deleteDG(req,res,_module,rpc,version,mode,callback); } );
+ async.series(tasks, function(err,result){
+
+ if ( err ) {
+ dbRoutes.listSLA(req,res,{ code:'failure', msg:'There was an error uploading the file. '+ err });
+ }
+ else {
+ dbRoutes.listSLA(req,res,{ code:'success', msg:'Successfully deleted directed graph.'});
+ }
+ });
+});
+
+router.post('/dgUpload', dbRoutes.checkDB, upload.single('filename'), function(req, res, next){
+
+ if(req.file.originalname){
+ if (req.file.originalname == 0) {
+
+ dbRoutes.listSLA(req,res,{ code:'danger', msg:'There was an error uploading the file, please try again.'});
+ }
+ fs.exists(req.file.path, function(exists) {
+ if(exists) {
+
+ // parse xml
+ try {
+ //dbRoutes.checkSvcLogic(req,res);
+
+ var file_buf = fs.readFileSync(req.file.path, "utf8");
+
+ // call Dan's svclogic shell script from here
+ var currentDB = dbRoutes.getCurrentDB();
+ var commandToExec = process.cwd()
+ + "/shell/svclogic.sh load "
+ + req.file.path + " "
+ + process.env.SDNC_CONFIG_DIR + "/svclogic.properties." + currentDB;
+
+ console.log("commandToExec:" + commandToExec);
+ child = exec(commandToExec ,function (error,stdout,stderr){
+ if(error){
+ console.error("error:" + error);
+ //res.type('text/html').status(400).send( error);
+ //return;
+ }
+ if(stderr){
+ res.status(400).send(stderr);
+ return;
+ }
+ if(stdout){
+ res.status(200).send( new Buffer('Success'));
+ return;
+ }
+
+ // remove the grave accents, the sax parser does not like them
+ //parser.write(file_buf.replace(/\`/g,'').toString('utf8')).close();
+ //dbRoutes.addDG(_module,version,rpc,mode,file_buf,req,res);
+ //dbRoutes.listSLA(req,res, resultObj);
+ });
+ } catch(ex) {
+ // keep 'em silent
+ console.error('sax error:'+ex);
+ res.status(400).send(ex);
+ return;
+ }
+
+ } else {
+ res.status(400).send(new Buffer('Cannot find file.'));
+ return;
+
+ }
+ });
+ }
+ else {
+ res.status(400).send(new Buffer('file does not exist\n'));
+ }
+ return;
+});
+
+
+// POST
+router.post('/upload', csp.checkAuth, dbRoutes.checkDB, upload.single('filename'), function(req, res, next){
+
+console.log('file:'+ JSON.stringify(req.file));
+
+ if(req.file.originalname){
+ if (req.file.originalname.size == 0) {
+ dbRoutes.listSLA(req,res,{ code:'danger', msg:'There was an error uploading the file, please try again.'});
+ }
+ fs.exists(req.file.path, function(exists) {
+ if(exists) {
+
+ // parse xml
+ try {
+ //dbRoutes.checkSvcLogic(req,res);
+
+ var currentDB = dbRoutes.getCurrentDB();
+ var file_buf = fs.readFileSync(req.file.path, "utf8");
+
+ // call Dan's svclogic shell script from here
+ var commandToExec = process.cwd()
+ + "/shell/svclogic.sh load "
+ + req.file.path + " "
+ + process.env.SDNC_CONFIG_DIR + "/svclogic.properties." + currentDB;
+
+ console.log("commandToExec:" + commandToExec);
+ child = exec(commandToExec ,function (error,stdout,stderr){
+ if(error){
+ console.error("error:" + error);
+ dbRoutes.listSLA(req,res,{code:'failure',msg:error} );
+ return;
+ }
+ if(stderr){
+ console.error("stderr:" + JSON.stringify(stderr,null,2));
+ var s_stderr = JSON.stringify(stderr);
+ if ( s_stderr.indexOf("Saving") > -1 )
+ {
+ dbRoutes.listSLA(req,res,{code:'success', msg:'File sucessfully uploaded.'});
+ }else {
+ dbRoutes.listSLA(req,res,{code:'failure', msg:stderr});
+ }
+ return;
+ }
+ if(stdout){
+ console.log("stderr:" + stdout);
+ dbRoutes.listSLA(req,res,{code:'success', msg:'File sucessfully uploaded.'});
+ return;
+ }
+
+ // remove the grave accents, the sax parser does not like them
+ //parser.write(file_buf.replace(/\`/g,'').toString('utf8')).close();
+ //dbRoutes.addDG(_module,version,rpc,mode,file_buf,req,res);
+ //dbRoutes.listSLA(req,res, resultObj);
+ });
+ } catch(ex) {
+ // keep 'em silent
+ console.error("error:" + ex);
+ dbRoutes.listSLA(req,res,{code:'failure',msg:ex} );
+ }
+
+ } else {
+ dbRoutes.listSLA(req,res,{ code:'danger', msg:'There was an error uploading the file, please try again.'});
+ }
+ });
+ }
+ else {
+ dbRoutes.listSLA(req,res,{ code:'danger', msg:'There was an error uploading the file, please try again.'});
+ }
+});
+
+router.get('/printAsXml', csp.checkAuth, dbRoutes.checkDB, function(req,res){
+
+ try {
+ //dbRoutes.checkSvcLogic(req,res);
+
+ var _module = req.query.module;
+ var rpc = req.query.rpc;
+ var version = req.query.version;
+ var mode = req.query.mode;
+ var currentDB = dbRoutes.getCurrentDB();
+
+ // call Dan's svclogic shell script from here
+ var commandToExec = process.cwd()
+ + "/shell/svclogic.sh get-source "
+ + _module + " "
+ + rpc + " "
+ + mode + " "
+ + version + " "
+ + process.env.SDNC_CONFIG_DIR + "/svclogic.properties." + currentDB;
+
+ console.log("commandToExec:" + commandToExec);
+
+ child = exec(commandToExec , {maxBuffer: 1024*5000}, function (error,stdout,stderr){
+ if(error){
+ console.error("error:" + error);
+ dbRoutes.listSLA(req,res,{code:'failure',msg:error} );
+ return;
+ }
+ //if(stderr){
+ //logger.info("stderr:" + stderr);
+ //}
+ if(stdout){
+ console.log("OUTPUT:" + stdout);
+ res.render('sla/printasxml', {result:{code:'success',
+ msg:'Module : ' + _module + '\n' +
+ 'RPC : ' + rpc + '\n' +
+ 'Mode : ' + mode + '\n' +
+ 'Version: ' + version + '\n\n' + stdout}, header:process.env.MAIN_MENU});
+ }
+
+ // remove the grave accents, the sax parser does not like them
+ //parser.write(file_buf.replace(/\`/g,'').toString('utf8')).close();
+ //dbRoutes.addDG(_module,version,rpc,mode,file_buf,req,res);
+ //dbRoutes.listSLA(req,res, resultObj);
+ });
+ } catch(ex) {
+ console.error("error:" + ex);
+ dbRoutes.listSLA(req,res,{code:'failure',msg:ex} );
+ }
+});
+
+
+router.get('/printAsGv', csp.checkAuth, dbRoutes.checkDB, function(req,res){
+
+ try {
+ //dbRoutes.checkSvcLogic(req,res);
+
+ var _module = req.query.module;
+ var rpc = req.query.rpc;
+ var version = req.query.version;
+ var mode = req.query.mode;
+ var currentDB = dbRoutes.getCurrentDB();
+console.log('currentDB='+currentDB);
+
+ // call Dan's svclogic shell script from here
+ var commandToExec = process.cwd()
+ + "/shell/svclogic.sh print "
+ + _module + " "
+ + rpc + " "
+ + mode + " "
+ + version + " "
+ + process.env.SDNC_CONFIG_DIR + "/svclogic.properties." + currentDB
+ + " | dot -Tpng";
+
+ console.log("commandToExec:" + commandToExec);
+
+ child = exec(commandToExec ,
+ {encoding:'base64',maxBuffer:5000*1024}, function (error,stdout,stderr){
+ if(error){
+ console.error("error:" + error);
+ dbRoutes.listSLA(req,res,{code:'failure',msg:error} );
+ return;
+ }
+ if(stderr){
+ console.error("stderr:" + stderr);
+ }
+ if(stdout){
+ //logger.info("OUTPUT:" + stdout);
+ //res.render('sla/printasgv', result = {code:'success',
+ //msg:new Buffer(stdout,'base64')} );
+ res.render('sla/printasgv', {result:{code:'success',
+ module: _module,
+ rpc: rpc,
+ version: version,
+ mode:mode,
+ msg:stdout}, header:process.env.MAIN_MENU});
+ }
+
+ // remove the grave accents, the sax parser does not like them
+ //parser.write(file_buf.replace(/\`/g,'').toString('utf8')).close();
+ //dbRoutes.addDG(_module,version,rpc,mode,file_buf,req,res);
+ //dbRoutes.listSLA(req,res, resultObj);
+ });
+ } catch(ex) {
+ console.error("error:" + ex);
+ dbRoutes.listSLA(req,res,{code:'failure',msg:ex} );
+ }
+
+});
+module.exports = router;