var express = require('express'); var router = express.Router(); var csp = require('./csp'); var properties = require(process.env.SDNC_CONFIG_DIR + '/admportal.json'); var async = require('async'); // pass host, username and password to ODL var username = properties.odlUser; var password = properties.odlPasswd; var auth = 'Basic ' + new Buffer(username + ':' + password).toString('base64'); // target host for ODL request var host = properties.odlHost; var port = properties.odlPort; var header = {'Host': host, 'Authorization': auth, 'Content-Type': 'application/yang.data+json'}; var options = { host: host, headers : header, port : port, rejectUnauthorized: false, strictSSL : false }; // Connection to OpenDaylight OdlInterface = require('./OdlInterface'); function handleResult(err, response_str, res) { if (err) { console.error( String(err) ); res.render('pages/err', {result:{code:'failure', msg:String(err)}, header:process.env.MAIN_MENU}); } else { // make sure response starts with JSON string if (response_str && response_str.indexOf('{') == 0) { //console.log("response: ", result); res.render('odl/listWklst', { response_obj: JSON.parse(response_str), header:process.env.MAIN_MENU }); } else { res.render('pages/err', {result:{code:'failure', msg:String(err) }, header:process.env.MAIN_MENU}); } } } // / index page // calls restconf to get information router.get('/listWklst', csp.checkAuth, function(req, res) { options.strictSSL = true; // used to test SSL certificate OdlInterface.Get('/restconf/config/L3SDN-API:services',options, handleResult,req,res); }); router.get('/pageWklst', csp.checkAuth, function(req,res) { pageWklst(req,res, {code:'', msg:''}, req.session.loggedInAdmin); }); function pageWklst(req,res,resultObj,privilegeObj) { if(req.session == null || req.session == undefined || req.session.l3sdnPageInfo == null || req.session.l3sdnPageInfo == undefined) { res.render("pages/err", { result: {code:'error', msg:"Unable to read session information. "+ String(err) }, header:process.env.MAIN_MENU}); return; } var l3sdnPageInfo = req.session.l3sdnPageInfo; var currentPage=1; if (typeof req.query.page != 'undefined') { currentPage = +req.query.page; } l3sdnPageInfo.currentPage = currentPage; l3sdnPageInfo.rows = l3sdnPageInfo.pages[currentPage-1]; req.session.l3sdnPageInfo = l3sdnPageInfo; res.render('odl/listWklst', { pageInfo : l3sdnPageInfo, result : resultObj, privilege : privilegeObj, header:process.env.MAIN_MENU }); return; } router.post('/update_vr_lan_interface', function(req,res){ var svc_instance_id = encodeURIComponent(req.body.svc_instance_id); // format msg var msgRsp = { "vr-lan-interface" : [ { "vr-designation" : req.body.uf_vr_designation, "v6-vr-lan-prefix" : req.body.uf_vr_lan_prefix, "v6-vr-lan-prefix-length": req.body.uf_vr_lan_prefix_length, "v6-vce-wan-address" : req.body.uf_vce_wan_address, "v4-vr-lan-prefix" : req.body.uf_vr_lan_prefix, "v4-vr-lan-prefix-length": req.body.uf_vr_lan_prefix_length, "v4-vce-loopback-address": req.body.uf_vce_loopback_address } ] }; var tasks = []; tasks.push(function(callback){ OdlInterface.put_vr_lan_interface('/restconf/config/L3SDN-API:services/layer3-service-list/' + svc_instance_id + '/service-data/vr-lan/', options, callback); }); async.series(tasks, function(err,result){ if(err){ } else{ var msgArray = new Array(); //result:{code:'error', msg:"got vr-lan information: "+ String(result)} msgArray.push('vr-lan-interface successfully updated.'); res.render("odl/listVRlan", { svc_instance_id: req.body.svc_instance_id, response_obj : JSON.parse(result), header:process.env.MAIN_MENU }); return; } }); }); // sendData submits form data to ODL // Data is read from URL params and converted to JSON router.get('/svc-topology-operation', function(req, res) { var formData = '{"input":{' + '"svc-request-id":"'+ new Date().toISOString() + '"' +',' + '"svc-notification-url":"'+ req.query['svc-notification-url']+ '"' + ',' + '"svc-action":"'+ req.query['svc-action']+ '"' + ',' + '"svc-vnf-type":"'+ req.query['svc-vnf-type']+ '"' + ',' + '"svc-instance-id":"'+ req.query['svc-instance-id']+ '"' + ',' + '"svc-aic-site-id":"'+ req.query['svc-aic-site-id']+ '"' +' } }'; OdlInterface.Post('/restconf/operations/L3SDN-API:svc-topology-operation', options, formData, handleResult, res); }); // delete request router.get('/wklist-delete', function(req, res) { //console.dir(req.query); OdlInterface.Delete('/restconf/config/L3SDN-API:l3sdn-api-worklist/requests/'+req.query['request'], options, handleResult, res); }); // get request router.get('/getid',function(req, res) { //console.dir(req.query); OdlInterface.GetID('/restconf/config/L3SDN-API:l3sdn-api-worklist/requests/'+req.query['request'], options, res); }); router.get('/getvnf', function(req,res) { //console.log("/getvnf "+req.query); OdlInterface.GetVNF('/restconf/config/L3SDN-API:l3sdn-api-worklist/requests/'+req.query['request']+'/vnf/',options,req,res); }); router.get('/getvrlan', function(req,res) { var vrtasks = []; var reqstr = encodeURIComponent(req.query['request']); vrtasks.push(function(callback) { OdlInterface.GetVRlan('/restconf/config/L3SDN-API:services/layer3-service-list/'+reqstr+'/service-data/vr-lan/',options,callback); }); async.series(vrtasks, function(err,result){ var msgArray = new Array(); if(err){ msgArray.push(err); OdlInterface.Get('/restconf/config/L3SDN-API:services',options, handleResult,res); //res.render("pages/err", //{result:{code:'error', msg:"Unable to get vr-lan information: "+ String(err) }}); return; } else { msgArray.push('Row successfully deleted from AIC_SITE table.'); res.render("odl/listVRlan", { svc_instance_id: req.query['request'], response_obj : JSON.parse(result), header:process.env.MAIN_MENU }); return; } }); }); router.get('/getClusterStatus', function(req,res) { var urltasks = []; var _header = {'Host': host, 'Authorization': auth, 'Content-Type': 'application/yang.data+json'}; var _options = null; var slist = properties.shard_list; var hlist = properties.hostnameList; var port = properties.clusterPort; var prefix_url = properties.clusterPrefixURL; var mid_url = properties.clusterMidURL; var suffix_url = properties.clusterSuffixURL; var urlArray = new Array(); var url_request=''; var shard=null, hostname=null; // build array of urls from properties for(var x=0; x