1 var express = require('express'),
3 var mysql = require('mysql');
4 var properties = require(process.env.SDNC_CONFIG_DIR + '/admportal.json');
5 var fs = require('fs.extra');
6 var util = require('util');
7 var os = require('os');
8 var async = require('async');
9 var l_ = require('lodash');
10 var dns = require('dns');
11 var dnsSync = require('dns-sync');
15 var currentDbName = '';
16 var fabricDB = properties.dbFabricServer;
17 var dbArray = properties.databases;
18 var enckey = properties.passwordKey;
20 console.log('dbFabric=' + properties.dbFabric);
22 if ( properties.dbFabric == 'true' )
32 exports.dbConnect = function(){
34 console.log('fabric=' + fabricDB);
35 if ( properties.dbFabric == 'true' )
45 function setCurrentDbName(){
47 function createFunction(dbentry)
49 return function(callback) { findCurrentDbIP(dbentry,callback); }
53 for (var x=0; x<dbArray.length; x++){
54 var dbElement = dbArray[x];
55 var dbElementArray = dbElement.split("|");
57 tasks.push( createFunction(dbElement) );
59 async.series(tasks, function(err,result){
63 console.log('currentDbName: ' + err);
67 console.log('not found');
74 function findCurrentDbIP(dbElement, callback){
76 var dbElementArray = dbElement.split("|");
78 dns.lookup( dbElementArray[0], function onLookup(err, addresses, family) {
80 if ( currentDB == addresses ){
81 callback(dbElementArray[1]);
92 exports.getCurrentDB = function(){
97 exports.testdb = function(req,res,callback){
98 console.log('testdb');
101 'hostname' : os.hostname(),
103 'platform' : os.platform(),
105 'release' : os.release(),
106 'uptime' : os.uptime(),
107 'totalmem' : os.totalmem(),
111 pool.getConnection(function(err,connection)
118 // http://stackoverflow.com/questions/10982281/mysql-connection-validity-test-in-datasource-select-1-or-something-better
119 connection.query("/* pint */ SELECT 1", function(err,result){
121 connection.release();
126 callback(null,'Database Connectivity to ' + currentDB + ' is working.');
129 }); // end getConnection
133 exports.checkSvcLogic = function(req,res){
135 if ( DBmasterHost.length > 0 && currentHost != DBmasterHost )
137 // need to copy file so SLA functionality works
138 var source = process.env.SDNC_CONFIG_DIR
139 + "/svclogic.properties." + currentHost;
140 var target = process.env.SDNC_CONFIG_DIR
141 + "/svclogic.properties";
142 fs.copy(source,target,{replace:true}, function(err){
144 res.render("pages/err",
145 {result:{code:'error',
146 msg:"Unable to copy svclogic.properties. "+ String(err) }});
153 function initDB( next ) {
157 for (var x=0; x<properties.databases.length; x++){
159 var db = properties.databases[x];
160 var dbArray = db.split("|");
161 var _dbIP = dnsSync.resolve(dbArray[0]);
162 var _dbName = dbArray[1];
164 tasks.push( createFindMasterFunctionObj(_dbIP, _dbName) );
166 async.series(tasks, function(err,result)
169 if ( err == 'found' ){
170 if ( typeof next != 'undefined'){
178 console.error( String(err) ); // ALARM
182 console.log('result=' + result);
188 function createFindMasterFunctionObj(dbIP,dbName){
189 return function(callback) { findMaster(dbIP, dbName, callback); }
192 function findMaster (ldbIP, ldbName, callback){
194 var dbName = ldbName;
196 console.log('checking dbIP:' + dbIP);
198 pool = mysql.createPool({
199 connectionLimit : properties.dbConnLimit,
201 user : properties.dbUser,
202 password : properties.dbPassword,
203 database : properties.dbName,
204 multipleStatements: true,
208 pool.getConnection(function(err,connection){
211 callback( String(err) );
214 var sql = 'select @@read_only';
215 connection.query(sql, function(err,result){
216 connection.release();
218 // @@read_only=0 means db is writeable
219 console.log('@@read_only=' + result[0]['@@read_only']);
220 if ( result[0]['@@read_only'] == '0' )
222 // if this is not the current DB, make it since its writeable
224 currentDbName = dbName;
225 console.log('currentDB=' + currentDB + "|" + currentDbName);
226 var newpool = mysql.createPool({
227 connectionLimit : properties.dbConnLimit,
229 user : properties.dbUser,
230 password : properties.dbPassword,
231 database : properties.dbName,
232 multipleStatements: true,
236 callback('found', currentDB);
239 // otherwise this is the current db and its writeable, just return
240 callback(null, currentDB);
246 exports.checkDB = function(req,res,next){
248 console.log('checkDB');
251 if ( properties.dbFabric == 'true' )
263 exports.saveUser = function(req,res){
265 console.log('b4 sani');
266 var email = req.sanitize(req.body.nf_email);
267 var pswd = req.sanitize(req.body.nf_password);
268 console.log('after sani');
270 pool.getConnection(function(err,connection)
273 console.error( String(err) ); // ALARM
274 res.render("pages/signup", {result:{code:'error', msg:"Unable to get database connection. " + String(err)},header:process.env.MAIN_MENU});
277 var sql = "SELECT email FROM PORTAL_USERS WHERE email='" + email + "'";
279 connection.query(sql, function(err,result)
282 connection.release();
283 res.render("pages/signup", {result:{code:'error', msg:"Unable to get database connection. " + String(err)},header:process.env.MAIN_MENU});
286 if (result.length == 1 || result.length > 1)
288 connection.release();
289 res.render("pages/signup", {result:{code:'error', msg:'User Information already exists.'},header:process.env.MAIN_MENU});
293 sql = "INSERT INTO PORTAL_USERS (email,password,privilege) VALUES ("
295 + "AES_ENCRYPT('" + pswd + "','" + enckey + "'),"
298 connection.query(sql, function(err,result)
300 connection.release();
303 res.render("pages/signup", {result:{ code:'error', msg:String(err) },header:process.env.MAIN_MENU});;
306 res.render('pages/signup', {result:{code:'success', msg:'User created. Please login.'},header:process.env.MAIN_MENU});
314 exports.deleteUser = function(req,res){
317 var resultObj = { code:'', msg:'' };
318 var privilegeObj = req.session.loggedInAdmin;
320 pool.getConnection(function(err,connection) {
322 console.error( String(err) ); // ALARM
323 res.render("user/list", {rows: null, result:{code:'error', msg:"Unable to get database connection. Error:" + String(err),
324 privilege:privilegeObj },header:process.env.MAIN_MENU});
328 var sqlUpdate = "DELETE FROM PORTAL_USERS WHERE email='" + req.query.email + "'";
330 console.log(sqlUpdate);
332 connection.query(sqlUpdate,function(err,result){
335 resultObj = {code:'error', msg:'Delete of user failed Error: '+ String(err) };
338 // Need DB lookup logic here
339 connection.query("SELECT email,password,privilege FROM PORTAL_USERS", function(err, rows) {
340 connection.release();
342 if ( rows.length > 0 )
344 resultObj = {code:'success',msg:'Successfully deleted user.'};
345 res.render('user/list', { rows: rows, result:resultObj, privilege:privilegeObj,header:process.env.MAIN_MENU } );
348 res.render("user/list", { rows: null, result:{code:'error', msg:'Unexpected no rows returned from database, please try again.',
349 privilege:privilegeObj },header:process.env.MAIN_MENU});
353 res.render("user/list", { rows: null, result:{code:'error', msg:'Unexpected no rows returned from database. Error: ' + String(err),
354 privilege:privilegeObj },header:process.env.MAIN_MENU});
359 }); // end of getConnection
363 exports.addUser = function(req,res){
366 var resultObj = { code:'', msg:'' };
367 var privilegeObj = req.session.loggedInAdmin;
368 var privilege = req.sanitize(req.body.nf_privilege);
369 var email = req.sanitize(req.body.nf_email);
370 var pswd = req.sanitize(req.body.nf_password);
373 pool.getConnection(function(err,connection)
377 console.error( String(err) ); // ALARM
378 res.render("user/list", {rows: null, result:{code:'error', msg:"Unable to get database connection. "+ String(err),
379 privilege:privilegeObj },header:process.env.MAIN_MENU});
383 if( privilege == "admin" ){
385 }else if(privilege == 'readonly'){
391 //connection.query(sqlRequest, function(err,result)
392 var sqlUpdate = "INSERT INTO PORTAL_USERS (email, password, privilege) VALUES ("
394 + "AES_ENCRYPT('" + pswd + "','" + enckey + "'),"
395 +"'"+ char_priv + "')";
398 connection.query(sqlUpdate,function(err,result)
401 resultObj = {code:'error', msg:'Add of user failed Error: '+err};
403 // Need DB lookup logic here
404 connection.query("SELECT email,AES_DECRYPT(password, '" + enckey + "') password,privilege FROM PORTAL_USERS", function(err, rows)
406 connection.release();
409 if ( rows.length > 0 )
411 resultObj = {code:'success',msg:'Successfully added user.'};
412 res.render('user/list', { rows: rows, result:resultObj, privilege:privilegeObj,header:process.env.MAIN_MENU } );
415 res.render("user/list", {rows: null, result:{code:'error', msg:'Unexpected no rows returned from database, please try again.',
416 privilege:privilegeObj },header:process.env.MAIN_MENU});
421 res.render("user/list", {rows: null, result:{code:'error', msg:'Unexpected no rows returned from database. Error: '+ err ,
422 privilege:privilegeObj },header:process.env.MAIN_MENU});
427 }); // end of getConnection
431 exports.updateUser= function(req,res){
434 var resultObj = { code:'', msg:'' };
435 var privilegeObj = req.session.loggedInAdmin;
436 var email = req.sanitize(req.body.uf_email);
437 var key_email = req.sanitize(req.body.uf_key_email)
438 var pswd = req.sanitize(req.body.uf_password);
439 var privilege = req.sanitize(req.body.uf_privilege);
441 pool.getConnection(function(err,connection)
444 console.error( String(err) ); // ALARM
445 res.render("user/list", {rows: null, result:{code:'error', msg:"Unable to get database connection. " + String(err),
446 privilege:privilegeObj },header:process.env.MAIN_MENU});
450 if( privilege == "admin" ){
452 }else if(privilege == 'readonly'){
458 var sqlUpdate = "UPDATE PORTAL_USERS SET "
459 + "email = '" + email + "',"
460 + "password = " + "AES_ENCRYPT('" + pswd + "','" + enckey + "'), "
461 + "privilege = '"+ char_priv + "'"
462 + " WHERE email = '" + key_email + "'";
464 connection.query(sqlUpdate,function(err,result)
467 resultObj = {code:'error', msg:'Update of user failed Error: '+err};
469 // Need DB lookup logic here
470 connection.query("SELECT email, AES_DECRYPT(password,'" + enckey + "') password, privilege FROM PORTAL_USERS", function(err, rows)
472 connection.release();
475 if ( rows.length > 0 )
477 resultObj = {code:'success',msg:'Successfully updated user.'};
478 res.render('user/list', { rows: rows, result:resultObj, privilege:privilegeObj,header:process.env.MAIN_MENU} );
481 res.render("user/list", {rows: null, result:{ code:'error', msg:'Unexpected no rows returned from database.',
482 privilege:privilegeObj },header:process.env.MAIN_MENU});
486 res.render("user/list", {rows: null, result:{code:'error', msg:'Unexpected no rows returned from database. ' + String(err),
487 privilege:privilegeObj },header:process.env.MAIN_MENU});
492 }); // end of getConnection
495 exports.listUsers = function(req,res,resultObj){
497 var privilegeObj = req.session.loggedInAdmin;
499 pool.getConnection(function(err,connection)
503 console.error( String(err) ); // ALARM
504 res.render("pages/list",
509 msg:"Unable to get database connection. " + String(err),
510 privilege:privilegeObj },
511 header:process.env.MAIN_MENU
516 // Need DB lookup logic here
517 var selectUsers = "SELECT email, AES_DECRYPT(password,'"
518 + enckey + "') password, privilege from PORTAL_USERS";
520 connection.query(selectUsers, function(err, rows) {
522 connection.release();
524 resultObj = {code:'error', msg:'Unable to SELECT users Error: '+err};
528 if ( rows.length > 0 )
530 console.log(JSON.stringify(rows));
531 res.render('user/list',
535 privilege:privilegeObj,
536 header:process.env.MAIN_MENU
541 res.render("user/list",
546 msg:'Unexpected no rows returned from database.',
547 privilege:privilegeObj },
548 header:process.env.MAIN_MENU
555 res.render("user/list",
560 msg:'Unexpected no rows returned from database. ' + String(err),
561 privilege:privilegeObj },header:process.env.MAIN_MENU
566 }); // end getConnection
569 exports.listSLA = function(req,res,resultObj){
571 var privilegeObj = req.session.loggedInAdmin;
573 pool.getConnection(function(err,connection) {
576 console.error( String(err) ); // ALARM
577 res.render("pages/err", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
581 // Need DB lookup logic here
582 connection.query("SELECT module,rpc,version,mode,active,graph FROM SVC_LOGIC", function(err, rows) {
584 connection.release();
586 res.render("pages/err", {result:{code:'error',msg:'Database Error: '+ String(err)},header:process.env.MAIN_MENU});
590 res.render("sla/list", {rows:rows, result:resultObj, privilege:privilegeObj, header:process.env.MAIN_MENU} );
594 }); // end getConnection
597 exports.executeSQL = function(sql,req,res,callback){
601 pool.getConnection(function(err,connection) {
604 console.error( String(err) ); // ALARM
605 callback(err, 'Unable to get database connection.' + err);
609 connection.query(sql, function(err,result){
610 connection.release();
612 callback(err,'Database operation failed. ' + err );
616 console.log('affectedRows='+result.affectedRows);
617 callback(null, result.affectedRows);
620 }); // end getConnection
624 // gamma - deleteParameter
625 exports.deleteParameter = function(req,res,callback){
627 var sql = "DELETE FROM PARAMETERS WHERE name='" + req.query.name + "'";
631 pool.getConnection(function(err,connection) {
634 console.log( String(err) ); // ALARM
635 callback(err, 'Unable to get database connection.' + err);
638 connection.query(sql, function(err,result){
639 connection.release();
641 console.log('Update failed. ' + err );
642 callback(err,'Update failed. ' + err );
649 }); // end getConnection
653 exports.getTable = function(req,res,sql,rdestination,resultObj,privilegeObj){
655 console.log('SQL:'+sql);
657 pool.getConnection(function(err,connection) {
660 console.error( String(err) ); // ALARM
661 res.render("pages/err", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
664 connection.query(sql,function(err, rows)
666 connection.release();
668 res.render(rdestination, {result:{code:'error',msg:'Database Error: '+ String(err)},header:process.env.MAIN_MENU});
672 res.render(rdestination, { rows: rows, result:resultObj, privilege:privilegeObj,header:process.env.MAIN_MENU } );
676 }); // end getConnection
679 exports.getMetaTable = function(req,res,sql,rdestination,resultObj,privilegeObj){
681 console.log('SQL:'+ sql);
685 var vtables = properties.viewTables;
687 for ( var i in vtables ) {
688 v_tables.push(vtables[i]);
691 pool.getConnection(function(err,connection) {
694 console.error( String(err) ); // ALARM
695 res.render("pages/err", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
698 connection.query(sql,function(err, rows, fields)
700 console.log('rows:' + JSON.stringify(rows,null,2));
701 // http://stackoverflow.com/questions/14528385/how-to-convert-json-object-to-javascript-array
702 //logger.debug(Object.keys(rows[0]).map(function(v) { return rows[0][v]; }));
703 for ( var i in rows ){
704 rdata.push(Object.keys(rows[i]).map(function(v) { return rows[i][v]; }));
705 //logger.debug(Object.keys(rows[i]).map(function(v) { return rows[i][v]; }));
706 //logger.debug([i, rows[i]]);
708 for ( var x in rdata ){
709 for ( var j in rdata[x] ){
710 console.log('rdata[' + x + ']: ' + rdata[x][j]);
713 console.log('rdata:' + rdata[0]);
714 console.log('fields:' + JSON.stringify(fields,null,2));
715 connection.release();
717 res.render(rdestination, {result:{code:'error',msg:'Database Error: '+ String(err)},header:process.env.MAIN_MENU});
721 res.render(rdestination, { displayTable:true, vtables:v_tables, rows:rdata, fields:fields, result:resultObj, privilege:privilegeObj, header:process.env.MAIN_MENU } );
725 }); // end getConnection
728 exports.getVnfProfile = function(req,res,resultObj,privilegeObj){
730 pool.getConnection(function(err,connection)
733 console.error( String(err) ); // ALARM
734 res.render("pages/err", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
737 var sql = "SELECT vnf_type,availability_zone_count,equipment_role FROM VNF_PROFILE ORDER BY VNF_TYPE";
739 connection.query(sql, function(err, rows)
741 connection.release();
743 res.render("mobility/vnfProfile", {result:{code:'error',msg:'Database Error: '+ String(err)},header:process.env.MAIN_MENU});
747 console.log('render vnfProfile');
748 res.render('mobility/vnfProfile', { rows: rows, result:resultObj, privilege:privilegeObj,header:process.env.MAIN_MENU } );
752 }); // end getConnection
756 exports.getVnfPreloadData = function(req,res,dbtable,callback){
758 pool.getConnection(function(err,connection) {
761 console.error( String(err) ); // ALARM
762 callback(err, 'Unable to get database connection.' + err);
766 // Need DB lookup logic here
767 connection.query("SELECT preload_data FROM " + dbtable + " WHERE id="
768 + req.query.id, function(err, rows)
770 connection.release();
776 var buffer = rows[0].preload_data;
777 var decode_buffer = decodeURI(buffer);
778 var content = JSON.parse(decode_buffer);
779 callback(null,content);
783 }); // end getConnection
788 exports.getVnfNetworkData = function(req,res,resultObj,privilegeObj)
790 pool.getConnection(function(err,connection)
793 console.error( String(err) ); // ALARM
794 res.render("pages/err",
795 {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
798 // Need DB lookup logic here
799 var sql = "SELECT id,svc_request_id,svc_action,status,filename,ts,preload_data FROM PRE_LOAD_VNF_NETWORK_DATA ORDER BY id";
801 connection.query(sql, function(err, rows)
803 var msgArray = new Array();
804 connection.release();
806 msgArray = 'Database Error: '+ String(err);
807 res.render("mobility/vnfPreloadNetworkData", {
808 result:{code:'error',msg:msgArray},
809 privilege:privilegeObj,
810 preloadImportDirectory: properties.preloadImportDirectory,
811 header:process.env.MAIN_MENU
817 for( r=0; r<rows.length; r++)
820 rowObj.row = rows[r];
821 if ( rows[r].filename.length > 0 )
824 var buffer = rows[r].preload_data;
825 var decode_buffer = decodeURI(buffer);
826 var filecontent = JSON.parse(decode_buffer);
827 rowObj.filecontent = filecontent;
828 rowObj.network_name = filecontent.input["network-topology-information"]["network-topology-identifier"]["network-name"];
829 rowObj.network_type = filecontent.input["network-topology-information"]["network-topology-identifier"]["network-type"];
832 msgArray.push('File ' + rows[r].filename + ' has invalid JSON. Error:' + error);
836 rowObj.filecontent = '';
838 retData.push(rowObj);
840 if(msgArray.length>0){
841 resultObj.code = 'failure';
842 resultObj.msg = msgArray;
844 res.render('mobility/vnfPreloadNetworkData', {
847 privilege:privilegeObj,
848 preloadImportDirectory: properties.preloadImportDirectory,
849 header:process.env.MAIN_MENU
854 }); // end getConnection
857 exports.getVnfData = function(req,res,resultObj,privilegeObj)
859 pool.getConnection(function(err,connection)
862 console.error( String(err) ); // ALARM
863 res.render("pages/err", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
866 // Need DB lookup logic here
867 var sql = "SELECT id,svc_request_id,svc_action,status,filename,ts,preload_data FROM PRE_LOAD_VNF_DATA ORDER BY id";
869 connection.query(sql,function(err, rows)
871 var msgArray = new Array();
872 connection.release();
874 msgArray = 'Database Error: '+ String(err);
875 res.render("mobility/vnfPreloadData", {
876 result:{code:'error',msg:msgArray},
877 privilege:privilegeObj,
878 preloadImportDirectory: properties.preloadImportDirectory,
879 header:process.env.MAIN_MENU
885 for( r=0; r<rows.length; r++)
888 rowObj.row = rows[r];
889 if ( rows[r].filename.length > 0 )
892 var buffer = rows[r].preload_data;
893 var s_buffer = decodeURI(buffer);
894 var filecontent = JSON.parse(s_buffer);
895 rowObj.filecontent = filecontent;
896 rowObj.vnf_name = filecontent.input["vnf-topology-information"]["vnf-topology-identifier"]["vnf-name"];
897 rowObj.vnf_type = filecontent.input["vnf-topology-information"]["vnf-topology-identifier"]["vnf-type"];
900 msgArray.push('File ' + rows[r].filename + ' has invalid JSON. Error:' + error);
904 rowObj.filecontent = '';
906 retData.push(rowObj);
908 if(msgArray.length>0){
909 resultObj.code = 'failure';
910 resultObj.msg = msgArray;
912 res.render('mobility/vnfPreloadData',{
913 retData:retData, result:resultObj,
914 privilege:privilegeObj,
915 header:process.env.MAIN_MENU,
916 preloadImportDirectory: properties.preloadImportDirectory
921 }); // end getConnection
925 exports.findAdminUser = function(email,res,callback) {
929 pool.getConnection(function(err,connection) {
931 console.error( String(err) ); // ALARM
932 res.render("pages/login", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
936 // Need DB lookup logic here
937 connection.query("SELECT email, AES_DECRYPT(password, '" + enckey + "') password, privilege FROM PORTAL_USERS WHERE email='" + email + "'", function(err, rows) {
939 connection.release();
941 if ( rows.length > 0 )
943 rows.forEach(function(row){
946 "password" : row.password,
947 "privilege" : row.privilege };
952 console.log("no rows returned");
953 res.render("pages/login", {result:{code:'error', msg:'User is not in database.'},header:process.env.MAIN_MENU});
957 res.render("pages/err", {result:{code:'error',msg:'Unexpected no rows returned from database. '+ String(err)},header:process.env.MAIN_MENU});
961 }); // end getConnection
965 exports.addRow = function(sql,req,res,callback){
969 pool.getConnection(function(err,connection) {
972 console.error( String(err) ); // ALARM
973 callback(err, 'Unable to get database connection.' + err);
976 connection.query(sql, function(err,result){
977 connection.release();
979 console.debug('Database operation failed. ' + err );
980 callback(err,'Database operation failed. ' + err );
984 callback(null, result.affectedRows);
987 }); // end getConnection
992 exports.addVnfProfile = function(row,res,callback){
996 if ( row.length < 3 )
998 console.log('Row [' + row + '] does not have enough fields.');
999 callback(null, 'Row [' + row + '] does not have enough fields.');
1003 sqlInsert = "INSERT INTO VNF_PROFILE ("
1004 + "vnf_type,availability_zone_count,equipment_role) VALUES ("
1005 + "'" + row[0] + "',"
1007 + ",'" + row[2] + "')";
1009 console.log('SQL='+sqlInsert);
1011 pool.getConnection(function(err,connection) {
1014 console.log( String(err) ); // ALARM
1015 callback(err, 'Unable to get database connection.');
1018 connection.query(sqlInsert, function(err,result){
1019 connection.release();
1021 console.log('Row [' + row + '] failed to insert. ' + err );
1022 callback(null,'Row [' + row + '] failed to insert. ' + err );
1029 }); // end getConnection
1033 // Add to SVC_LOGIC table
1034 exports.addDG = function(_module, version, rpc, mode, xmlfile, req,res){
1036 var privilegeObj = req.session.loggedInAdmin;
1039 pool.getConnection(function(err,connection) {
1041 console.error( String(err) ); // ALARM
1042 res.render("pages/err", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
1055 //logger.debug( JSON.stringify(post));
1057 //connection.query(sqlRequest, function(err,result){
1058 connection.query('INSERT INTO SVC_LOGIC SET ?', post, function(err,result){
1061 // Need DB lookup logic here
1062 connection.query("SELECT module,rpc,version,mode,active,graph FROM SVC_LOGIC", function(err, rows) {
1065 if ( rows.length > 0 )
1067 res.render('sla/list', { rows: rows, result:{code:'',msg:''}, privilege:privilegeObj,header:process.env.MAIN_MENU } );
1070 console.log("no rows returned");
1071 res.render("pages/home");
1075 connection.on('error', function(err){
1076 connection.release();
1077 console.log(500, "An error has occurred -- " + err);
1078 res.render("pages/home");
1083 connection.release();
1085 //connection.query('INSERT INTO SVC_LOGIC SET ?', post, function(err,result){
1087 //logger.debug('inserted rows');
1091 //res.render('pages/home');
1095 }); // end of getConnection
1098 exports.activate = function(req,res,_module,rpc,version,mode,callback){
1100 var sql = "UPDATE SVC_LOGIC SET active=\'Y\' WHERE module=\'"
1101 + _module + "' AND rpc=\'"
1102 + rpc + "' AND version=\'"
1103 + version + "' AND mode=\'"
1106 console.log('SQL='+sql);
1108 pool.getConnection(function(err,connection) {
1111 console.error( String(err) ); // ALARM
1112 callback(err, 'Unable to get database connection.' + err);
1116 connection.query(sql, function(err,result){
1118 connection.release();
1120 callback(err, 'Unable to get database connection.' + err);
1127 }); // end getConnection
1131 exports.deactivate = function(req,res,_module,rpc,version,mode,callback){
1133 var sql = "UPDATE SVC_LOGIC SET active=\'N\' WHERE module=\'"
1134 + _module + "' AND rpc=\'"
1135 + rpc + "' AND version=\'"
1136 + version + "' AND mode=\'"
1139 console.log('SQL='+sql);
1141 pool.getConnection(function(err,connection) {
1144 console.error( String(err) ); // ALARM
1145 callback(err, 'Unable to get database connection.' + err);
1149 connection.query(sql, function(err,result){
1151 connection.release();
1153 callback(err, 'Unable to get database connection.' + err);
1160 }); // end getConnection
1163 exports.global_deactivate = function(req,res,_module,rpc,mode,callback){
1165 var sql = "UPDATE SVC_LOGIC SET active=\'N\' WHERE module=\'"
1166 + _module + "' AND rpc=\'"
1167 + rpc + "' AND mode=\'"
1171 pool.getConnection(function(err,connection) {
1174 callback(err, 'Unable to get database connection.' + err);
1178 connection.query(sql, function(err,result){
1180 connection.release();
1189 }); // end getConnection
1193 exports.deleteDG = function(req,res,_module,rpc,version,mode,callback){
1195 var sql = "DELETE FROM SVC_LOGIC WHERE module=\'"
1196 + _module + "' AND rpc=\'"
1197 + rpc + "' AND version=\'"
1198 + version + "' AND mode=\'"
1201 console.log('SQL='+sql);
1203 pool.getConnection(function(err,connection) {
1206 console.error( String(err) ); // ALARM
1207 callback(err, 'Unable to get database connection.' + err);
1211 connection.query(sql, function(err,result){
1213 connection.release();
1215 callback(err, 'Unable to get database connection.' + err);
1222 }); // end getConnection
1227 function padLeft(nr, n, str){
1228 return Array(n-String(nr).length+1).join(str||'0')+nr;