blob: 34a90c7b64e20692f9cc1e4c06a30969895fc602 [file] [log] [blame]
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){
connection.release();
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)
{
connection.release();
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;
}