| var express = require('express'); |
| var router = express.Router(); |
| var exec = require('child_process').exec; |
| var util = require('util'); |
| var fs = require('fs.extra'); |
| var dbRoutes = require('./dbRoutes'); |
| var csp = require('./csp'); |
| var multer = require('multer'); |
| var bodyParser = require('body-parser'); |
| var sax = require('sax'),strict=true,parser = sax.parser(strict); |
| var async = require('async'); |
| var l_ = require('lodash'); |
| var dateFormat = require('dateformat'); |
| var properties = require(process.env.SDNC_CONFIG_DIR + '/admportal.json'); |
| |
| |
| // pass host, username and password to ODL |
| // target host for ODL request |
| var username = properties.odlUser; |
| var password = properties.odlPasswd; |
| var auth = 'Basic ' + new Buffer(username + ':' + password).toString('base64'); |
| var host = properties.odlHost; |
| var port = properties.odlPort; |
| |
| var header = {'Host': host, 'Authorization': auth, 'Content-Type': 'application/json'}; |
| var options = { |
| host : host, |
| headers : header, |
| port : port, |
| rejectUnauthorized:false, |
| strictSSL: false |
| }; |
| |
| // Connection to OpenDaylight |
| Odl = require('./Odl'); |
| |
| // used for file upload button, retain original file name |
| //router.use(bodyParser()); |
| //router.use(bodyParser.urlencoded({ |
| //extended: true |
| //})); |
| |
| //var upload = multer({ dest: process.cwd() + '/uploads/', rename: function(fieldname,filename){ return filename; } }); |
| |
| // multer 1.1 |
| var storage = multer.diskStorage({ |
| destination: function (req, file, cb) { |
| cb(null, process.cwd() + '/uploads/') |
| }, |
| filename: function (req, file, cb) { |
| cb(null, file.originalname ) |
| } |
| }); |
| |
| var upload = multer({ |
| storage: storage |
| }); |
| |
| |
| |
| |
| // GET |
| router.get('/getVnfData', csp.checkAuth, dbRoutes.checkDB, function(req,res) { |
| dbRoutes.getVnfData(req,res, {code:'', msg:''}, req.session.loggedInAdmin); |
| }); |
| router.get('/getVmNetworks', csp.checkAuth, dbRoutes.checkDB, function(req,res) { |
| dbRoutes.getVmNetworks(req,res, {code:'', msg:''}, req.session.loggedInAdmin); |
| }); |
| router.get('/getVnfProfile', csp.checkAuth, dbRoutes.checkDB, function(req,res) { |
| dbRoutes.getVnfProfile(req,res, {code:'', msg:''}, req.session.loggedInAdmin); |
| }); |
| router.get('/getVnfNetworks', csp.checkAuth, dbRoutes.checkDB, function(req,res) { |
| dbRoutes.getVnfNetworks(req,res, {code:'', msg:''}, req.session.loggedInAdmin); |
| }); |
| router.get('/getVmProfile', csp.checkAuth, dbRoutes.checkDB, function(req,res) { |
| dbRoutes.getVmProfile(req,res, {code:'', msg:''}, req.session.loggedInAdmin); |
| }); |
| //////// |
| router.get('/getVnfNetworkData', csp.checkAuth, dbRoutes.checkDB, function(req,res) { |
| dbRoutes.getVnfNetworkData(req,res, {code:'', msg:''}, req.session.loggedInAdmin); |
| }); |
| |
| router.get('/viewVnfNetworkData', csp.checkAuth, function(req,res) |
| { |
| var privilegeObj = req.session.loggedInAdmin; |
| var resp_msg = ''; |
| var network_name = req.query.network_name; |
| var network_type = req.query.network_type; |
| var tasks = []; |
| |
| tasks.push(function(callback){ |
| Odl.GetPreloadVnfData('/restconf/config/VNF-API:preload-vnfs/vnf-preload-list/' |
| + encodeURIComponent(network_name) + '/' + encodeURIComponent(network_type) + '/', options,res,callback); |
| |
| }); |
| async.series(tasks, function(err,result) |
| { |
| var msgArray = new Array(); |
| if(err){ |
| resp_msg = err; |
| res.render('mobility/displayVnfNetworkData', {result:{code:'failure', msg:resp_msg}, header:process.env.MAIN_MENU}); |
| return; |
| } |
| else{ |
| resp_msg = JSON.stringify(JSON.parse(result[0],null,4)); |
| res.render('mobility/displayVnfNetworkData', {result:{code:'success', msg:JSON.parse(result[0])}, header:process.env.MAIN_MENU}); |
| return; |
| } |
| }); |
| |
| }); |
| |
| router.get('/viewVnfData', csp.checkAuth, function(req,res) |
| { |
| var privilegeObj = req.session.loggedInAdmin; |
| var resp_msg = ''; |
| var vnf_name = req.query.vnf_name; |
| var vnf_type = req.query.vnf_type; |
| var tasks = []; |
| |
| tasks.push(function(callback){ |
| Odl.GetPreloadVnfData('/restconf/config/VNF-API:preload-vnfs/vnf-preload-list/' |
| + encodeURIComponent(vnf_name) + '/' + encodeURIComponent(vnf_type) + '/', options,res,callback); |
| |
| }); |
| async.series(tasks, function(err,result) |
| { |
| var msgArray = new Array(); |
| if(err){ |
| resp_msg = err; |
| res.render('mobility/displayVnfData', {result:{code:'failure', msg:resp_msg}, header:process.env.MAIN_MENU}); |
| return; |
| } |
| else{ |
| resp_msg = JSON.stringify(JSON.parse(result[0],null,4)); |
| res.render('mobility/displayVnfData', {result:{code:'success', msg:JSON.parse(result[0])}, header:process.env.MAIN_MENU}); |
| return; |
| } |
| }); |
| |
| }); |
| |
| router.get('/loadVnfNetworkData', csp.checkAuth, dbRoutes.checkDB, function(req,res) |
| { |
| |
| var privilegeObj = req.session.loggedInAdmin; |
| var msgArray = new Array(); |
| |
| if ( req.query.status != 'pending' ) |
| { |
| msgArray.push("Upload Status must be in 'pending' state."); |
| dbRoutes.getVnfNetworkData(req,res, {code:'failure', msg:msgArray}, privilegeObj); |
| return; |
| } |
| |
| // build request-id |
| var now = new Date(); |
| var df = dateFormat(now,"isoDateTime"); |
| var rnum = Math.floor((Math.random() * 9999) +1); |
| var svc_req_id = req.query.id + "-" + df + "-" + rnum; |
| |
| var tasks = []; |
| |
| // first get the contents of the file from the db |
| tasks.push(function(callback){ |
| dbRoutes.getVnfPreloadData(req,res,"PRE_LOAD_VNF_NETWORK_DATA",callback); |
| }); |
| |
| // then format the request and send it using the arg1 parameter |
| // which is the contents of the file returned from the previous function |
| // call in the tasks array |
| tasks.push(function(arg1,callback){ |
| |
| var s_file = JSON.stringify(arg1); |
| |
| // remove the last two braces, going to add the headers there |
| // will add them back later. |
| s_file = s_file.substring(0, (s_file.length-2)); |
| |
| // add the request-information header |
| s_file = s_file.concat(',"request-information": {"request-action": "PreloadNetworkRequest"}'); |
| |
| // add the sdnc-request-header |
| s_file = s_file.concat(',"sdnc-request-header": {"svc-request-id":"'); |
| s_file = s_file.concat(svc_req_id); |
| s_file = s_file.concat('","svc-action": "reserve"}'); |
| |
| // add the two curly braces at the end that we stripped off |
| s_file = s_file.concat('}}'); |
| |
| Odl.Post('/restconf/operations/VNF-API:preload-network-topology-operation', |
| options,s_file,res,callback); |
| }); |
| |
| // if successful then update the status |
| tasks.push(function(arg1,callback){ |
| dbRoutes.executeSQL("UPDATE PRE_LOAD_VNF_NETWORK_DATA SET status='uploaded',svc_request_id='" |
| + svc_req_id + "',svc_action='reserve' WHERE id="+req.query.id,req,res,callback); |
| }); |
| |
| // use the waterfall method of making calls |
| async.waterfall(tasks, function(err,result) |
| { |
| var msgArray = new Array(); |
| if(err){ |
| msgArray.push("Error posting pre-load data to ODL: "+err); |
| dbRoutes.getVnfNetworkData(req,res, {code:'failure', msg:msgArray}, privilegeObj); |
| return; |
| } |
| else{ |
| msgArray.push('Successfully loaded VNF pre-loaded data.'); |
| dbRoutes.getVnfNetworkData(req,res,{code:'success', msg:msgArray},privilegeObj); |
| return; |
| } |
| }); |
| }); |
| |
| |
| router.get('/loadVnfData', csp.checkAuth, dbRoutes.checkDB, function(req,res) |
| { |
| var privilegeObj = req.session.loggedInAdmin; |
| var full_path_file_name = process.cwd() + "/uploads/" + req.query.filename |
| var msgArray = new Array(); |
| |
| if ( req.query.status != 'pending' ) |
| { |
| msgArray.push("Upload Status must be in 'pending' state."); |
| dbRoutes.getVnfData(req,res, {code:'failure', msg:msgArray}, privilegeObj); |
| return; |
| } |
| |
| // build request-id |
| var now = new Date(); |
| var df = dateFormat(now,"isoDateTime"); |
| var rnum = Math.floor((Math.random() * 9999) +1); |
| var svc_req_id = req.query.id + "-" + df + "-" + rnum; |
| |
| var tasks = []; |
| |
| // first get the contents of the file from the db |
| tasks.push(function(callback){ |
| dbRoutes.getVnfPreloadData(req,res,"PRE_LOAD_VNF_DATA",callback); |
| }); |
| |
| // then format the request and send it using the arg1 parameter |
| // which is the contents of the file returned from the previous function |
| // call in the tasks array |
| tasks.push(function(arg1,callback){ |
| |
| var s1_file = JSON.stringify(arg1); |
| var s_file = decodeURI(s1_file); |
| |
| |
| // remove the last two braces, going to add the headers there |
| // will add them back later. |
| s_file = s_file.substring(0, (s_file.length-2)); |
| |
| // add the request-information header |
| s_file = s_file.concat(',"request-information": {"request-action": "PreloadVNFRequest"}'); |
| |
| // add the sdnc-request-header |
| s_file = s_file.concat(',"sdnc-request-header": {"svc-request-id":"'); |
| s_file = s_file.concat(svc_req_id); |
| s_file = s_file.concat('","svc-action": "reserve"}'); |
| |
| // add the two curly braces at the end that we stripped off |
| s_file = s_file.concat('}}'); |
| |
| Odl.Post('/restconf/operations/VNF-API:preload-vnf-topology-operation', |
| options,s_file,res,callback); |
| }); |
| |
| // if successful then update the status |
| tasks.push(function(arg1,callback){ |
| dbRoutes.executeSQL("UPDATE PRE_LOAD_VNF_DATA SET status='uploaded',svc_request_id='" |
| + svc_req_id + "',svc_action='reserve' WHERE id="+req.query.id,req,res,callback); |
| }); |
| |
| // use the waterfall method of making calls |
| async.waterfall(tasks, function(err,result) |
| { |
| var msgArray = new Array(); |
| if(err){ |
| msgArray.push("Error posting pre-load data to ODL: "+err); |
| dbRoutes.getVnfData(req,res, {code:'failure', msg:msgArray}, privilegeObj); |
| return; |
| } |
| else{ |
| msgArray.push('Successfully loaded VNF pre-loaded data.'); |
| dbRoutes.getVnfData(req,res,{code:'success', msg:msgArray},privilegeObj); |
| return; |
| } |
| }); |
| }); |
| |
| |
| router.get('/deleteVnfNetworkData', csp.checkAuth, dbRoutes.checkDB, function(req,res) { |
| |
| var privilegeObj = req.session.loggedInAdmin; |
| var tasks = []; |
| var sql = 'DELETE FROM PRE_LOAD_VNF_NETWORK_DATA WHERE id=' + req.query.id; |
| |
| // if status is pending, then we do not have to call |
| // ODL, just remove from db |
| if (req.query.status == 'pending'){ |
| tasks.push(function(callback) { |
| dbRoutes.executeSQL(sql,req,res,callback); |
| }); |
| } else { |
| // format the request to ODL |
| var inputString = '{"input":{"network-topology-information":{"network-topology-identifier":{"service-type":"SDN-MOBILITY","network-name": "'; |
| inputString = inputString.concat(req.query.network_name); |
| inputString = inputString.concat('","network-type":"'); |
| inputString = inputString.concat(req.query.network_type); |
| inputString = inputString.concat('"}},'); |
| |
| // add the request-information header |
| inputString = inputString.concat('"request-information": {"request-action": "DeletePreloadNetworkRequest"},'); |
| |
| // add the sdnc-request-header |
| inputString = inputString.concat('"sdnc-request-header": {"svc-request-id":"'); |
| inputString = inputString.concat(req.query.svc_request_id); |
| inputString = inputString.concat('","svc-action": "delete"}}}'); |
| |
| tasks.push(function(callback) { |
| Odl.Post('/restconf/operations/VNF-API:preload-network-topology-operation', |
| options,inputString,res,callback); |
| }); |
| tasks.push(function(callback) { |
| dbRoutes.executeSQL(sql,req,res,callback); |
| }); |
| } |
| async.series(tasks, function(err,result){ |
| |
| var msgArray = new Array(); |
| if(err){ |
| msgArray.push(err); |
| dbRoutes.getVnfNetworkData(req,res,{code:'failure', msg:msgArray},privilegeObj); |
| return; |
| } |
| else { |
| msgArray.push('Row successfully deleted from PRE_LOAD_VNF_NETWORK_DATA table and ODL.'); |
| dbRoutes.getVnfNetworkData(req,res,{code:'success', msg:msgArray},privilegeObj); |
| return; |
| } |
| }); |
| }); |
| |
| |
| router.get('/deleteVnfData', csp.checkAuth, dbRoutes.checkDB, function(req,res) { |
| |
| var privilegeObj = req.session.loggedInAdmin; |
| var tasks = []; |
| var sql = 'DELETE FROM PRE_LOAD_VNF_DATA WHERE id=' + req.query.id; |
| |
| // if status is pending, then we do not have to call |
| // ODL, just remove from db |
| if (req.query.status == 'pending'){ |
| tasks.push(function(callback) { |
| dbRoutes.executeSQL(sql,req,res,callback); |
| }); |
| } else { |
| var inputString = '{"input":{"vnf-topology-information":{"vnf-topology-identifier":{"service-type":"SDN-MOBILITY","vnf-name": "'; |
| inputString = inputString.concat(req.query.vnf_name); |
| inputString = inputString.concat('","vnf-type":"'); |
| inputString = inputString.concat(req.query.vnf_type); |
| inputString = inputString.concat('"}},'); |
| |
| // add the request-information header |
| inputString = inputString.concat('"request-information": {"request-action": "DeletePreloadVNFRequest"},'); |
| |
| // add the request-information header |
| //inputString = inputString.concat('"request-information": {"request-id": "259c0f93-23cf-46ad-84dc-162ea234fff1",'); |
| //inputString = inputString.concat('"source": "ADMINPORTAL",'); |
| //inputString = inputString.concat('"order-version": "1",'); |
| //inputString = inputString.concat('"notification-url": "notused-this would be infrastructure portal",'); |
| //inputString = inputString.concat('"order-number": "1",'); |
| //inputString = inputString.concat('"request-action": "DeletePreloadVNFRequest"},'); |
| |
| // add the sdnc-request-header |
| inputString = inputString.concat('"sdnc-request-header": {"svc-request-id":"'); |
| inputString = inputString.concat(req.query.svc_request_id); |
| inputString = inputString.concat('","svc-action": "delete"}}}'); |
| |
| //inputString = inputString.concat('"sdnc-request-header":{'); |
| //inputString = inputString.concat('"svc-request-id": "2015-01-15T14:34:54.st1101a",'); |
| //inputString = inputString.concat('"svc-notification-url": "not used",'); |
| //inputString = inputString.concat('"svc-action": "delete"}}}'); |
| |
| tasks.push(function(callback) { |
| Odl.Post('/restconf/operations/VNF-API:preload-vnf-topology-operation', |
| options,inputString,res,callback); |
| }); |
| tasks.push(function(callback) { |
| dbRoutes.executeSQL(sql,req,res,callback); |
| }); |
| } |
| async.series(tasks, function(err,result){ |
| |
| var msgArray = new Array(); |
| if(err){ |
| msgArray.push(err); |
| dbRoutes.getVnfData(req,res,{code:'failure', msg:msgArray},privilegeObj); |
| return; |
| } |
| else { |
| msgArray.push('Row successfully deleted from PRE_LOAD_VNF_DATA table and ODL.'); |
| dbRoutes.getVnfData(req,res,{code:'success', msg:msgArray},privilegeObj); |
| return; |
| } |
| }); |
| }); |
| |
| |
| router.get('/deleteVmProfile', csp.checkAuth, dbRoutes.checkDB, function(req,res) { |
| |
| var privilegeObj = req.session.loggedInAdmin; |
| var tasks = []; |
| var sql = ''; |
| |
| sql = "DELETE FROM VM_PROFILE WHERE vnf_type='" + req.query.vnf_type + "'" |
| + " AND vm_type='" + req.query.vm_type + "'"; |
| |
| tasks.push(function(callback) { |
| dbRoutes.executeSQL(sql,req,res,callback); |
| }); |
| async.series(tasks, function(err,result) |
| { |
| var msgArray = new Array(); |
| if(err){ |
| msgArray.push(err); |
| dbRoutes.getVmProfile(req,res,{code:'failure', msg:msgArray},privilegeObj); |
| return; |
| } |
| else { |
| msgArray.push('Row successfully deleted from VM_PROFILE table.'); |
| dbRoutes.getVmProfile(req,res,{code:'success', msg:msgArray},privilegeObj); |
| return; |
| } |
| }); |
| }); |
| |
| |
| router.get('/deleteVnfNetwork', csp.checkAuth, dbRoutes.checkDB, function(req,res) { |
| |
| var privilegeObj = req.session.loggedInAdmin; |
| var tasks = []; |
| var sql = ''; |
| |
| sql = "DELETE FROM VNF_NETWORKS WHERE vnf_type='" + req.query.vnf_type + "'" |
| + " AND network_role='" + req.query.network_role + "'"; |
| |
| tasks.push(function(callback) { |
| dbRoutes.executeSQL(sql,req,res,callback); |
| }); |
| async.series(tasks, function(err,result) |
| { |
| var msgArray = new Array(); |
| if(err){ |
| msgArray.push(err); |
| dbRoutes.getVnfNetwork(req,res,{code:'failure', msg:msgArray},privilegeObj); |
| return; |
| } |
| else { |
| msgArray.push('Row successfully deleted from VNF_NETWORKS table.'); |
| dbRoutes.getVnfNetworks(req,res,{code:'success', msg:msgArray},privilegeObj); |
| return; |
| } |
| }); |
| }); |
| |
| router.get('/deleteVnfProfile', csp.checkAuth, dbRoutes.checkDB, function(req,res) { |
| |
| var privilegeObj = req.session.loggedInAdmin; |
| var tasks = []; |
| var sql = ''; |
| |
| sql = "DELETE FROM VNF_PROFILE WHERE vnf_type='" + req.query.vnf_type + "'"; |
| |
| tasks.push(function(callback) { |
| dbRoutes.executeSQL(sql,req,res,callback); |
| }); |
| async.series(tasks, function(err,result) |
| { |
| var msgArray = new Array(); |
| if(err){ |
| msgArray.push(err); |
| dbRoutes.getVnfProfile(req,res,{code:'failure', msg:msgArray},privilegeObj); |
| return; |
| } |
| else { |
| msgArray.push('Row successfully deleted from VNF_PROFILE table.'); |
| dbRoutes.getVnfProfile(req,res,{code:'success', msg:msgArray},privilegeObj); |
| return; |
| } |
| }); |
| }); |
| |
| router.get('/deleteVmNetwork', csp.checkAuth, dbRoutes.checkDB, function(req,res) { |
| |
| var privilegeObj = req.session.loggedInAdmin; |
| var tasks = []; |
| var sql = ''; |
| |
| sql = "DELETE FROM VM_NETWORKS WHERE vnf_type='" + req.query.vnf_type |
| + "' AND vm_type='" + req.query.vm_type + "' AND network_role='" |
| + req.query.network_role + "'"; |
| |
| tasks.push(function(callback) { |
| dbRoutes.executeSQL(sql,req,res,callback); |
| }); |
| async.series(tasks, function(err,result) |
| { |
| var msgArray = new Array(); |
| if(err){ |
| msgArray.push(err); |
| dbRoutes.getVmNetworks(req,res,{code:'failure', msg:msgArray},privilegeObj); |
| return; |
| } |
| else { |
| msgArray.push('Row successfully deleted from VM_NETWORKS table.'); |
| dbRoutes.getVmNetworks(req,res,{code:'success', msg:msgArray},privilegeObj); |
| return; |
| } |
| }); |
| }); |
| |
| |
| // POST |
| router.post('/addVmProfile', csp.checkAuth, dbRoutes.checkDB, function(req,res){ |
| |
| var privilegeObj = req.session.loggedInAdmin; |
| var tasks = []; |
| var sql; |
| |
| |
| if ( req.body.nf_vm_count.length > 0 ) |
| { |
| sql = "INSERT INTO VM_PROFILE (vnf_type,vm_type,vm_count) VALUES (" |
| + "'" + req.body.nf_vnf_type + "'," |
| + "'" + req.body.nf_vm_type + "'," |
| + req.body.nf_vm_count + ")"; |
| } |
| else |
| { |
| sql = "INSERT INTO VM_PROFILE (vnf_type,vm_type) VALUES (" |
| + "'" + req.body.nf_vnf_type + "'," |
| + "'" + req.body.nf_vm_type + "')"; |
| } |
| |
| |
| console.log("SQL: " + sql); |
| |
| tasks.push( function(callback) { dbRoutes.executeSQL(sql,req,res,callback); } ); |
| async.series(tasks, function(err,result){ |
| var msgArray = new Array(); |
| if(err){ |
| msgArray.push(err); |
| dbRoutes.getVmProfile(req,res,{code:'failure', msg:msgArray},privilegeObj); |
| return; |
| } |
| else { |
| msgArray.push('Successfully added VM Profile'); |
| dbRoutes.getVmProfile(req,res,{code:'success', msg:msgArray},privilegeObj); |
| return; |
| } |
| }); |
| }); |
| |
| |
| router.post('/addVnfNetwork', csp.checkAuth, dbRoutes.checkDB, function(req,res){ |
| |
| var privilegeObj = req.session.loggedInAdmin; |
| var tasks = []; |
| |
| var sql = "INSERT INTO VNF_NETWORKS (vnf_type,network_role) VALUES (" |
| + "'" + req.body.nf_vnf_type + "'," |
| + "'" + req.body.nf_network_role + "')"; |
| |
| console.log("SQL: " + sql); |
| |
| tasks.push( function(callback) { dbRoutes.executeSQL(sql,req,res,callback); } ); |
| async.series(tasks, function(err,result){ |
| var msgArray = new Array(); |
| if(err){ |
| msgArray.push(err); |
| dbRoutes.getVnfNetworks(req,res,{code:'failure', msg:msgArray},privilegeObj); |
| return; |
| } |
| else { |
| msgArray.push('Successfully added VNF Network'); |
| dbRoutes.getVnfNetworks(req,res,{code:'success', msg:msgArray},privilegeObj); |
| return; |
| } |
| }); |
| }); |
| |
| router.post('/addVnfProfile', csp.checkAuth, dbRoutes.checkDB, function(req,res){ |
| |
| var privilegeObj = req.session.loggedInAdmin; |
| var tasks = []; |
| var sql; |
| |
| sql = "INSERT INTO VNF_PROFILE (vnf_type,availability_zone_count,equipment_role) VALUES (" |
| + "'" + req.body.nf_vnf_type + "'," |
| + req.body.nf_availability_zone_count |
| + ",'" + req.body.nf_equipment_role + "')"; |
| |
| console.log(sql); |
| |
| tasks.push( function(callback) { dbRoutes.executeSQL(sql,req,res,callback); } ); |
| async.series(tasks, function(err,result){ |
| var msgArray = new Array(); |
| if(err){ |
| msgArray.push(err); |
| dbRoutes.getVnfProfile(req,res,{code:'failure', msg:msgArray},privilegeObj); |
| return; |
| } |
| else { |
| msgArray.push('Successfully added VNF Profile'); |
| dbRoutes.getVnfProfile(req,res,{code:'success', msg:msgArray},privilegeObj); |
| return; |
| } |
| }); |
| }); |
| |
| router.post('/addVmNetwork', csp.checkAuth, dbRoutes.checkDB, function(req,res){ |
| |
| var privilegeObj = req.session.loggedInAdmin; |
| var tasks = []; |
| var msgArray = new Array(); |
| |
| // convert true|false to 1|0 |
| var assign_ips = (req.body.nf_assign_ips == 'true') ? 1 : 0; |
| var assign_macs = (req.body.nf_assign_macs == 'true') ? 1 : 0; |
| var assign_floating_ip = (req.body.nf_assign_floating_ip == 'true') ? 1 : 0; |
| |
| |
| if ((req.body.nf_assign_ips == 'true' && |
| (typeof req.body.nf_ip_count == 'undefined' || req.body.nf_ip_count.length <=0))) |
| { |
| msgArray.push("If assign_ips equals 'true', ip_count must be populated with a number."); |
| dbRoutes.getVmNetworks(req,res,{code:'failure', msg:msgArray},privilegeObj); |
| return; |
| } |
| |
| |
| if ( req.body.nf_ip_count.length >0 ) |
| { |
| var sql = "INSERT INTO VM_NETWORKS (vnf_type,vm_type,network_role,ip_count,assign_ips,assign_macs,assign_floating_ip) VALUES (" |
| + "'" + req.body.nf_vnf_type + "'," |
| + "'" + req.body.nf_vm_type + "'," |
| + "'" + req.body.nf_network_role + "'," |
| + req.body.nf_ip_count + "," |
| + assign_ips + "," |
| + assign_macs + "," |
| + assign_floating_ip + ")"; |
| } |
| else |
| { |
| var sql = "INSERT INTO VM_NETWORKS (vnf_type,vm_type,network_role,assign_ips,assign_macs,assign_floating_ip) VALUES (" |
| + "'" + req.body.nf_vnf_type + "'," |
| + "'" + req.body.nf_vm_type + "'," |
| + "'" + req.body.nf_network_role + "'," |
| + assign_ips + "," |
| + assign_macs + "," |
| + assign_floating_ip + ")"; |
| } |
| |
| tasks.push( function(callback) { dbRoutes.executeSQL(sql,req,res,callback); } ); |
| async.series(tasks, function(err,result){ |
| msgArray = new Array(); |
| if(err){ |
| msgArray.push(err); |
| dbRoutes.getVmNetworks(req,res,{code:'failure', msg:msgArray},privilegeObj); |
| return; |
| } |
| else { |
| msgArray.push('Successfully added VM Network'); |
| var message = ''; |
| if (req.body.nf_ip_count.length >0) |
| { |
| message = req.body.nf_vnf_type |
| + ',' + req.body.nf_vm_type |
| + ',' + req.body.nf_network_role |
| + ',' + req.body.nf_ip_count |
| + ',' + req.body.nf_assign_ips |
| + ',' + req.body.nf_assign_macs |
| + ',' + req.body.nf_assign_floating_ip; |
| } |
| else |
| { |
| message = req.body.nf_vnf_type |
| + ',' + req.body.nf_vm_type |
| + ',' + req.body.nf_network_role |
| + ',' + req.body.nf_assign_ips |
| + ',' + req.body.nf_assign_macs |
| + ',' + req.body.nf_assign_floating_ip; |
| } |
| dbRoutes.getVmNetworks(req,res,{code:'success', msg:msgArray},privilegeObj); |
| return; |
| } |
| }); |
| }); |
| |
| // POST |
| router.post('/uploadVnfData', csp.checkAuth, dbRoutes.checkDB, upload.single('filename'), function(req, res) |
| { |
| console.log('filename:'+ JSON.stringify(req.file.originalname)); |
| var msgArray = new Array(); |
| var privilegeObj = req.session.loggedInAdmin; |
| |
| if(req.file.originalname) |
| { |
| if (req.file.originalname.size == 0) { |
| msgArray.push('There was an error uploading the file.'); |
| dbRoutes.getVnfData(req,res,{code:'failure', msg:msgArray},privilegeObj); |
| return; |
| } |
| fs.exists(req.file.path, function(exists) |
| { |
| if(exists) |
| { |
| var str = req.file.originalname; |
| var content; |
| var enc_content; |
| |
| try{ |
| content = fs.readFileSync(req.file.path); |
| enc_content = encodeURI(content); |
| |
| |
| var sql = "INSERT INTO PRE_LOAD_VNF_DATA " |
| + "(filename,preload_data) VALUES (" |
| + "'"+ str + "'," + "'" + enc_content + "')"; |
| |
| var privilegeObj = req.session.loggedInAdmin; |
| var tasks = []; |
| tasks.push( function(callback) { dbRoutes.addRow(sql,req,res,callback); } ); |
| async.series(tasks, function(err,result) |
| { |
| if(err){ |
| msgArray.push(err); |
| dbRoutes.getVnfData(req,res,{code:'failure', msg:msgArray},privilegeObj); |
| return; |
| } |
| else { |
| msgArray.push('Successfully uploaded ' + str); |
| dbRoutes.getVnfData(req,res,{code:'success', msg:msgArray},privilegeObj); |
| return; |
| } |
| }); |
| } |
| catch(error){ |
| fs.removeSync(req.file.path); // remove bad file that was uploaded |
| console.error("There was an error reading the file '"+str+"'. Error: " + error); |
| msgArray.push("There was an error reading the file '"+str+"'. Error: " + error); |
| dbRoutes.getVnfData(req,res,{code:'failure', msg:msgArray},privilegeObj); |
| return; |
| } |
| } else { |
| msgArray.length = 0; |
| msgArray.push('There was an error uploading the file.'); |
| dbRoutes.getVnfData(req,res,{code:'danger', msg:msgArray},privilegeObj); |
| return; |
| } |
| }); |
| } |
| else |
| { |
| msgArray.length = 0; |
| msgArray.push('There was an error uploading the file.'); |
| dbRoutes.getVnfData(req,res,{code:'danger', msg:msgArray},privilegeObj); |
| return; |
| } |
| |
| } ); |
| |
| router.post('/uploadVnfNetworkData', csp.checkAuth, dbRoutes.checkDB, upload.single('filename'), function(req, res) |
| { |
| var msgArray = new Array(); |
| var privilegeObj = req.session.loggedInAdmin; |
| |
| if(req.file.originalname) |
| { |
| if (req.file.originalname.size == 0) { |
| msgArray.push('There was an error uploading the file.'); |
| dbRoutes.getVnfData(req,res,{code:'failure', msg:msgArray},privilegeObj); |
| return; |
| } |
| fs.exists(req.file.path, function(exists) |
| { |
| if(exists) |
| { |
| var str = req.file.originalname; |
| var content; |
| var enc_content; |
| |
| try{ |
| content = fs.readFileSync(req.file.path); |
| enc_content = encodeURI(content); |
| |
| var sql = "INSERT INTO PRE_LOAD_VNF_NETWORK_DATA " |
| + "(filename,preload_data) VALUES (" |
| + "'"+ str + "'," + "'" + enc_content + "')"; |
| |
| var privilegeObj = req.session.loggedInAdmin; |
| var tasks = []; |
| tasks.push( function(callback) { dbRoutes.addRow(sql,req,res,callback); } ); |
| async.series(tasks, function(err,result) |
| { |
| if(err){ |
| msgArray.push(err); |
| dbRoutes.getVnfNetworkData(req,res,{code:'failure', msg:msgArray},privilegeObj); |
| return; |
| } |
| else { |
| msgArray.push('Successfully uploaded ' + str); |
| dbRoutes.getVnfNetworkData(req,res,{code:'success', msg:msgArray},privilegeObj); |
| return; |
| } |
| }); |
| } |
| catch(error){ |
| fs.removeSync(req.file.path); // remove bad file that was uploaded |
| msgArray.push("There was an error reading the file '"+str+"'. Error: " + error); |
| dbRoutes.getVnfNetworkData(req,res,{code:'failure', msg:msgArray},privilegeObj); |
| return; |
| } |
| } else { |
| msgArray.length = 0; |
| msgArray.push('There was an error uploading the file.'); |
| dbRoutes.getVnfNetworkData(req,res,{code:'danger', msg:msgArray},privilegeObj); |
| return; |
| } |
| }); |
| } |
| else |
| { |
| msgArray.length = 0; |
| msgArray.push('There was an error uploading the file.'); |
| dbRoutes.getVnfNetworkData(req,res,{code:'danger', msg:msgArray},privilegeObj); |
| return; |
| } |
| |
| } ); |
| |
| |
| router.post('/uploadVmNetworks', csp.checkAuth, dbRoutes.checkDB, upload.single('filename'), function(req, res){ |
| |
| var msgArray = new Array(); |
| var privilegeObj = req.session.loggedInAdmin; |
| |
| if(req.file.originalname){ |
| if (req.file.originalname.size == 0) { |
| dbRoutes.getVmNetworks(req,res,{code:'failure', msg:'There was an error uploading the file, please try again.'},privilegeObj); |
| return; |
| } |
| fs.exists(req.file.path, function(exists) { |
| |
| if(exists) { |
| |
| var str = req.file.originalname; |
| |
| try { |
| var csv = require('csv'); |
| |
| // the job of the parser is to convert a CSV file |
| // to a list of rows (array of rows) |
| var parser = csv.parse({ |
| columns: function(line) { |
| // By defining this callback, we get handed the |
| // first line of the spreadsheet. Which we'll |
| // ignore and effectively skip this line from processing |
| }, |
| skip_empty_lines: true |
| }); |
| |
| var row = 0; |
| var f = new Array(); |
| var transformer = csv.transform(function(data){ |
| // this will get row by row data, so for example, |
| //logger.debug(data[0]+','+data[1]+','+data[2]); |
| |
| // build an array of rows |
| f[row] = new Array(); |
| for ( col=0; col<data.length; col++ ) |
| { |
| f[row][col] = data[col]; |
| } |
| row++; |
| }); |
| |
| // called when done with processing the CSV |
| transformer.on("finish", function() { |
| |
| var funcArray = new Array(); |
| |
| function createFunction(lrow,res) |
| { |
| return function(callback) { dbRoutes.addVmNetwork(lrow,res,callback); } |
| } |
| // loop for each row and create an array of callbacks for async.parallelLimit |
| // had to create a function above 'createFunction' to get |
| for (var x=0; x<f.length; x++) |
| { |
| funcArray.push( createFunction(f[x],res) ); |
| } |
| |
| // make db calls in parrallel |
| async.parallelLimit(funcArray, 50, function(err,result){ |
| |
| if ( err ) { |
| dbRoutes.getVmNetworks(req,res,result,privilegeObj); |
| return; |
| } |
| else { |
| // result array has an entry in it, success entries are blank, figure out |
| // how many are not blank, aka errors. |
| var rowError = 0; |
| for(var i=0;i<result.length;i++){ |
| if ( result[i].length > 0 ) |
| { |
| rowError++; |
| } |
| } |
| var rowsProcessed = f.length - rowError; |
| result.push(rowsProcessed + ' of ' + f.length + ' rows processed.'); |
| if ( rowError > 0 ) |
| { |
| result = {code:'failure', msg:result}; |
| } |
| else |
| { |
| result = {code:'success', msg:result}; |
| } |
| dbRoutes.getVmNetworks(req,res,result,privilegeObj); |
| return; |
| } |
| }); |
| }); |
| |
| var stream = fs.createReadStream(req.file.path, "utf8"); |
| stream.pipe(parser).pipe(transformer); |
| |
| } catch(ex) { |
| msgArray.length = 0; |
| msgArray.push('There was an error uploading the file. '+ex); |
| dbRoutes.getVmNetworks(req,res,{code:'danger', msg:msgArray},privilegeObj); |
| return; |
| } |
| |
| } else { |
| msgArray.length = 0; |
| msgArray.push('There was an error uploading the file.'); |
| dbRoutes.getVmNetworks(req,res,{code:'danger', msg:msgArray},privilegeObj); |
| return; |
| } |
| }); |
| } |
| else { |
| msgArray.length = 0; |
| msgArray.push('There was an error uploading the file.'); |
| dbRoutes.getVmNetworks(req,res,{code:'danger', msg:msgArray},privilegeObj); |
| return; |
| } |
| |
| } ); |
| |
| router.post('/uploadVnfProfile', csp.checkAuth, dbRoutes.checkDB, upload.single('filename'), function(req, res){ |
| |
| var msgArray = new Array(); |
| var privilegeObj = req.session.loggedInAdmin; |
| |
| if(req.file.originalname) |
| { |
| if (req.file.originalname.size == 0) { |
| dbRoutes.getVnfProfile(req,res,{code:'failure', msg:'There was an error uploading the file, please try again.'},privilegeObj); |
| return; |
| } |
| fs.exists(req.file.path, function(exists) { |
| |
| if(exists) { |
| |
| var str = req.file.originalname; |
| |
| try { |
| var csv = require('csv'); |
| |
| // the job of the parser is to convert a CSV file |
| // to a list of rows (array of rows) |
| var parser = csv.parse({ |
| columns: function(line) { |
| // By defining this callback, we get handed the |
| // first line of the spreadsheet. Which we'll |
| // ignore and effectively skip this line from processing |
| }, |
| skip_empty_lines: true |
| }); |
| |
| var row = 0; |
| var f = new Array(); |
| var transformer = csv.transform(function(data){ |
| // this will get row by row data, so for example, |
| //logger.debug(data[0]+','+data[1]+','+data[2]); |
| |
| // build an array of rows |
| f[row] = new Array(); |
| for ( col=0; col<data.length; col++ ) |
| { |
| f[row][col] = data[col]; |
| } |
| row++; |
| }); |
| |
| // called when done with processing the CSV |
| transformer.on("finish", function() { |
| |
| var funcArray = new Array(); |
| |
| function createFunction(lrow,res) |
| { |
| return function(callback) { dbRoutes.addVnfProfile(lrow,res,callback); } |
| } |
| // loop for each row and create an array of callbacks for async.parallelLimit |
| // had to create a function above 'createFunction' to get |
| for (var x=0; x<f.length; x++) |
| { |
| funcArray.push( createFunction(f[x],res) ); |
| } |
| |
| // make db calls in parrallel |
| async.series(funcArray, function(err,result){ |
| |
| if ( err ) { |
| dbRoutes.getVnfProfile(req,res,result,privilegeObj); |
| return; |
| } |
| else { |
| // result array has an entry in it, success entries are blank, figure out |
| // how many are not blank, aka errors. |
| var rowError = 0; |
| for(var i=0;i<result.length;i++){ |
| if ( result[i].length > 0 ) |
| { |
| rowError++; |
| } |
| } |
| console.log('rowError='+rowError); |
| var rowsProcessed = f.length - rowError; |
| console.log('rowsProcessed='+rowsProcessed); |
| result.push(rowsProcessed + ' of ' + f.length + ' rows processed.'); |
| if ( rowError > 0 ) |
| { |
| result = {code:'failure', msg:result}; |
| } |
| else |
| { |
| result = {code:'success', msg:result}; |
| } |
| console.log('result='+JSON.stringify(result)); |
| dbRoutes.getVnfProfile(req,res,result,privilegeObj); |
| return; |
| } |
| }); |
| }); |
| |
| var stream = fs.createReadStream(req.file.path, "utf8"); |
| stream.pipe(parser).pipe(transformer); |
| |
| } catch(ex) { |
| msgArray.length = 0; |
| msgArray.push('There was an error uploading the file. '+ex); |
| console.error('There was an error uploading the file. '+ex); |
| dbRoutes.getVnfProfile(req,res,{code:'danger', msg:msgArray},privilegeObj); |
| return; |
| } |
| } else { |
| msgArray.length = 0; |
| msgArray.push('There was an error uploading the file.'); |
| dbRoutes.getVnfProfile(req,res,{code:'danger', msg:msgArray},privilegeObj); |
| return; |
| } |
| }); |
| } |
| else { |
| msgArray.length = 0; |
| msgArray.push('There was an error uploading the file.'); |
| dbRoutes.getVnfProfile(req,res,{code:'danger', msg:msgArray},privilegeObj); |
| return; |
| } |
| } ); |
| |
| |
| router.post('/uploadVnfNetworks', csp.checkAuth, dbRoutes.checkDB, upload.single('filename'), function(req, res){ |
| |
| var msgArray = new Array(); |
| var privilegeObj = req.session.loggedInAdmin; |
| |
| if(req.file.originalname) |
| { |
| if (req.file.originalname.size == 0) { |
| dbRoutes.getVnfProfile(req,res, |
| {code:'failure', msg:'There was an error uploading the file, please try again.'}, |
| privilegeObj); |
| return; |
| } |
| fs.exists(req.file.path, function(exists) { |
| |
| if(exists) { |
| |
| var str = req.file.originalname; |
| |
| try { |
| var csv = require('csv'); |
| |
| // the job of the parser is to convert a CSV file |
| // to a list of rows (array of rows) |
| var parser = csv.parse({ |
| columns: function(line) { |
| // By defining this callback, we get handed the |
| // first line of the spreadsheet. Which we'll |
| // ignore and effectively skip this line from processing |
| }, |
| skip_empty_lines: true |
| }); |
| |
| var row = 0; |
| var f = new Array(); |
| var transformer = csv.transform(function(data){ |
| // this will get row by row data, so for example, |
| //logger.debug(data[0]+','+data[1]+','+data[2]); |
| |
| // build an array of rows |
| f[row] = new Array(); |
| for ( col=0; col<data.length; col++ ) |
| { |
| f[row][col] = data[col]; |
| } |
| row++; |
| }); |
| |
| // called when done with processing the CSV |
| transformer.on("finish", function() { |
| |
| var funcArray = new Array(); |
| |
| function createFunction(lrow,res) |
| { |
| return function(callback) { dbRoutes.addVnfNetwork(lrow,res,callback); } |
| } |
| // loop for each row and create an array of callbacks for async.parallelLimit |
| // had to create a function above 'createFunction' to get |
| for (var x=0; x<f.length; x++) |
| { |
| funcArray.push( createFunction(f[x],res) ); |
| } |
| |
| // make db calls in parrallel |
| async.series(funcArray, function(err,result){ |
| |
| if ( err ) { |
| dbRoutes.getVnfNetworks(req,res,result,privilegeObj); |
| return; |
| } |
| else { |
| // result array has an entry in it, success entries are blank, figure out |
| // how many are not blank, aka errors. |
| var rowError = 0; |
| for(var i=0;i<result.length;i++){ |
| if ( result[i].length > 0 ) |
| { |
| rowError++; |
| } |
| } |
| var rowsProcessed = f.length - rowError; |
| result.push(rowsProcessed + ' of ' + f.length + ' rows processed.'); |
| if ( rowError > 0 ) |
| { |
| result = {code:'failure', msg:result}; |
| } |
| else |
| { |
| result = {code:'success', msg:result}; |
| } |
| dbRoutes.getVnfNetworks(req,res,result,privilegeObj); |
| return; |
| } |
| }); |
| }); |
| |
| var stream = fs.createReadStream(req.file.path, "utf8"); |
| stream.pipe(parser).pipe(transformer); |
| |
| } catch(ex) { |
| msgArray.length = 0; |
| msgArray.push('There was an error uploading the file. '+ex); |
| dbRoutes.getVnfNetworks(req,res,{code:'danger', msg:msgArray},privilegeObj); |
| return; |
| } |
| } else { |
| msgArray.length = 0; |
| msgArray.push('There was an error uploading the file.'); |
| dbRoutes.getVnfNetworks(req,res,{code:'danger', msg:msgArray},privilegeObj); |
| return; |
| } |
| }); |
| } |
| else { |
| msgArray.length = 0; |
| msgArray.push('There was an error uploading the file.'); |
| dbRoutes.getVnfNetworks(req,res,{code:'danger', msg:msgArray},privilegeObj); |
| return; |
| } |
| } ); |
| |
| router.post('/uploadVmProfile', csp.checkAuth, dbRoutes.checkDB, upload.single('filename'), function(req, res){ |
| |
| var msgArray = new Array(); |
| var privilegeObj = req.session.loggedInAdmin; |
| |
| if(req.file.originalname) |
| { |
| if (req.file.originalname.size == 0) { |
| dbRoutes.getVmProfile(req,res, |
| {code:'failure', msg:'There was an error uploading the file, please try again.'}, |
| privilegeObj); |
| return; |
| } |
| fs.exists(req.file.path, function(exists) { |
| |
| if(exists) { |
| |
| var str = req.file.originalname; |
| |
| try { |
| var csv = require('csv'); |
| |
| // the job of the parser is to convert a CSV file |
| // to a list of rows (array of rows) |
| var parser = csv.parse({ |
| columns: function(line) { |
| // By defining this callback, we get handed the |
| // first line of the spreadsheet. Which we'll |
| // ignore and effectively skip this line from processing |
| }, |
| skip_empty_lines: true |
| }); |
| |
| var row = 0; |
| var f = new Array(); |
| var transformer = csv.transform(function(data){ |
| // this will get row by row data, so for example, |
| //logger.debug(data[0]+','+data[1]+','+data[2]); |
| |
| // build an array of rows |
| f[row] = new Array(); |
| for ( col=0; col<data.length; col++ ) |
| { |
| f[row][col] = data[col]; |
| } |
| row++; |
| }); |
| |
| // called when done with processing the CSV |
| transformer.on("finish", function() { |
| |
| var funcArray = new Array(); |
| |
| function createFunction(lrow,res) |
| { |
| return function(callback) { dbRoutes.addVmProfile(lrow,res,callback); } |
| } |
| // loop for each row and create an array of callbacks for async.parallelLimit |
| // had to create a function above 'createFunction' to get |
| for (var x=0; x<f.length; x++) |
| { |
| funcArray.push( createFunction(f[x],res) ); |
| } |
| |
| // make db calls in parrallel |
| async.series(funcArray, function(err,result){ |
| |
| if ( err ) { |
| dbRoutes.getVmProfile(req,res,result,privilegeObj); |
| return; |
| } |
| else { |
| // result array has an entry in it, success entries are blank, figure out |
| // how many are not blank, aka errors. |
| var rowError = 0; |
| for(var i=0;i<result.length;i++){ |
| if ( result[i].length > 0 ) |
| { |
| rowError++; |
| } |
| } |
| var rowsProcessed = f.length - rowError; |
| result.push(rowsProcessed + ' of ' + f.length + ' rows processed.'); |
| if ( rowError > 0 ) |
| { |
| result = {code:'failure', msg:result}; |
| } |
| else |
| { |
| result = {code:'success', msg:result}; |
| } |
| dbRoutes.getVmProfile(req,res,result,privilegeObj); |
| return; |
| } |
| }); |
| }); |
| |
| var stream = fs.createReadStream(req.file.path, "utf8"); |
| stream.pipe(parser).pipe(transformer); |
| |
| } catch(ex) { |
| msgArray.length = 0; |
| msgArray.push('There was an error uploading the file. '+ex); |
| dbRoutes.getVmProfile(req,res,{code:'danger', msg:msgArray},privilegeObj); |
| return; |
| } |
| } else { |
| msgArray.length = 0; |
| msgArray.push('There was an error uploading the file.'); |
| dbRoutes.getVmProfile(req,res,{code:'danger', msg:msgArray},privilegeObj); |
| return; |
| } |
| }); |
| } |
| else { |
| msgArray.length = 0; |
| msgArray.push('There was an error uploading the file.'); |
| dbRoutes.getVmProfile(req,res,{code:'danger', msg:msgArray},privilegeObj); |
| return; |
| } |
| } ); |
| |
| module.exports = router; |