aboutsummaryrefslogtreecommitdiffstats
path: root/admportal/server/router/routes/dbRoutes.js
diff options
context:
space:
mode:
authorTimoney, Daniel (dt5972) <dtimoney@att.com>2017-02-15 10:37:53 -0500
committerTimoney, Daniel (dt5972) <dtimoney@att.com>2017-02-15 10:40:37 -0500
commit324ee36fe31763e507b422ab0a88e4230045e205 (patch)
treed0b04520f6657601c918ce63fd27575977624187 /admportal/server/router/routes/dbRoutes.js
parentf0c97e8db427481e28c0a16b789bc73801b35e47 (diff)
Initial commit for OpenECOMP SDN-C OA&M
Change-Id: I7ab579fd0d206bf356f36d52dcdf4f71f1fa2680 Signed-off-by: Timoney, Daniel (dt5972) <dtimoney@att.com> Former-commit-id: 2a9f0edd09581f907e62ec4689b5ac94dd5382ba
Diffstat (limited to 'admportal/server/router/routes/dbRoutes.js')
-rw-r--r--admportal/server/router/routes/dbRoutes.js1192
1 files changed, 1192 insertions, 0 deletions
diff --git a/admportal/server/router/routes/dbRoutes.js b/admportal/server/router/routes/dbRoutes.js
new file mode 100644
index 00000000..d2f40b52
--- /dev/null
+++ b/admportal/server/router/routes/dbRoutes.js
@@ -0,0 +1,1192 @@
+var express = require('express'),
+ app = express();
+var mysql = require('mysql');
+var properties = require(process.env.SDNC_CONFIG_DIR + '/admportal.json');
+var fs = require('fs.extra');
+var util = require('util');
+var os = require('os');
+var async = require('async');
+var l_ = require('lodash');
+var dns = require('dns');
+var dnsSync = require('dns-sync');
+
+var pool = '';
+var currentDB = '';
+var currentDbName = '';
+var fabricDB = properties.dbFabricServer;
+var dbArray = properties.databases;
+var enckey = properties.passwordKey;
+
+console.log('dbFabric=' + properties.dbFabric);
+
+if ( properties.dbFabric == 'true' )
+{
+ connectFabric();
+}
+else
+{
+ initDB();
+}
+
+
+exports.dbConnect = function(){
+
+ console.log('fabric=' + fabricDB);
+ if ( properties.dbFabric == 'true' )
+ {
+ connectFabric();
+ }
+ else
+ {
+ initDB();
+ }
+}
+
+function setCurrentDbName(){
+
+ function createFunction(dbentry)
+ {
+ return function(callback) { findCurrentDbIP(dbentry,callback); }
+ }
+
+ var tasks = [];
+ for (var x=0; x<dbArray.length; x++){
+ var dbElement = dbArray[x];
+ var dbElementArray = dbElement.split("|");
+
+ tasks.push( createFunction(dbElement) );
+ }
+ async.series(tasks, function(err,result){
+
+ if(err){
+ currentDbName = err;
+ console.log('currentDbName: ' + err);
+ return;
+ }
+ else {
+ console.log('not found');
+ return;
+ }
+ });
+}
+
+
+function findCurrentDbIP(dbElement, callback){
+
+ var dbElementArray = dbElement.split("|");
+
+ dns.lookup( dbElementArray[0], function onLookup(err, addresses, family) {
+
+ if ( currentDB == addresses ){
+ callback(dbElementArray[1]);
+ return;
+ }
+ else {
+ callback(null);
+ return;
+ }
+ });
+}
+
+
+exports.getCurrentDB = function(){
+ return currentDbName;
+}
+
+
+exports.testdb = function(req,res,callback){
+console.log('testdb');
+
+ osObj = {
+ 'hostname' : os.hostname(),
+ 'type' : os.type(),
+ 'platform' : os.platform(),
+ 'arch' : os.arch(),
+ 'release' : os.release(),
+ 'uptime' : os.uptime(),
+ 'totalmem' : os.totalmem(),
+ 'dbhealth' : ''
+ };
+
+ pool.getConnection(function(err,connection)
+ {
+ if(err){
+ callback(err);
+ return;
+ }
+
+ // http://stackoverflow.com/questions/10982281/mysql-connection-validity-test-in-datasource-select-1-or-something-better
+ connection.query("/* pint */ SELECT 1", function(err,result){
+
+ connection.release();
+ if(err) {
+ callback(err);
+ return;
+ }
+ callback(null,'Database Connectivity to ' + currentDB + ' is working.');
+ return;
+ }); //end query
+ }); // end getConnection
+}
+
+/*
+exports.checkSvcLogic = function(req,res){
+
+ if ( DBmasterHost.length > 0 && currentHost != DBmasterHost )
+ {
+ // need to copy file so SLA functionality works
+ var source = process.env.SDNC_CONFIG_DIR
+ + "/svclogic.properties." + currentHost;
+ var target = process.env.SDNC_CONFIG_DIR
+ + "/svclogic.properties";
+ fs.copy(source,target,{replace:true}, function(err){
+ if(err){
+ res.render("pages/err",
+ {result:{code:'error',
+ msg:"Unable to copy svclogic.properties. "+ String(err) }});
+ return;
+ }
+ });
+ }
+}
+*/
+function initDB( next ) {
+
+
+ var tasks = [];
+ for (var x=0; x<properties.databases.length; x++){
+
+ var db = properties.databases[x];
+ var dbArray = db.split("|");
+ var _dbIP = dnsSync.resolve(dbArray[0]);
+ var _dbName = dbArray[1];
+
+ tasks.push( createFindMasterFunctionObj(_dbIP, _dbName) );
+ }
+ async.series(tasks, function(err,result)
+ {
+ if(err){
+ if ( err == 'found' ){
+ if ( typeof next != 'undefined'){
+ next();
+ }
+ else {
+ return;
+ }
+ }
+ else {
+ console.error( String(err) ); // ALARM
+ return;
+ }
+ }
+ console.log('result=' + result);
+ });
+ return;
+}
+
+
+function createFindMasterFunctionObj(dbIP,dbName){
+ return function(callback) { findMaster(dbIP, dbName, callback); }
+}
+
+function findMaster (ldbIP, ldbName, callback){
+var dbIP = ldbIP;
+var dbName = ldbName;
+
+ console.log('checking dbIP:' + dbIP);
+
+ pool = mysql.createPool({
+ connectionLimit : properties.dbConnLimit,
+ host : dbIP,
+ user : properties.dbUser,
+ password : properties.dbPassword,
+ database : properties.dbName,
+ multipleStatements: true,
+ debug : false
+ });
+
+ pool.getConnection(function(err,connection){
+
+ if(err){
+ callback( String(err) );
+ return;
+ }
+ var sql = 'select @@read_only';
+ connection.query(sql, function(err,result){
+ connection.release();
+
+ // @@read_only=0 means db is writeable
+ console.log('@@read_only=' + result[0]['@@read_only']);
+ if ( result[0]['@@read_only'] == '0' )
+ { // writeable
+ // if this is not the current DB, make it since its writeable
+ currentDB = dbIP;
+ currentDbName = dbName;
+ console.log('currentDB=' + currentDB + "|" + currentDbName);
+ var newpool = mysql.createPool({
+ connectionLimit : properties.dbConnLimit,
+ host : currentDB,
+ user : properties.dbUser,
+ password : properties.dbPassword,
+ database : properties.dbName,
+ multipleStatements: true,
+ debug : false
+ }); // end create
+ pool = newpool;
+ callback('found', currentDB);
+ return;
+ }
+ // otherwise this is the current db and its writeable, just return
+ callback(null, currentDB);
+ return;
+ });
+ });
+}
+
+exports.checkDB = function(req,res,next){
+
+console.log('checkDB');
+
+
+ if ( properties.dbFabric == 'true' )
+ {
+ connectFabric();
+ next();
+ }
+ else
+ {
+ initDB( next );
+ }
+}
+
+
+exports.saveUser = function(req,res){
+
+ pool.getConnection(function(err,connection){
+ if(err){
+ console.error( String(err) ); // ALARM
+ res.render("pages/signup", {result:{code:'error', msg:"Unable to get database connection. " + String(err)},header:process.env.MAIN_MENU});
+ return;
+ }
+ //var sql = "SELECT AES_DECRYPT(password, '" + enckey + "') password FROM PORTAL_USERS";
+ var sql = "SELECT email FROM PORTAL_USERS WHERE email='" + req.body.nf_email + "'";
+
+ console.log(sql);
+
+ connection.query(sql, function(err,result){
+ if(err){
+ res.render("pages/signup", {result:{code:'error', msg:"Unable to get database connection. " + String(err)},header:process.env.MAIN_MENU});
+ return;
+ }
+ if (result.length == 1 || result.length > 1)
+ {
+ res.render("pages/signup", {result:{code:'error', msg:'User Information already exists.'},header:process.env.MAIN_MENU});
+ return;
+ }
+
+ sql = "INSERT INTO PORTAL_USERS (email,password,privilege) VALUES ("
+ +"'"+ req.body.nf_email + "',"
+ + "AES_ENCRYPT('" + req.body.nf_password + "','" + enckey + "'),"
+ +"'A')";
+
+ console.log(sql);
+
+ connection.query(sql, function(err,result){
+ connection.release();
+
+ if(err){
+ res.render("pages/signup", {result:{ code:'error', msg:String(err) },header:process.env.MAIN_MENU});;
+ return;
+ }
+ res.render('pages/signup', {result:{code:'success', msg:'User created. Please login.'},header:process.env.MAIN_MENU});
+ return;
+ });
+ });
+ });
+}
+
+// delete User
+exports.deleteUser = function(req,res){
+
+ var rows={};
+ var resultObj = { code:'', msg:'' };
+ var privilegeObj = req.session.loggedInAdmin;
+
+ pool.getConnection(function(err,connection) {
+ if(err){
+ console.error( String(err) ); // ALARM
+ res.render("user/list", {rows: null, result:{code:'error', msg:"Unable to get database connection. Error:" + String(err),
+ privilege:privilegeObj },header:process.env.MAIN_MENU});
+ return;
+ }
+
+ var sqlUpdate = "DELETE FROM PORTAL_USERS WHERE email='" + req.query.email + "'";
+
+ console.log(sqlUpdate);
+
+ connection.query(sqlUpdate,function(err,result){
+
+ if(err){
+ resultObj = {code:'error', msg:'Delete of user failed Error: '+ String(err) };
+ }
+
+ // Need DB lookup logic here
+ connection.query("SELECT email,password,privilege FROM PORTAL_USERS", function(err, rows) {
+ connection.release();
+ if(!err) {
+ if ( rows.length > 0 )
+ {
+ resultObj = {code:'success',msg:'Successfully deleted user.'};
+ res.render('user/list', { rows: rows, result:resultObj, privilege:privilegeObj,header:process.env.MAIN_MENU } );
+ return;
+ }else{
+ res.render("user/list", { rows: null, result:{code:'error', msg:'Unexpected no rows returned from database, please try again.',
+ privilege:privilegeObj },header:process.env.MAIN_MENU});
+ return;
+ }
+ } else {
+ res.render("user/list", { rows: null, result:{code:'error', msg:'Unexpected no rows returned from database. Error: ' + String(err),
+ privilege:privilegeObj },header:process.env.MAIN_MENU});
+ return;
+ }
+ }); //end query
+ });
+ }); // end of getConnection
+}
+
+// add User
+exports.addUser = function(req,res){
+
+ var rows={};
+ var resultObj = { code:'', msg:'' };
+ var privilegeObj = req.session.loggedInAdmin;
+
+ pool.getConnection(function(err,connection) {
+ if(err){
+ console.error( String(err) ); // ALARM
+ res.render("user/list", {rows: null, result:{code:'error', msg:"Unable to get database connection. "+ String(err),
+ privilege:privilegeObj },header:process.env.MAIN_MENU});
+ return;
+ }
+
+ if( req.body.nf_privilege == "admin" ){
+ var char_priv = 'A';
+ }else if(req.body.nf_privilege == 'readonly'){
+ var char_priv = 'R';
+ }else{
+ var char_priv = 'A';
+ }
+
+
+ //connection.query(sqlRequest, function(err,result){
+ var sqlUpdate = "INSERT INTO PORTAL_USERS (email, password, privilege) VALUES ("
+ +"'"+ req.body.nf_email + "',"
+ + "AES_ENCRYPT('" + req.body.nf_password + "','" + enckey + "'),"
+ +"'"+ char_priv + "')";
+
+ console.log(sqlUpdate);
+
+ connection.query(sqlUpdate,function(err,result){
+
+ if(err){
+ resultObj = {code:'error', msg:'Add of user failed Error: '+err};
+ }
+
+ // Need DB lookup logic here
+ connection.query("SELECT email,AES_DECRYPT(password, '" + enckey + "') password,privilege FROM PORTAL_USERS", function(err, rows) {
+
+ connection.release();
+ if(!err) {
+ if ( rows.length > 0 )
+ {
+ resultObj = {code:'success',msg:'Successfully added user.'};
+ res.render('user/list', { rows: rows, result:resultObj, privilege:privilegeObj,header:process.env.MAIN_MENU } );
+ return;
+ }else{
+ res.render("user/list", {rows: null, result:{code:'error', msg:'Unexpected no rows returned from database, please try again.',
+ privilege:privilegeObj },header:process.env.MAIN_MENU});
+ return;
+ }
+ } else {
+ res.render("user/list", {rows: null, result:{code:'error', msg:'Unexpected no rows returned from database. Error: '+ err ,
+ privilege:privilegeObj },header:process.env.MAIN_MENU});
+ return;
+ }
+ }); //end query
+ });
+
+ }); // end of getConnection
+}
+
+// updateUser
+exports.updateUser= function(req,res){
+
+ var rows={};
+ var resultObj = { code:'', msg:'' };
+ var privilegeObj = req.session.loggedInAdmin;
+
+ pool.getConnection(function(err,connection) {
+
+ if(err){
+ console.error( String(err) ); // ALARM
+ res.render("user/list", {rows: null, result:{code:'error', msg:"Unable to get database connection. " + String(err),
+ privilege:privilegeObj },header:process.env.MAIN_MENU});
+ return;
+ }
+
+ if( req.body.uf_privilege == "admin" ){
+ var char_priv = 'A';
+ }else if(req.body.uf_privilege == 'readonly'){
+ var char_priv = 'R';
+ }else{
+ var char_priv = 'A';
+ }
+
+
+ //connection.query(sqlRequest, function(err,result){
+ var sqlUpdate = "UPDATE PORTAL_USERS SET "
+ + "email = '" + req.body.uf_email + "',"
+ + "password = " + "AES_ENCRYPT('" + req.body.uf_password + "','" + enckey + "'), "
+ + "privilege = '"+ char_priv + "'"
+ + " WHERE email = '" + req.body.uf_key_email + "'";
+
+ console.log(sqlUpdate);
+
+ connection.query(sqlUpdate,function(err,result){
+
+ if(err){
+ resultObj = {code:'error', msg:'Update of user failed Error: '+err};
+ }
+
+ // Need DB lookup logic here
+ connection.query("SELECT email, AES_DECRYPT(password,'" + enckey + "') password, privilege FROM PORTAL_USERS", function(err, rows) {
+ connection.release();
+ if(!err) {
+ if ( rows.length > 0 )
+ {
+ resultObj = {code:'success',msg:'Successfully updated user.'};
+ res.render('user/list', { rows: rows, result:resultObj, privilege:privilegeObj,header:process.env.MAIN_MENU} );
+ return;
+ }else{
+ res.render("user/list", {rows: null, result:{ code:'error', msg:'Unexpected no rows returned from database.',
+ privilege:privilegeObj },header:process.env.MAIN_MENU});
+ return;
+ }
+ } else {
+ res.render("user/list", {rows: null, result:{code:'error', msg:'Unexpected no rows returned from database. ' + String(err),
+ privilege:privilegeObj },header:process.env.MAIN_MENU});
+ return;
+ }
+ }); //end query
+ });
+ }); // end of getConnection
+};
+
+exports.listUsers = function(req,res,resultObj){
+
+ var privilegeObj = req.session.loggedInAdmin;
+ var rows={};
+ pool.getConnection(function(err,connection) {
+
+ if(err){
+ console.error( String(err) ); // ALARM
+ res.render("pages/list", {rows: null, result:{code:'error', msg:"Unable to get database connection. " + String(err),
+ privilege:privilegeObj },header:process.env.MAIN_MENU});
+ return;
+ }
+
+ // Need DB lookup logic here
+ var selectUsers = "SELECT email, AES_DECRYPT(password,'" + enckey + "') password, privilege from PORTAL_USERS";
+ console.log(selectUsers);
+ connection.query(selectUsers, function(err, rows) {
+
+ connection.release();
+ if(err){
+ resultObj = {code:'error', msg:'Unable to SELECT users Error: '+err};
+ }
+
+ if(!err) {
+ if ( rows.length > 0 )
+ {
+ console.log(JSON.stringify(rows));
+ res.render('user/list', { rows: rows, result:resultObj, privilege:privilegeObj,header:process.env.MAIN_MENU });
+ return;
+ }
+ else{
+ res.render("user/list", {rows: null, result:{code:'error', msg:'Unexpected no rows returned from database.',
+ privilege:privilegeObj },header:process.env.MAIN_MENU});
+ return;
+ }
+ } else {
+ res.render("user/list", {rows: null, result:{code:'error', msg:'Unexpected no rows returned from database. ' + String(err),
+ privilege:privilegeObj },header:process.env.MAIN_MENU});
+ return;
+ }
+ }); //end query
+ }); // end getConnection
+}
+
+exports.listSLA = function(req,res,resultObj){
+
+ var privilegeObj = req.session.loggedInAdmin;
+
+ pool.getConnection(function(err,connection) {
+
+ if(err){
+ console.error( String(err) ); // ALARM
+ res.render("pages/err", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
+ return;
+ }
+
+ // Need DB lookup logic here
+ connection.query("SELECT module,rpc,version,mode,active,graph FROM SVC_LOGIC", function(err, rows) {
+
+ connection.release();
+ if(err) {
+ res.render("pages/err", {result:{code:'error',msg:'Database Error: '+ String(err)},header:process.env.MAIN_MENU});
+ return;
+ }
+ else {
+ res.render("sla/list", {rows:rows, result:resultObj, privilege:privilegeObj, header:process.env.MAIN_MENU} );
+ return;
+ }
+ }); //end query
+ }); // end getConnection
+}
+
+exports.executeSQL = function(sql,req,res,callback){
+
+ console.log(sql);
+
+ pool.getConnection(function(err,connection) {
+
+ if(err){
+ console.error( String(err) ); // ALARM
+ callback(err, 'Unable to get database connection.' + err);
+ return;
+ }
+
+ connection.query(sql, function(err,result){
+ connection.release();
+ if (err) {
+ callback(err,'Database operation failed. ' + err );
+ }
+ else
+ {
+console.log('affectedRows='+result.affectedRows);
+ callback(null, result.affectedRows);
+ }
+ }); //end query
+ }); // end getConnection
+}
+
+
+// gamma - deleteParameter
+exports.deleteParameter = function(req,res,callback){
+
+ var sql = "DELETE FROM PARAMETERS WHERE name='" + req.query.name + "'";
+
+ console.log(sql);
+
+ pool.getConnection(function(err,connection) {
+
+ if(err){
+ console.log( String(err) ); // ALARM
+ callback(err, 'Unable to get database connection.' + err);
+ return;
+ }
+ connection.query(sql, function(err,result){
+ connection.release();
+ if(err){
+ console.log('Update failed. ' + err );
+ callback(err,'Update failed. ' + err );
+ }
+ else
+ {
+ callback(null,'');
+ }
+ }); //end query
+ }); // end getConnection
+}
+
+
+exports.getTable = function(req,res,sql,rdestination,resultObj,privilegeObj){
+
+console.log('SQL:'+sql);
+
+ pool.getConnection(function(err,connection) {
+
+ if(err){
+ console.error( String(err) ); // ALARM
+ res.render("pages/err", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
+ return;
+ }
+ connection.query(sql,function(err, rows)
+ {
+ connection.release();
+ if(err) {
+ res.render(rdestination, {result:{code:'error',msg:'Database Error: '+ String(err)},header:process.env.MAIN_MENU});
+ return;
+ }
+ else {
+ res.render(rdestination, { rows: rows, result:resultObj, privilege:privilegeObj,header:process.env.MAIN_MENU } );
+ return;
+ }
+ }); //end query
+ }); // end getConnection
+}
+
+exports.getMetaTable = function(req,res,sql,rdestination,resultObj,privilegeObj){
+
+ console.log('SQL:'+ sql);
+
+ var rdata = [];
+ var v_tables = [];
+ var vtables = properties.viewTables;
+
+ for ( var i in vtables ) {
+ v_tables.push(vtables[i]);
+ }
+
+ pool.getConnection(function(err,connection) {
+
+ if(err){
+ console.error( String(err) ); // ALARM
+ res.render("pages/err", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
+ return;
+ }
+ connection.query(sql,function(err, rows, fields)
+ {
+ console.log('rows:' + JSON.stringify(rows,null,2));
+ // http://stackoverflow.com/questions/14528385/how-to-convert-json-object-to-javascript-array
+ //logger.debug(Object.keys(rows[0]).map(function(v) { return rows[0][v]; }));
+ for ( var i in rows ){
+ rdata.push(Object.keys(rows[i]).map(function(v) { return rows[i][v]; }));
+ //logger.debug(Object.keys(rows[i]).map(function(v) { return rows[i][v]; }));
+ //logger.debug([i, rows[i]]);
+ }
+ for ( var x in rdata ){
+ for ( var j in rdata[x] ){
+ console.log('rdata[' + x + ']: ' + rdata[x][j]);
+ }
+ }
+ console.log('rdata:' + rdata[0]);
+ console.log('fields:' + JSON.stringify(fields,null,2));
+ connection.release();
+ if(err) {
+ res.render(rdestination, {result:{code:'error',msg:'Database Error: '+ String(err)},header:process.env.MAIN_MENU});
+ return;
+ }
+ else {
+ res.render(rdestination, { displayTable:true, vtables:v_tables, rows:rdata, fields:fields, result:resultObj, privilege:privilegeObj, header:process.env.MAIN_MENU } );
+ return;
+ }
+ }); //end query
+ }); // end getConnection
+}
+
+exports.getVnfProfile = function(req,res,resultObj,privilegeObj){
+
+ pool.getConnection(function(err,connection) {
+
+ if(err){
+ console.error( String(err) ); // ALARM
+ res.render("pages/err", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
+ return;
+ }
+
+ connection.query("SELECT vnf_type,availability_zone_count,equipment_role "
+ + "FROM VNF_PROFILE ORDER BY VNF_TYPE", function(err, rows)
+ {
+ connection.release();
+ if(err) {
+ res.render("mobility/vnfProfile", {result:{code:'error',msg:'Database Error: '+ String(err)},header:process.env.MAIN_MENU});
+ return;
+ }
+ else {
+ res.render('mobility/vnfProfile', { rows: rows, result:resultObj, privilege:privilegeObj,header:process.env.MAIN_MENU } );
+ return;
+ }
+ }); //end query
+console.log('after query');
+ }); // end getConnection
+}
+
+
+exports.getVnfPreloadData = function(req,res,dbtable,callback){
+
+ pool.getConnection(function(err,connection) {
+
+ if(err){
+ console.error( String(err) ); // ALARM
+ callback(err, 'Unable to get database connection.' + err);
+ return;
+ }
+
+ // Need DB lookup logic here
+ connection.query("SELECT preload_data FROM " + dbtable + " WHERE id="
+ + req.query.id, function(err, rows)
+ {
+ connection.release();
+ if(err) {
+ callback(err);
+ return;
+ }
+ else {
+ var buffer = rows[0].preload_data;
+ var decode_buffer = decodeURI(buffer);
+ var content = JSON.parse(decode_buffer);
+ callback(null,content);
+ return;
+ }
+ }); //end query
+ }); // end getConnection
+}
+
+
+
+exports.getVnfNetworkData = function(req,res,resultObj,privilegeObj){
+
+
+ pool.getConnection(function(err,connection) {
+
+ if(err){
+ console.error( String(err) ); // ALARM
+ res.render("pages/err", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
+ return;
+ }
+
+ // Need DB lookup logic here
+ connection.query("SELECT id,svc_request_id,svc_action,status,filename,ts,preload_data "
+ + "FROM PRE_LOAD_VNF_NETWORK_DATA ORDER BY id", function(err, rows)
+ {
+ var msgArray = new Array();
+
+ connection.release();
+ if(err) {
+ msgArray = 'Database Error: '+ String(err);
+ res.render("mobility/vnfPreloadNetworkData", {
+ result:{code:'error',msg:msgArray},
+ preloadImportDirectory: properties.preloadImportDirectory,
+ header:process.env.MAIN_MENU
+ });
+ return;
+ }
+ else {
+ var retData = [];
+ for( r=0; r<rows.length; r++)
+ {
+ var rowObj = {};
+ rowObj.row = rows[r];
+ if ( rows[r].filename.length > 0 )
+ {
+ try{
+ var buffer = rows[r].preload_data;
+ var decode_buffer = decodeURI(buffer);
+ var filecontent = JSON.parse(decode_buffer);
+ rowObj.filecontent = filecontent;
+ rowObj.network_name = filecontent.input["network-topology-information"]["network-topology-identifier"]["network-name"];
+ rowObj.network_type = filecontent.input["network-topology-information"]["network-topology-identifier"]["network-type"];
+ }
+ catch(error){
+ msgArray.push('File ' + rows[r].filename + ' has invalid JSON. Error:' + error);
+ }
+ }
+ else {
+ rowObj.filecontent = '';
+ }
+ retData.push(rowObj);
+ }
+ if(msgArray.length>0){
+ resultObj.code = 'failure';
+ resultObj.msg = msgArray;
+ }
+ res.render('mobility/vnfPreloadNetworkData', {
+ retData:retData,
+ result:resultObj,
+ privilege:privilegeObj,
+ preloadImportDirectory: properties.preloadImportDirectory,
+ header:process.env.MAIN_MENU
+ });
+ return;
+ }
+ }); //end query
+ }); // end getConnection
+}
+
+exports.getVnfData = function(req,res,resultObj,privilegeObj){
+
+
+ pool.getConnection(function(err,connection) {
+
+ if(err){
+ console.error( String(err) ); // ALARM
+ res.render("pages/err", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
+ return;
+ }
+
+ // Need DB lookup logic here
+ connection.query("SELECT id,svc_request_id,svc_action,status,filename,ts,preload_data "
+ + "FROM PRE_LOAD_VNF_DATA ORDER BY id", function(err, rows)
+ {
+ var msgArray = new Array();
+
+ connection.release();
+ if(err) {
+ msgArray = 'Database Error: '+ String(err);
+ res.render("mobility/vnfPreloadData", {
+ result:{code:'error',msg:msgArray},
+ preloadImportDirectory: properties.preloadImportDirectory,
+ header:process.env.MAIN_MENU
+ });
+ return;
+ }
+ else {
+ var retData = [];
+ for( r=0; r<rows.length; r++)
+ {
+ var rowObj = {};
+ rowObj.row = rows[r];
+ if ( rows[r].filename.length > 0 )
+ {
+ try{
+ var buffer = rows[r].preload_data;
+ var s_buffer = decodeURI(buffer);
+ var filecontent = JSON.parse(s_buffer);
+ rowObj.filecontent = filecontent;
+ rowObj.vnf_name = filecontent.input["vnf-topology-information"]["vnf-topology-identifier"]["vnf-name"];
+ rowObj.vnf_type = filecontent.input["vnf-topology-information"]["vnf-topology-identifier"]["vnf-type"];
+ }
+ catch(error){
+ msgArray.push('File ' + rows[r].filename + ' has invalid JSON. Error:' + error);
+ }
+ }
+ else {
+ rowObj.filecontent = '';
+ }
+ retData.push(rowObj);
+ }
+ if(msgArray.length>0){
+ resultObj.code = 'failure';
+ resultObj.msg = msgArray;
+ }
+ res.render('mobility/vnfPreloadData',{
+ retData:retData, result:resultObj,
+ privilege:privilegeObj,
+ header:process.env.MAIN_MENU,
+ preloadImportDirectory: properties.preloadImportDirectory
+ });
+ return;
+ }
+ }); //end query
+ }); // end getConnection
+}
+
+
+exports.findAdminUser = function(email,res,callback) {
+
+
+ var adminUser={};
+ pool.getConnection(function(err,connection) {
+ if(err){
+ console.error( String(err) ); // ALARM
+ res.render("pages/login", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
+ return;
+ }
+
+ // Need DB lookup logic here
+ connection.query("SELECT email, AES_DECRYPT(password, '" + enckey + "') password, privilege FROM PORTAL_USERS WHERE email='" + email + "'", function(err, rows) {
+
+ connection.release();
+ if(!err) {
+ if ( rows.length > 0 )
+ {
+ rows.forEach(function(row){
+ adminUser = {
+ "email" : row.email,
+ "password" : row.password,
+ "privilege" : row.privilege };
+ });
+ callback(adminUser);
+ return;
+ }else{
+ console.log("no rows returned");
+ res.render("pages/login", {result:{code:'error', msg:'User is not in database.'},header:process.env.MAIN_MENU});
+ return;
+ }
+ } else {
+ res.render("pages/err", {result:{code:'error',msg:'Unexpected no rows returned from database. '+ String(err)},header:process.env.MAIN_MENU});
+ return;
+ }
+ }); //end query
+ }); // end getConnection
+}
+
+
+exports.addRow = function(sql,req,res,callback){
+
+ console.log(sql);
+
+ pool.getConnection(function(err,connection) {
+
+ if(err){
+ console.error( String(err) ); // ALARM
+ callback(err, 'Unable to get database connection.' + err);
+ return;
+ }
+
+ connection.query(sql, function(err,result){
+ connection.release();
+ if(err){
+ console.debug('Database operation failed. ' + err );
+ callback(err,'Database operation failed. ' + err );
+ }
+ else
+ {
+ callback(null, result.affectedRows);
+ }
+ }); //end query
+ }); // end getConnection
+}
+
+
+
+exports.addVnfProfile = function(row,res,callback){
+
+ var sqlInsert;
+
+ if ( row.length < 3 )
+ {
+ console.log('Row [' + row + '] does not have enough fields.');
+ callback(null, 'Row [' + row + '] does not have enough fields.');
+ return;
+ }
+
+ sqlInsert = "INSERT INTO VNF_PROFILE ("
+ + "vnf_type,availability_zone_count,equipment_role) VALUES ("
+ + "'" + row[0] + "',"
+ + row[1]
+ + ",'" + row[2] + "')";
+
+ console.log('SQL='+sqlInsert);
+
+ pool.getConnection(function(err,connection) {
+
+ if(err){
+ console.log( String(err) ); // ALARM
+ callback(err, 'Unable to get database connection.');
+ return;
+ }
+ connection.query(sqlInsert, function(err,result){
+ connection.release();
+ if(err){
+ console.log('Row [' + row + '] failed to insert. ' + err );
+ callback(null,'Row [' + row + '] failed to insert. ' + err );
+ }
+ else
+ {
+ callback(null,'');
+ }
+ }); //end query
+ }); // end getConnection
+}
+
+
+// Add to SVC_LOGIC table
+exports.addDG = function(_module, version, rpc, mode, xmlfile, req,res){
+
+ var privilegeObj = req.session.loggedInAdmin;
+ var rows={};
+
+ pool.getConnection(function(err,connection) {
+ if(err){
+ console.error( String(err) ); // ALARM
+ res.render("pages/err", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
+ return;
+ }
+
+ var post = {
+ module : _module,
+ rpc : rpc,
+ version : version,
+ mode : mode,
+ active : "N",
+ graph : xmlfile
+ };
+
+ //logger.debug( JSON.stringify(post));
+
+ //connection.query(sqlRequest, function(err,result){
+ connection.query('INSERT INTO SVC_LOGIC SET ?', post, function(err,result){
+ // neat!
+
+ // Need DB lookup logic here
+ connection.query("SELECT module,rpc,version,mode,active,graph FROM SVC_LOGIC", function(err, rows) {
+
+ if(!err) {
+ if ( rows.length > 0 )
+ {
+ res.render('sla/list', { rows: rows, result:{code:'',msg:''}, privilege:privilegeObj,header:process.env.MAIN_MENU } );
+ return;
+ }else{
+ console.log("no rows returned");
+ res.render("pages/home");
+ return;
+ }
+ }
+ connection.on('error', function(err){
+ connection.release();
+ console.log(500, "An error has occurred -- " + err);
+ res.render("pages/home");
+ return;
+ });
+ }); //end query
+
+ connection.release();
+ });
+ //connection.query('INSERT INTO SVC_LOGIC SET ?', post, function(err,result){
+ // neat!
+ //logger.debug('inserted rows');
+ //});
+
+ //if(err){
+ //res.render('pages/home');
+ //}
+ return;
+
+ }); // end of getConnection
+};
+
+exports.activate = function(req,res,_module,rpc,version,mode,callback){
+
+ var sql = "UPDATE SVC_LOGIC SET active=\'Y\' WHERE module=\'"
+ + _module + "' AND rpc=\'"
+ + rpc + "' AND version=\'"
+ + version + "' AND mode=\'"
+ + mode + "'";
+
+ console.log('SQL='+sql);
+
+ pool.getConnection(function(err,connection) {
+
+ if(err){
+ console.error( String(err) ); // ALARM
+ callback(err, 'Unable to get database connection.' + err);
+ return;
+ }
+
+ connection.query(sql, function(err,result){
+
+ connection.release();
+ if(err){
+ callback(err, 'Unable to get database connection.' + err);
+ }
+ else
+ {
+ callback(null,'');
+ }
+ }); //end query
+ }); // end getConnection
+}
+
+
+exports.deactivate = function(req,res,_module,rpc,version,mode,callback){
+
+ var sql = "UPDATE SVC_LOGIC SET active=\'N\' WHERE module=\'"
+ + _module + "' AND rpc=\'"
+ + rpc + "' AND version=\'"
+ + version + "' AND mode=\'"
+ + mode + "'";
+
+ console.log('SQL='+sql);
+
+ pool.getConnection(function(err,connection) {
+
+ if(err){
+ console.error( String(err) ); // ALARM
+ callback(err, 'Unable to get database connection.' + err);
+ return;
+ }
+
+ connection.query(sql, function(err,result){
+
+ connection.release();
+ if(err){
+ callback(err, 'Unable to get database connection.' + err);
+ }
+ else
+ {
+ callback(null,'');
+ }
+ }); //end query
+ }); // end getConnection
+}
+
+exports.global_deactivate = function(req,res,_module,rpc,mode,callback){
+
+ var sql = "UPDATE SVC_LOGIC SET active=\'N\' WHERE module=\'"
+ + _module + "' AND rpc=\'"
+ + rpc + "' AND mode=\'"
+ + mode + "'";
+
+
+ pool.getConnection(function(err,connection) {
+
+ if(err){
+ callback(err, 'Unable to get database connection.' + err);
+ return;
+ }
+
+ connection.query(sql, function(err,result){
+
+ connection.release();
+ if(err){
+ callback(err, err);
+ }
+ else
+ {
+ callback(null,'');
+ }
+ }); //end query
+ }); // end getConnection
+}
+
+
+exports.deleteDG = function(req,res,_module,rpc,version,mode,callback){
+
+ var sql = "DELETE FROM SVC_LOGIC WHERE module=\'"
+ + _module + "' AND rpc=\'"
+ + rpc + "' AND version=\'"
+ + version + "' AND mode=\'"
+ + mode + "'";
+
+ console.log('SQL='+sql);
+
+ pool.getConnection(function(err,connection) {
+
+ if(err){
+ console.error( String(err) ); // ALARM
+ callback(err, 'Unable to get database connection.' + err);
+ return;
+ }
+
+ connection.query(sql, function(err,result){
+
+ connection.release();
+ if(err){
+ callback(err, 'Unable to get database connection.' + err);
+ }
+ else
+ {
+ callback(null,'');
+ }
+ }); //end query
+ }); // end getConnection
+}
+
+
+
+function padLeft(nr, n, str){
+ return Array(n-String(nr).length+1).join(str||'0')+nr;
+}
+