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 var tkn = req.csrfToken();
266 var email = req.sanitize(req.body.nf_email);
267 var pswd = req.sanitize(req.body.nf_password);
269 pool.getConnection(function(err,connection)
272 console.error( String(err) ); // ALARM
273 res.render("pages/signup", {csrfToken:tkn,result:{code:'error', msg:"Unable to get database connection. " + String(err)},header:process.env.MAIN_MENU});
276 var sql = "SELECT email FROM PORTAL_USERS WHERE email=" + connection.escape(email);
278 connection.query(sql, function(err,result)
281 connection.release();
282 res.render("pages/signup", {csrfToken:tkn, result:{code:'error', msg:"Unable to get database connection. " + String(err)},header:process.env.MAIN_MENU});
285 if (result.length == 1 || result.length > 1)
287 connection.release();
288 res.render("pages/signup", {csrfToken:tkn, result:{code:'error', msg:'User Information already exists.'},header:process.env.MAIN_MENU});
291 sql = "INSERT INTO PORTAL_USERS (email,password,privilege) VALUES ("
292 + connection.escape(email) + ","
293 + "AES_ENCRYPT(" + connection.escape(pswd) + ",'" + enckey + "'),'A')";
295 connection.query(sql, function(err,result)
297 connection.release();
300 res.render("pages/signup", {csrfToken:tkn, result:{ code:'error', msg:String(err) },header:process.env.MAIN_MENU});;
303 res.render('pages/signup', {csrfToken:tkn, 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) {
320 console.error( String(err) ); // ALARM
321 res.render("user/list", {rows: null, result:{code:'error', msg:"Unable to get database connection. Error:" + String(err),
322 privilege:privilegeObj },header:process.env.MAIN_MENU});
326 var sqlUpdate = "DELETE FROM PORTAL_USERS WHERE email=" + connection.escape(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();
340 if ( rows.length > 0 )
342 resultObj = {code:'success',msg:'Successfully deleted user.'};
343 res.render('user/list', { rows: rows, result:resultObj, privilege:privilegeObj,header:process.env.MAIN_MENU } );
346 res.render("user/list", { rows: null, result:{code:'error', msg:'Unexpected no rows returned from database, please try again.',
347 privilege:privilegeObj },header:process.env.MAIN_MENU});
352 res.render("user/list", { rows: null, result:{code:'error', msg:'Unexpected no rows returned from database. Error: ' + String(err),
353 privilege:privilegeObj },header:process.env.MAIN_MENU});
358 }); // end of getConnection
362 exports.addUser = function(req,res){
365 var resultObj = { code:'', msg:'' };
366 var privilegeObj = req.session.loggedInAdmin;
367 var privilege = req.sanitize(req.body.nf_privilege);
368 var email = req.sanitize(req.body.nf_email);
369 var pswd = req.sanitize(req.body.nf_password);
372 pool.getConnection(function(err,connection)
376 console.error( String(err) ); // ALARM
377 res.render("user/list", {rows: null, result:{code:'error', msg:"Unable to get database connection. "+ String(err),
378 privilege:privilegeObj },header:process.env.MAIN_MENU});
382 if( privilege == "admin" ){
384 }else if(privilege == 'readonly'){
390 //connection.query(sqlRequest, function(err,result)
391 var sqlUpdate = "INSERT INTO PORTAL_USERS (email, password, privilege) VALUES ("
392 + connection.escape(email) + ","
393 + "AES_ENCRYPT(" + connection.escape(pswd) + ",'" + enckey + "'),"
394 + "'" + char_priv + "')";
397 connection.query(sqlUpdate,function(err,result)
400 resultObj = {code:'error', msg:'Add of user failed Error: '+err};
402 // Need DB lookup logic here
403 connection.query("SELECT email,AES_DECRYPT(password, '" + enckey + "') password,privilege FROM PORTAL_USERS", function(err, rows)
405 connection.release();
408 if ( rows.length > 0 )
410 resultObj = {code:'success',msg:'Successfully added user.'};
411 res.render('user/list', { rows: rows, result:resultObj, privilege:privilegeObj,header:process.env.MAIN_MENU } );
414 res.render("user/list", {rows: null, result:{code:'error', msg:'Unexpected no rows returned from database, please try again.',
415 privilege:privilegeObj },header:process.env.MAIN_MENU});
420 res.render("user/list", {rows: null, result:{code:'error', msg:'Unexpected no rows returned from database. Error: '+ err ,
421 privilege:privilegeObj },header:process.env.MAIN_MENU});
426 }); // end of getConnection
430 exports.updateUser= function(req,res){
433 var resultObj = { code:'', msg:'' };
434 var privilegeObj = req.session.loggedInAdmin;
435 var email = req.sanitize(req.body.uf_email);
436 var key_email = req.sanitize(req.body.uf_key_email)
437 var pswd = req.sanitize(req.body.uf_password);
438 var privilege = req.sanitize(req.body.uf_privilege);
440 pool.getConnection(function(err,connection)
443 console.error( String(err) ); // ALARM
444 res.render("user/list", {rows: null, result:{code:'error', msg:"Unable to get database connection. " + String(err),
445 privilege:privilegeObj },header:process.env.MAIN_MENU});
449 if( privilege == "admin" ){
451 }else if(privilege == 'readonly'){
457 var sqlUpdate = "UPDATE PORTAL_USERS SET "
458 + "email = " + connection.escape(email) + ","
459 + "password = " + "AES_ENCRYPT(" + connection.escape(pswd) + ",'" + enckey + "'), "
460 + "privilege = '" + char_priv + "'"
461 + " WHERE email = " + connection.escape(key_email);
463 console.log(sqlUpdate);
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){
600 pool.getConnection(function(err,connection) {
603 console.error( String(err) ); // ALARM
604 callback(err, 'Unable to get database connection.' + err);
607 connection.query(sql, function(err,result){
608 connection.release();
610 callback(err,'Database operation failed. ' + err );
615 console.log('affectedRows='+result.affectedRows);
616 callback(null, result.affectedRows);
620 }); // end getConnection
624 // gamma - deleteParameter
625 exports.deleteParameter = function(req,res,callback){
627 pool.getConnection(function(err,connection) {
630 console.log( String(err) ); // ALARM
631 callback(err, 'Unable to get database connection.' + err);
634 var sql = "DELETE FROM PARAMETERS WHERE name=" + connection.escape(req.query.name);
637 connection.query(sql, function(err,result){
638 connection.release();
640 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) {
928 pool.getConnection(function(err,connection)
932 res.render("pages/err", {result:{code:'error', msg: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=" + connection.escape(email), function(err, rows) {
939 connection.release();
942 res.render("pages/err", {result:{code:'error', msg:err},header:process.env.MAIN_MENU});
945 if ( rows.length > 0 )
947 rows.forEach(function(row){
950 "password" : row.password,
951 "privilege" : row.privilege };
957 res.render("pages/err", {result:{code:'error', msg:'User is not in database.'},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
1032 exports.deleteVnfProfile = function(req,res,callback){
1034 var privilegeObj = req.session.loggedInAdmin;
1037 pool.getConnection(function(err,connection) {
1039 var sql = 'DELETE FROM VNF_PROFILE WHERE vnf_type = ' + connection.escape(req.sanitize(req.query.vnf_type));
1042 console.error( String(err) ); // ALARM
1043 res.render("pages/err", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
1047 //var vt = req.sanitize(req.query.vnf_type);
1048 //var vnf_type = { vnf_type: vt };
1049 //var vnf_type = connection.escape(vt);
1050 //console.log('type='+vnf_type);
1051 //connection.query('DELETE FROM VNF_PROFILE WHERE vnf_type = ?', vnf_type, function(err,result)
1052 connection.query(sql, function(err,result)
1054 connection.release();
1056 callback(err,'Database operation failed. ' + err );
1061 if (result.affectedRows == 0)
1063 callback('No rows deleted.');
1066 console.log('rows deleted: ' + result.affectedRows);
1067 callback(null, result.affectedRows);
1071 }); // end of getConnection
1074 exports.deleteVnfData = function(req,res,callback){
1076 var privilegeObj = req.session.loggedInAdmin;
1079 pool.getConnection(function(err,connection) {
1081 var sql = 'DELETE FROM PRE_LOAD_VNF_DATA WHERE id =' + connection.escape(req.sanitize(req.query.id));
1084 console.error( String(err) ); // ALARM
1085 res.render("pages/err", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
1089 connection.query(sql, function(err,result)
1091 connection.release();
1093 callback(err,'Database operation failed. ' + err );
1098 if (result.affectedRows == 0)
1100 callback('No rows deleted.');
1103 console.log('rows deleted: ' + result.affectedRows);
1104 callback(null, result.affectedRows);
1108 }); // end of getConnection
1111 exports.deleteVnfNetworkData = function(req,res,callback){
1113 var privilegeObj = req.session.loggedInAdmin;
1116 pool.getConnection(function(err,connection) {
1118 var sql = 'DELETE FROM PRE_LOAD_VNF_NETWORK_DATA WHERE id =' + connection.escape(req.sanitize(req.query.id));
1121 console.error( String(err) ); // ALARM
1122 res.render("pages/err", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
1126 connection.query(sql, function(err,result)
1128 connection.release();
1130 callback(err,'Database operation failed. ' + err );
1135 if (result.affectedRows == 0)
1137 callback('No rows deleted.');
1140 console.log('rows deleted: ' + result.affectedRows);
1141 callback(null, result.affectedRows);
1145 }); // end of getConnection
1148 // Add to SVC_LOGIC table
1149 exports.addDG = function(_module, version, rpc, mode, xmlfile, req,res){
1151 var privilegeObj = req.session.loggedInAdmin;
1154 pool.getConnection(function(err,connection) {
1156 console.error( String(err) ); // ALARM
1157 res.render("pages/err", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
1170 //logger.debug( JSON.stringify(post));
1172 //connection.query(sqlRequest, function(err,result){
1173 connection.query('INSERT INTO SVC_LOGIC SET ?', post, function(err,result){
1176 // Need DB lookup logic here
1177 connection.query("SELECT module,rpc,version,mode,active,graph FROM SVC_LOGIC", function(err, rows) {
1180 if ( rows.length > 0 )
1182 res.render('sla/list', { rows: rows, result:{code:'',msg:''}, privilege:privilegeObj,header:process.env.MAIN_MENU } );
1185 console.log("no rows returned");
1186 res.render("pages/home");
1190 connection.on('error', function(err){
1191 connection.release();
1192 console.log(500, "An error has occurred -- " + err);
1193 res.render("pages/home");
1198 connection.release();
1200 //connection.query('INSERT INTO SVC_LOGIC SET ?', post, function(err,result){
1202 //logger.debug('inserted rows');
1206 //res.render('pages/home');
1210 }); // end of getConnection
1213 exports.updatePreloadStatus = function(sql,req,res,_module,rpc,version,mode,callback){
1215 pool.getConnection(function(err,connection) {
1218 console.error( String(err) ); // ALARM
1219 callback(err, 'Unable to get database connection.' + err);
1223 var sql = _sql + " WHERE id = " + connection.escape(req.query.id);
1226 connection.query(sql, function(err,result){
1228 connection.release();
1230 callback(err, 'Unable to get database connection.' + err);
1235 if (result.affectedRows == 0)
1237 callback('Unable to update preload status.');
1240 callback(null, result.affectedRows);
1244 }); // end getConnection
1247 exports.activate = function(req,res,_module,rpc,version,mode,callback){
1249 pool.getConnection(function(err,connection) {
1252 console.error( String(err) ); // ALARM
1253 callback(err, 'Unable to get database connection.' + err);
1257 var sql = "UPDATE SVC_LOGIC SET active=\'Y\' WHERE "
1258 + "module = " + connection.escape(_module) + " AND "
1259 + "rpc = " + connection.escape(rpc) + " AND "
1260 + "version = " + connection.escape(version) + " AND "
1261 + "mode = " + connection.escape(mode);
1263 console.log('SQL='+sql);
1264 connection.query(sql, function(err,result){
1266 connection.release();
1268 callback(err, 'Unable to get database connection.' + err);
1273 if (result.affectedRows == 0)
1275 callback('Unable to activate directed graph.');
1278 console.log('rows deleted: ' + result.affectedRows);
1279 callback(null, result.affectedRows);
1283 }); // end getConnection
1287 exports.deactivate = function(req,res,_module,rpc,version,mode,callback){
1289 pool.getConnection(function(err,connection) {
1292 console.error( String(err) ); // ALARM
1293 callback(err, 'Unable to get database connection.' + err);
1297 var sql = "UPDATE SVC_LOGIC SET active=\'N\' WHERE "
1298 + "module = " + connection.escape(_module) + " AND "
1299 + "rpc = " + connection.escape(rpc) + " AND "
1300 + "version = " + connection.escape(version) + " AND "
1301 + "mode = " + connection.escape(mode);
1303 console.log('SQL='+sql);
1304 connection.query(sql, function(err,result){
1306 connection.release();
1308 callback(err, 'Unable to get database connection.' + err);
1313 if (result.affectedRows == 0)
1315 callback('Unable to deactivate directed graph.');
1318 console.log('rows deleted: ' + result.affectedRows);
1319 callback(null, result.affectedRows);
1323 }); // end getConnection
1326 exports.global_deactivate = function(req,res,_module,rpc,mode,callback){
1328 pool.getConnection(function(err,connection) {
1331 callback(err, 'Unable to get database connection.' + err);
1335 // deactivate all versions
1336 var sql = "UPDATE SVC_LOGIC SET active=\'N\' WHERE "
1337 + "module = " + connection.escape(_module) + " AND "
1338 + "rpc = " + connection.escape(rpc) + " AND "
1339 + "mode = " + connection.escape(mode);
1342 connection.query(sql, function(err,result){
1344 connection.release();
1351 if (result.affectedRows == 0)
1353 callback('Unable to set all versions to deactivate.');
1356 callback(null,result.affectedRows);
1360 }); // end getConnection
1364 exports.deleteDG = function(req,res,_module,rpc,version,mode,callback){
1366 pool.getConnection(function(err,connection) {
1369 console.error( String(err) ); // ALARM
1370 callback(err, 'Unable to get database connection.' + err);
1374 var sql = "DELETE FROM SVC_LOGIC WHERE "
1375 + "module = " + connection.escape(_module) + " AND "
1376 + "rpc = " + connection.escape(rpc) + " AND "
1377 + "version = " + connection.escape(version) + " AND "
1378 + "mode = " + connection.escape(mode);
1381 connection.query(sql, function(err,result){
1383 connection.release();
1385 callback(err, 'Unable to get database connection.' + err);
1390 if (result.affectedRows == 0)
1392 callback('No rows deleted.');
1395 callback(null,result.affectedRows);
1399 }); // end getConnection
1404 function padLeft(nr, n, str){
1405 return Array(n-String(nr).length+1).join(str||'0')+nr;