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 pool.getConnection(function(err,connection){
267 console.error( String(err) ); // ALARM
268 res.render("pages/signup", {result:{code:'error', msg:"Unable to get database connection. " + String(err)},header:process.env.MAIN_MENU});
271 //var sql = "SELECT AES_DECRYPT(password, '" + enckey + "') password FROM PORTAL_USERS";
272 var sql = "SELECT email FROM PORTAL_USERS WHERE email='" + req.body.nf_email + "'";
276 connection.query(sql, function(err,result){
278 connection.release();
279 res.render("pages/signup", {result:{code:'error', msg:"Unable to get database connection. " + String(err)},header:process.env.MAIN_MENU});
282 if (result.length == 1 || result.length > 1)
284 connection.release();
285 res.render("pages/signup", {result:{code:'error', msg:'User Information already exists.'},header:process.env.MAIN_MENU});
289 sql = "INSERT INTO PORTAL_USERS (email,password,privilege) VALUES ("
290 +"'"+ req.body.nf_email + "',"
291 + "AES_ENCRYPT('" + req.body.nf_password + "','" + enckey + "'),"
296 connection.query(sql, function(err,result){
297 connection.release();
300 res.render("pages/signup", {result:{ code:'error', msg:String(err) },header:process.env.MAIN_MENU});;
303 res.render('pages/signup', {result:{code:'success', msg:'User created. Please login.'},header:process.env.MAIN_MENU});
311 exports.deleteUser = function(req,res){
314 var resultObj = { code:'', msg:'' };
315 var privilegeObj = req.session.loggedInAdmin;
317 pool.getConnection(function(err,connection) {
319 console.error( String(err) ); // ALARM
320 res.render("user/list", {rows: null, result:{code:'error', msg:"Unable to get database connection. Error:" + String(err),
321 privilege:privilegeObj },header:process.env.MAIN_MENU});
325 var sqlUpdate = "DELETE FROM PORTAL_USERS WHERE email='" + req.query.email + "'";
327 console.log(sqlUpdate);
329 connection.query(sqlUpdate,function(err,result){
332 resultObj = {code:'error', msg:'Delete of user failed Error: '+ String(err) };
335 // Need DB lookup logic here
336 connection.query("SELECT email,password,privilege FROM PORTAL_USERS", function(err, rows) {
337 connection.release();
339 if ( rows.length > 0 )
341 resultObj = {code:'success',msg:'Successfully deleted user.'};
342 res.render('user/list', { rows: rows, result:resultObj, privilege:privilegeObj,header:process.env.MAIN_MENU } );
345 res.render("user/list", { rows: null, result:{code:'error', msg:'Unexpected no rows returned from database, please try again.',
346 privilege:privilegeObj },header:process.env.MAIN_MENU});
350 res.render("user/list", { rows: null, result:{code:'error', msg:'Unexpected no rows returned from database. Error: ' + String(err),
351 privilege:privilegeObj },header:process.env.MAIN_MENU});
356 }); // end of getConnection
360 exports.addUser = function(req,res){
363 var resultObj = { code:'', msg:'' };
364 var privilegeObj = req.session.loggedInAdmin;
366 pool.getConnection(function(err,connection) {
368 console.error( String(err) ); // ALARM
369 res.render("user/list", {rows: null, result:{code:'error', msg:"Unable to get database connection. "+ String(err),
370 privilege:privilegeObj },header:process.env.MAIN_MENU});
374 if( req.body.nf_privilege == "admin" ){
376 }else if(req.body.nf_privilege == 'readonly'){
383 //connection.query(sqlRequest, function(err,result){
384 var sqlUpdate = "INSERT INTO PORTAL_USERS (email, password, privilege) VALUES ("
385 +"'"+ req.body.nf_email + "',"
386 + "AES_ENCRYPT('" + req.body.nf_password + "','" + enckey + "'),"
387 +"'"+ char_priv + "')";
389 console.log(sqlUpdate);
391 connection.query(sqlUpdate,function(err,result){
394 resultObj = {code:'error', msg:'Add of user failed Error: '+err};
397 // Need DB lookup logic here
398 connection.query("SELECT email,AES_DECRYPT(password, '" + enckey + "') password,privilege FROM PORTAL_USERS", function(err, rows) {
400 connection.release();
402 if ( rows.length > 0 )
404 resultObj = {code:'success',msg:'Successfully added user.'};
405 res.render('user/list', { rows: rows, result:resultObj, privilege:privilegeObj,header:process.env.MAIN_MENU } );
408 res.render("user/list", {rows: null, result:{code:'error', msg:'Unexpected no rows returned from database, please try again.',
409 privilege:privilegeObj },header:process.env.MAIN_MENU});
413 res.render("user/list", {rows: null, result:{code:'error', msg:'Unexpected no rows returned from database. Error: '+ err ,
414 privilege:privilegeObj },header:process.env.MAIN_MENU});
420 }); // end of getConnection
424 exports.updateUser= function(req,res){
427 var resultObj = { code:'', msg:'' };
428 var privilegeObj = req.session.loggedInAdmin;
430 pool.getConnection(function(err,connection) {
433 console.error( String(err) ); // ALARM
434 res.render("user/list", {rows: null, result:{code:'error', msg:"Unable to get database connection. " + String(err),
435 privilege:privilegeObj },header:process.env.MAIN_MENU});
439 if( req.body.uf_privilege == "admin" ){
441 }else if(req.body.uf_privilege == 'readonly'){
448 //connection.query(sqlRequest, function(err,result){
449 var sqlUpdate = "UPDATE PORTAL_USERS SET "
450 + "email = '" + req.body.uf_email + "',"
451 + "password = " + "AES_ENCRYPT('" + req.body.uf_password + "','" + enckey + "'), "
452 + "privilege = '"+ char_priv + "'"
453 + " WHERE email = '" + req.body.uf_key_email + "'";
455 console.log(sqlUpdate);
457 connection.query(sqlUpdate,function(err,result){
460 resultObj = {code:'error', msg:'Update of user failed Error: '+err};
463 // Need DB lookup logic here
464 connection.query("SELECT email, AES_DECRYPT(password,'" + enckey + "') password, privilege FROM PORTAL_USERS", function(err, rows) {
465 connection.release();
467 if ( rows.length > 0 )
469 resultObj = {code:'success',msg:'Successfully updated user.'};
470 res.render('user/list', { rows: rows, result:resultObj, privilege:privilegeObj,header:process.env.MAIN_MENU} );
473 res.render("user/list", {rows: null, result:{ code:'error', msg:'Unexpected no rows returned from database.',
474 privilege:privilegeObj },header:process.env.MAIN_MENU});
478 res.render("user/list", {rows: null, result:{code:'error', msg:'Unexpected no rows returned from database. ' + String(err),
479 privilege:privilegeObj },header:process.env.MAIN_MENU});
484 }); // end of getConnection
487 exports.listUsers = function(req,res,resultObj){
489 var privilegeObj = req.session.loggedInAdmin;
491 pool.getConnection(function(err,connection) {
494 console.error( String(err) ); // ALARM
495 res.render("pages/list", {rows: null, result:{code:'error', msg:"Unable to get database connection. " + String(err),
496 privilege:privilegeObj },header:process.env.MAIN_MENU});
500 // Need DB lookup logic here
501 var selectUsers = "SELECT email, AES_DECRYPT(password,'" + enckey + "') password, privilege from PORTAL_USERS";
502 console.log(selectUsers);
503 connection.query(selectUsers, function(err, rows) {
505 connection.release();
507 resultObj = {code:'error', msg:'Unable to SELECT users Error: '+err};
511 if ( rows.length > 0 )
513 console.log(JSON.stringify(rows));
514 res.render('user/list', { rows: rows, result:resultObj, privilege:privilegeObj,header:process.env.MAIN_MENU });
518 res.render("user/list", {rows: null, result:{code:'error', msg:'Unexpected no rows returned from database.',
519 privilege:privilegeObj },header:process.env.MAIN_MENU});
523 res.render("user/list", {rows: null, result:{code:'error', msg:'Unexpected no rows returned from database. ' + String(err),
524 privilege:privilegeObj },header:process.env.MAIN_MENU});
528 }); // end getConnection
531 exports.listSLA = function(req,res,resultObj){
533 var privilegeObj = req.session.loggedInAdmin;
535 pool.getConnection(function(err,connection) {
538 console.error( String(err) ); // ALARM
539 res.render("pages/err", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
543 // Need DB lookup logic here
544 connection.query("SELECT module,rpc,version,mode,active,graph FROM SVC_LOGIC", function(err, rows) {
546 connection.release();
548 res.render("pages/err", {result:{code:'error',msg:'Database Error: '+ String(err)},header:process.env.MAIN_MENU});
552 res.render("sla/list", {rows:rows, result:resultObj, privilege:privilegeObj, header:process.env.MAIN_MENU} );
556 }); // end getConnection
559 exports.executeSQL = function(sql,req,res,callback){
563 pool.getConnection(function(err,connection) {
566 console.error( String(err) ); // ALARM
567 callback(err, 'Unable to get database connection.' + err);
571 connection.query(sql, function(err,result){
572 connection.release();
574 callback(err,'Database operation failed. ' + err );
578 console.log('affectedRows='+result.affectedRows);
579 callback(null, result.affectedRows);
582 }); // end getConnection
586 // gamma - deleteParameter
587 exports.deleteParameter = function(req,res,callback){
589 var sql = "DELETE FROM PARAMETERS WHERE name='" + req.query.name + "'";
593 pool.getConnection(function(err,connection) {
596 console.log( String(err) ); // ALARM
597 callback(err, 'Unable to get database connection.' + err);
600 connection.query(sql, function(err,result){
601 connection.release();
603 console.log('Update failed. ' + err );
604 callback(err,'Update failed. ' + err );
611 }); // end getConnection
615 exports.getTable = function(req,res,sql,rdestination,resultObj,privilegeObj){
617 console.log('SQL:'+sql);
619 pool.getConnection(function(err,connection) {
622 console.error( String(err) ); // ALARM
623 res.render("pages/err", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
626 connection.query(sql,function(err, rows)
628 connection.release();
630 res.render(rdestination, {result:{code:'error',msg:'Database Error: '+ String(err)},header:process.env.MAIN_MENU});
634 res.render(rdestination, { rows: rows, result:resultObj, privilege:privilegeObj,header:process.env.MAIN_MENU } );
638 }); // end getConnection
641 exports.getMetaTable = function(req,res,sql,rdestination,resultObj,privilegeObj){
643 console.log('SQL:'+ sql);
647 var vtables = properties.viewTables;
649 for ( var i in vtables ) {
650 v_tables.push(vtables[i]);
653 pool.getConnection(function(err,connection) {
656 console.error( String(err) ); // ALARM
657 res.render("pages/err", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
660 connection.query(sql,function(err, rows, fields)
662 console.log('rows:' + JSON.stringify(rows,null,2));
663 // http://stackoverflow.com/questions/14528385/how-to-convert-json-object-to-javascript-array
664 //logger.debug(Object.keys(rows[0]).map(function(v) { return rows[0][v]; }));
665 for ( var i in rows ){
666 rdata.push(Object.keys(rows[i]).map(function(v) { return rows[i][v]; }));
667 //logger.debug(Object.keys(rows[i]).map(function(v) { return rows[i][v]; }));
668 //logger.debug([i, rows[i]]);
670 for ( var x in rdata ){
671 for ( var j in rdata[x] ){
672 console.log('rdata[' + x + ']: ' + rdata[x][j]);
675 console.log('rdata:' + rdata[0]);
676 console.log('fields:' + JSON.stringify(fields,null,2));
677 connection.release();
679 res.render(rdestination, {result:{code:'error',msg:'Database Error: '+ String(err)},header:process.env.MAIN_MENU});
683 res.render(rdestination, { displayTable:true, vtables:v_tables, rows:rdata, fields:fields, result:resultObj, privilege:privilegeObj, header:process.env.MAIN_MENU } );
687 }); // end getConnection
690 exports.getVnfProfile = function(req,res,resultObj,privilegeObj){
692 pool.getConnection(function(err,connection) {
695 console.error( String(err) ); // ALARM
696 res.render("pages/err", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
700 connection.query("SELECT vnf_type,availability_zone_count,equipment_role "
701 + "FROM VNF_PROFILE ORDER BY VNF_TYPE", function(err, rows)
703 connection.release();
705 res.render("mobility/vnfProfile", {result:{code:'error',msg:'Database Error: '+ String(err)},header:process.env.MAIN_MENU});
709 res.render('mobility/vnfProfile', { rows: rows, result:resultObj, privilege:privilegeObj,header:process.env.MAIN_MENU } );
713 console.log('after query');
714 }); // end getConnection
718 exports.getVnfPreloadData = function(req,res,dbtable,callback){
720 pool.getConnection(function(err,connection) {
723 console.error( String(err) ); // ALARM
724 callback(err, 'Unable to get database connection.' + err);
728 // Need DB lookup logic here
729 connection.query("SELECT preload_data FROM " + dbtable + " WHERE id="
730 + req.query.id, function(err, rows)
732 connection.release();
738 var buffer = rows[0].preload_data;
739 var decode_buffer = decodeURI(buffer);
740 var content = JSON.parse(decode_buffer);
741 callback(null,content);
745 }); // end getConnection
750 exports.getVnfNetworkData = function(req,res,resultObj,privilegeObj){
753 pool.getConnection(function(err,connection) {
756 console.error( String(err) ); // ALARM
757 res.render("pages/err", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
761 // Need DB lookup logic here
762 connection.query("SELECT id,svc_request_id,svc_action,status,filename,ts,preload_data "
763 + "FROM PRE_LOAD_VNF_NETWORK_DATA ORDER BY id", function(err, rows)
765 var msgArray = new Array();
767 connection.release();
769 msgArray = 'Database Error: '+ String(err);
770 res.render("mobility/vnfPreloadNetworkData", {
771 result:{code:'error',msg:msgArray},
772 preloadImportDirectory: properties.preloadImportDirectory,
773 header:process.env.MAIN_MENU
779 for( r=0; r<rows.length; r++)
782 rowObj.row = rows[r];
783 if ( rows[r].filename.length > 0 )
786 var buffer = rows[r].preload_data;
787 var decode_buffer = decodeURI(buffer);
788 var filecontent = JSON.parse(decode_buffer);
789 rowObj.filecontent = filecontent;
790 rowObj.network_name = filecontent.input["network-topology-information"]["network-topology-identifier"]["network-name"];
791 rowObj.network_type = filecontent.input["network-topology-information"]["network-topology-identifier"]["network-type"];
794 msgArray.push('File ' + rows[r].filename + ' has invalid JSON. Error:' + error);
798 rowObj.filecontent = '';
800 retData.push(rowObj);
802 if(msgArray.length>0){
803 resultObj.code = 'failure';
804 resultObj.msg = msgArray;
806 res.render('mobility/vnfPreloadNetworkData', {
809 privilege:privilegeObj,
810 preloadImportDirectory: properties.preloadImportDirectory,
811 header:process.env.MAIN_MENU
816 }); // end getConnection
819 exports.getVnfData = function(req,res,resultObj,privilegeObj){
822 pool.getConnection(function(err,connection) {
825 console.error( String(err) ); // ALARM
826 res.render("pages/err", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
830 // Need DB lookup logic here
831 connection.query("SELECT id,svc_request_id,svc_action,status,filename,ts,preload_data "
832 + "FROM PRE_LOAD_VNF_DATA ORDER BY id", function(err, rows)
834 var msgArray = new Array();
836 connection.release();
838 msgArray = 'Database Error: '+ String(err);
839 res.render("mobility/vnfPreloadData", {
840 result:{code:'error',msg:msgArray},
841 preloadImportDirectory: properties.preloadImportDirectory,
842 header:process.env.MAIN_MENU
848 for( r=0; r<rows.length; r++)
851 rowObj.row = rows[r];
852 if ( rows[r].filename.length > 0 )
855 var buffer = rows[r].preload_data;
856 var s_buffer = decodeURI(buffer);
857 var filecontent = JSON.parse(s_buffer);
858 rowObj.filecontent = filecontent;
859 rowObj.vnf_name = filecontent.input["vnf-topology-information"]["vnf-topology-identifier"]["vnf-name"];
860 rowObj.vnf_type = filecontent.input["vnf-topology-information"]["vnf-topology-identifier"]["vnf-type"];
863 msgArray.push('File ' + rows[r].filename + ' has invalid JSON. Error:' + error);
867 rowObj.filecontent = '';
869 retData.push(rowObj);
871 if(msgArray.length>0){
872 resultObj.code = 'failure';
873 resultObj.msg = msgArray;
875 res.render('mobility/vnfPreloadData',{
876 retData:retData, result:resultObj,
877 privilege:privilegeObj,
878 header:process.env.MAIN_MENU,
879 preloadImportDirectory: properties.preloadImportDirectory
884 }); // end getConnection
888 exports.findAdminUser = function(email,res,callback) {
892 pool.getConnection(function(err,connection) {
894 console.error( String(err) ); // ALARM
895 res.render("pages/login", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
899 // Need DB lookup logic here
900 connection.query("SELECT email, AES_DECRYPT(password, '" + enckey + "') password, privilege FROM PORTAL_USERS WHERE email='" + email + "'", function(err, rows) {
902 connection.release();
904 if ( rows.length > 0 )
906 rows.forEach(function(row){
909 "password" : row.password,
910 "privilege" : row.privilege };
915 console.log("no rows returned");
916 res.render("pages/login", {result:{code:'error', msg:'User is not in database.'},header:process.env.MAIN_MENU});
920 res.render("pages/err", {result:{code:'error',msg:'Unexpected no rows returned from database. '+ String(err)},header:process.env.MAIN_MENU});
924 }); // end getConnection
928 exports.addRow = function(sql,req,res,callback){
932 pool.getConnection(function(err,connection) {
935 console.error( String(err) ); // ALARM
936 callback(err, 'Unable to get database connection.' + err);
940 connection.query(sql, function(err,result){
941 connection.release();
943 console.debug('Database operation failed. ' + err );
944 callback(err,'Database operation failed. ' + err );
948 callback(null, result.affectedRows);
951 }); // end getConnection
956 exports.addVnfProfile = function(row,res,callback){
960 if ( row.length < 3 )
962 console.log('Row [' + row + '] does not have enough fields.');
963 callback(null, 'Row [' + row + '] does not have enough fields.');
967 sqlInsert = "INSERT INTO VNF_PROFILE ("
968 + "vnf_type,availability_zone_count,equipment_role) VALUES ("
969 + "'" + row[0] + "',"
971 + ",'" + row[2] + "')";
973 console.log('SQL='+sqlInsert);
975 pool.getConnection(function(err,connection) {
978 console.log( String(err) ); // ALARM
979 callback(err, 'Unable to get database connection.');
982 connection.query(sqlInsert, function(err,result){
983 connection.release();
985 console.log('Row [' + row + '] failed to insert. ' + err );
986 callback(null,'Row [' + row + '] failed to insert. ' + err );
993 }); // end getConnection
997 // Add to SVC_LOGIC table
998 exports.addDG = function(_module, version, rpc, mode, xmlfile, req,res){
1000 var privilegeObj = req.session.loggedInAdmin;
1003 pool.getConnection(function(err,connection) {
1005 console.error( String(err) ); // ALARM
1006 res.render("pages/err", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
1019 //logger.debug( JSON.stringify(post));
1021 //connection.query(sqlRequest, function(err,result){
1022 connection.query('INSERT INTO SVC_LOGIC SET ?', post, function(err,result){
1025 // Need DB lookup logic here
1026 connection.query("SELECT module,rpc,version,mode,active,graph FROM SVC_LOGIC", function(err, rows) {
1029 if ( rows.length > 0 )
1031 res.render('sla/list', { rows: rows, result:{code:'',msg:''}, privilege:privilegeObj,header:process.env.MAIN_MENU } );
1034 console.log("no rows returned");
1035 res.render("pages/home");
1039 connection.on('error', function(err){
1040 connection.release();
1041 console.log(500, "An error has occurred -- " + err);
1042 res.render("pages/home");
1047 connection.release();
1049 //connection.query('INSERT INTO SVC_LOGIC SET ?', post, function(err,result){
1051 //logger.debug('inserted rows');
1055 //res.render('pages/home');
1059 }); // end of getConnection
1062 exports.activate = function(req,res,_module,rpc,version,mode,callback){
1064 var sql = "UPDATE SVC_LOGIC SET active=\'Y\' WHERE module=\'"
1065 + _module + "' AND rpc=\'"
1066 + rpc + "' AND version=\'"
1067 + version + "' AND mode=\'"
1070 console.log('SQL='+sql);
1072 pool.getConnection(function(err,connection) {
1075 console.error( String(err) ); // ALARM
1076 callback(err, 'Unable to get database connection.' + err);
1080 connection.query(sql, function(err,result){
1082 connection.release();
1084 callback(err, 'Unable to get database connection.' + err);
1091 }); // end getConnection
1095 exports.deactivate = function(req,res,_module,rpc,version,mode,callback){
1097 var sql = "UPDATE SVC_LOGIC SET active=\'N\' WHERE module=\'"
1098 + _module + "' AND rpc=\'"
1099 + rpc + "' AND version=\'"
1100 + version + "' AND mode=\'"
1103 console.log('SQL='+sql);
1105 pool.getConnection(function(err,connection) {
1108 console.error( String(err) ); // ALARM
1109 callback(err, 'Unable to get database connection.' + err);
1113 connection.query(sql, function(err,result){
1115 connection.release();
1117 callback(err, 'Unable to get database connection.' + err);
1124 }); // end getConnection
1127 exports.global_deactivate = function(req,res,_module,rpc,mode,callback){
1129 var sql = "UPDATE SVC_LOGIC SET active=\'N\' WHERE module=\'"
1130 + _module + "' AND rpc=\'"
1131 + rpc + "' AND mode=\'"
1135 pool.getConnection(function(err,connection) {
1138 callback(err, 'Unable to get database connection.' + err);
1142 connection.query(sql, function(err,result){
1144 connection.release();
1153 }); // end getConnection
1157 exports.deleteDG = function(req,res,_module,rpc,version,mode,callback){
1159 var sql = "DELETE FROM SVC_LOGIC WHERE module=\'"
1160 + _module + "' AND rpc=\'"
1161 + rpc + "' AND version=\'"
1162 + version + "' AND mode=\'"
1165 console.log('SQL='+sql);
1167 pool.getConnection(function(err,connection) {
1170 console.error( String(err) ); // ALARM
1171 callback(err, 'Unable to get database connection.' + err);
1175 connection.query(sql, function(err,result){
1177 connection.release();
1179 callback(err, 'Unable to get database connection.' + err);
1186 }); // end getConnection
1191 function padLeft(nr, n, str){
1192 return Array(n-String(nr).length+1).join(str||'0')+nr;