1 var express = require('express');
2 var router = express.Router();
3 var csp = require('./csp');
4 var properties = require(process.env.SDNC_CONFIG_DIR + '/admportal.json');
5 var async = require('async');
8 // pass host, username and password to ODL
9 var username = properties.odlUser;
10 var password = properties.odlPasswd;
11 var auth = 'Basic ' + new Buffer(username + ':' + password).toString('base64');
13 // target host for ODL request
14 var host = properties.odlHost;
15 var port = properties.odlPort;
16 var header = {'Host': host, 'Authorization': auth, 'Content-Type': 'application/yang.data+json'};
21 rejectUnauthorized: false,
25 // Connection to OpenDaylight
26 OdlInterface = require('./OdlInterface');
28 function handleResult(err, response_str, res) {
30 console.error( String(err) );
31 res.render('pages/err', {result:{code:'failure', msg:String(err)}, header:process.env.MAIN_MENU});
33 // make sure response starts with JSON string
34 if (response_str && response_str.indexOf('{') == 0) {
35 //console.log("response: ", result);
36 res.render('odl/listWklst', { response_obj: JSON.parse(response_str), header:process.env.MAIN_MENU });
38 res.render('pages/err', {result:{code:'failure', msg:String(err) }, header:process.env.MAIN_MENU});
44 // calls restconf to get information
45 router.get('/listWklst', csp.checkAuth, function(req, res) {
46 options.strictSSL = true; // used to test SSL certificate
47 OdlInterface.Get('/restconf/config/L3SDN-API:services',options, handleResult,req,res);
50 router.get('/pageWklst', csp.checkAuth, function(req,res) {
51 pageWklst(req,res, {code:'', msg:''}, req.session.loggedInAdmin);
55 function pageWklst(req,res,resultObj,privilegeObj)
57 if(req.session == null || req.session == undefined
58 || req.session.l3sdnPageInfo == null || req.session.l3sdnPageInfo == undefined)
60 res.render("pages/err",
61 { result: {code:'error', msg:"Unable to read session information. "+ String(err) }, header:process.env.MAIN_MENU});
65 var l3sdnPageInfo = req.session.l3sdnPageInfo;
67 if (typeof req.query.page != 'undefined')
69 currentPage = +req.query.page;
71 l3sdnPageInfo.currentPage = currentPage;
72 l3sdnPageInfo.rows = l3sdnPageInfo.pages[currentPage-1];
73 req.session.l3sdnPageInfo = l3sdnPageInfo;
74 res.render('odl/listWklst',
76 pageInfo : l3sdnPageInfo,
78 privilege : privilegeObj, header:process.env.MAIN_MENU
84 router.post('/update_vr_lan_interface', function(req,res){
85 var svc_instance_id = encodeURIComponent(req.body.svc_instance_id);
93 "vr-designation" : req.body.uf_vr_designation,
94 "v6-vr-lan-prefix" : req.body.uf_vr_lan_prefix,
95 "v6-vr-lan-prefix-length": req.body.uf_vr_lan_prefix_length,
96 "v6-vce-wan-address" : req.body.uf_vce_wan_address,
97 "v4-vr-lan-prefix" : req.body.uf_vr_lan_prefix,
98 "v4-vr-lan-prefix-length": req.body.uf_vr_lan_prefix_length,
99 "v4-vce-loopback-address": req.body.uf_vce_loopback_address
104 tasks.push(function(callback){
105 OdlInterface.put_vr_lan_interface('/restconf/config/L3SDN-API:services/layer3-service-list/'
107 + '/service-data/vr-lan/', options, callback);
109 async.series(tasks, function(err,result){
114 var msgArray = new Array();
115 //result:{code:'error', msg:"got vr-lan information: "+ String(result)}
116 msgArray.push('vr-lan-interface successfully updated.');
117 res.render("odl/listVRlan",
119 svc_instance_id: req.body.svc_instance_id,
120 response_obj : JSON.parse(result), header:process.env.MAIN_MENU
128 // sendData submits form data to ODL
129 // Data is read from URL params and converted to JSON
130 router.get('/svc-topology-operation', function(req, res) {
131 var formData = '{"input":{'
132 + '"svc-request-id":"'+ new Date().toISOString() + '"' +','
133 + '"svc-notification-url":"'+ req.query['svc-notification-url']+ '"' + ','
134 + '"svc-action":"'+ req.query['svc-action']+ '"' + ','
135 + '"svc-vnf-type":"'+ req.query['svc-vnf-type']+ '"' + ','
136 + '"svc-instance-id":"'+ req.query['svc-instance-id']+ '"' + ','
137 + '"svc-aic-site-id":"'+ req.query['svc-aic-site-id']+ '"'
139 OdlInterface.Post('/restconf/operations/L3SDN-API:svc-topology-operation', options, formData, handleResult, res);
143 router.get('/wklist-delete', function(req, res) {
144 //console.dir(req.query);
145 OdlInterface.Delete('/restconf/config/L3SDN-API:l3sdn-api-worklist/requests/'+req.query['request'], options, handleResult, res);
149 router.get('/getid',function(req, res) {
150 //console.dir(req.query);
151 OdlInterface.GetID('/restconf/config/L3SDN-API:l3sdn-api-worklist/requests/'+req.query['request'], options, res);
154 router.get('/getvnf', function(req,res) {
155 //console.log("/getvnf "+req.query);
156 OdlInterface.GetVNF('/restconf/config/L3SDN-API:l3sdn-api-worklist/requests/'+req.query['request']+'/vnf/',options,req,res);
158 router.get('/getvrlan', function(req,res) {
160 var reqstr = encodeURIComponent(req.query['request']);
161 vrtasks.push(function(callback) {
162 OdlInterface.GetVRlan('/restconf/config/L3SDN-API:services/layer3-service-list/'+reqstr+'/service-data/vr-lan/',options,callback);
164 async.series(vrtasks, function(err,result){
165 var msgArray = new Array();
168 OdlInterface.Get('/restconf/config/L3SDN-API:services',options, handleResult,res);
169 //res.render("pages/err",
170 //{result:{code:'error', msg:"Unable to get vr-lan information: "+ String(err) }});
174 msgArray.push('Row successfully deleted from AIC_SITE table.');
175 res.render("odl/listVRlan",
177 svc_instance_id: req.query['request'],
178 response_obj : JSON.parse(result), header:process.env.MAIN_MENU
184 router.get('/getClusterStatus', function(req,res) {
188 var _header = {'Host': host, 'Authorization': auth, 'Content-Type': 'application/yang.data+json'};
191 var slist = properties.shard_list;
192 var hlist = properties.hostnameList;
193 var port = properties.clusterPort;
194 var prefix_url = properties.clusterPrefixURL;
195 var mid_url = properties.clusterMidURL;
196 var suffix_url = properties.clusterSuffixURL;
197 var urlArray = new Array();
199 var shard=null, hostname=null;
201 // build array of urls from properties
202 for(var x=0; x<slist.length; x++)
205 for(var y=0; y<hlist.length; y++)
209 url_request = properties.odlProtocol + '://'
210 + hostname.hname + ':'
221 host : hostname.hname,
224 rejectUnauthorized: false,
227 urlArray.push(_options);
231 urlArray.forEach(function(request){
232 urltasks.push(function(callback) {
233 OdlInterface.GetClusterStatus(request,callback);
236 async.series(urltasks, function(err,result){
237 var msgArray = new Array();
240 res.render("pages/err",
241 {result:{code:'error', msg:"Unable to get status: "+ String(err) }, header:process.env.MAIN_MENU});
245 var msgArray = new Array();
246 msgArray.push('Sucess');
247 res.render("odl/cluster_status",
249 result : {code:'success', msg:msgArray},
250 response_obj : result, header:process.env.MAIN_MENU
258 module.exports = router;