diff options
Diffstat (limited to 'admportal/server/router/routes/sla.js')
-rw-r--r-- | admportal/server/router/routes/sla.js | 369 |
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; |