2 var https = require('https');
3 var http = require('http');
4 var properties = require(process.env.SDNC_CONFIG_DIR + '/admportal.json');
7 var OdlInterface = function() {
10 // post(uri,data, res)
12 var _healthcheck = function(options, callback)
14 // Setup request to ODL side
15 console.log('options:' + JSON.stringify(options,null,2));
16 var request = https.request(options, function(response) {
18 var response_str = '';
19 // Read the response from ODL side
20 response.on('data', function(chunk) {
21 response_str += chunk;
24 response.on('end', function()
26 //logger.debug(response_str);
27 if(response.statusCode == 200)
29 console.log('200 OK');
30 callback(null, response_str);
34 console.log('not ok status=' + response.statusCode);
35 callback(response_str, 'statusCode=' + response.statusCode + '\n' + response_str);
42 request.on('error', function(err) {
43 console.error('err:' + err);
49 var _get = function(uri,options,callback,req,res)
52 options.method = "GET";
55 // Setup request to ODL side
56 console.log('options:' + JSON.stringify(options,null,2));
57 var request = https.request(options, function(response) {
58 // console.dir(response);
59 console.log('STATUS: ' + response.statusCode);
60 var response_str = '';
61 // Read the response from ODL side
62 response.on('data', function(chunk) {
63 response_str += chunk;
66 response.on('end', function()
68 console.log(response_str);
70 if(response.statusCode == 200)
72 // make sure response starts with JSON string
73 if (response_str && response_str.indexOf('{') == 0) {
74 //console.log("response: ", result);
76 req.session.l3sdnPageInfo = undefined;
81 var robj = JSON.parse(response_str);
83 if ( typeof robj['services']['layer3-service-list'] != 'undefined' )
85 for( var i=0; i<robj['services']['layer3-service-list'].length; i++)
87 obj_rows.push( robj['services']['layer3-service-list'][i] );
92 res.render('pages/err', {result:{code:'failure', msg:'no data Error: ' + String(err)}, header:process.env.MAIN_MENU});
93 callback(null,response_str,res);
100 'totalRows' : obj_rows.length,
102 'pageCount' : parseInt(obj_rows.length/18),
106 while (obj_rows.length > 0){
107 pageList.push(obj_rows.splice(0,l3sdnPageInfo.pageSize));
109 l3sdnPageInfo.rows = pageList[0]; // first page
110 l3sdnPageInfo.pages = pageList; // all pages
113 req.session.l3sdnPageInfo = l3sdnPageInfo;
114 var privObj = req.session.loggedInAdmin;
116 res.render('odl/listWklst',
118 pageInfo : l3sdnPageInfo,
119 result : {code:'', msg:''},
120 privilege : privObj, header:process.env.MAIN_MENU
125 res.render('pages/err', {result:{code:'failure', msg:'no data Error: ' + String(err)}, header:process.env.MAIN_MENU});
127 callback(null, response_str, res);
131 callback(response_str,response_str,res);
132 //res.render('pages/err', {result:{code:'failure', msg:'Failed to retrieve worklist. ' + response_str}});
139 request.on('error', function(err) {
140 callback(err,null, res);
144 var _getid = function(uri,options,res) {
145 options.method = "GET";
148 // Setup request to ODL side
149 var request = https.request(options, function(response) {
150 // console.dir(response);
151 //console.log('STATUS: ' + response.statusCode);
152 var response_str = '';
153 // Read the response from ODL side
154 response.on('data', function(chunk) {
155 response_str += chunk;
158 response.on('end', function() {
159 if(response.statusCode == 200){
161 //console.log("response: ", response_str);
162 res.render('odl/view', {response_obj: JSON.parse(response_str), header:process.env.MAIN_MENU});
165 //console.log("no data");
166 res.render('pages/err', {result:{code:'failure', msg:'Failed to retrieve worklist'}, header:process.env.MAIN_MENU});
170 //console.log("bad status code:", response.statusCode);
171 res.render('pages/err', {result:{code:'failure', msg:'Failed to retrieve worklist. Status Code:' + response.statusCode}, header:process.env.MAIN_MENU});
178 request.on('error', function(err) {
180 res.render('pages/err', {result:{code:'failure', msg:'Failed to get worklist item. ' + String(err)}, header:process.env.MAIN_MENU});
184 var _getvrlan = function(uri,options,callback) {
185 options.method = "GET";
190 // Setup request to ODL side
191 var request = https.request(options, function(response) {
192 // console.dir(response);
193 //console.log('STATUS: ' + response.statusCode);
194 var response_str = '';
195 // Read the response from ODL side
196 response.on('data', function(chunk) {
197 response_str += chunk;
201 response.on('end', function() {
202 if(response.statusCode == 200){
204 callback(null,response_str);
208 callback('err','no data');
213 callback('error',response.statusCode);
221 request.on('error', function(err) {
222 callback(err,String(err));
228 var _getvnf = function(uri,options,req,res) {
229 options.method = "GET";
232 // Setup request to ODL side
233 var request = https.request(options, function(response) {
234 // console.dir(response);
235 //console.log('STATUS: ' + response.statusCode);
236 var response_str = '';
237 // Read the response from ODL side
238 response.on('data', function(chunk) {
239 response_str += chunk;
242 response.on('end', function() {
243 if(response.statusCode == 200){
245 //console.log("response: ", response_str);
246 res.render('odl/viewvnf', { vnf_obj: JSON.parse(response_str),
247 request_id: req.query['request'], header:process.env.MAIN_MENU });
250 //console.log("no data");
251 res.render('pages/err', {result:{code:'failure', msg:'Failed to retrieve worklist item.'}, header:process.env.MAIN_MENU});
255 //console.log("bad status code:", response.statusCode);
256 res.render('pages/err', {result:{code:'failure', msg:'Failed to retrieve worklist. Status Code:' + response.statusCode}, header:process.env.MAIN_MENU});
263 request.on('error', function(err) {
265 res.render('pages/err', {result:{code:'failure', msg:'Failed getting VNF information. Error: '+ String(err)}, header:process.env.MAIN_MENU});
269 var _getPreloadVnfData = function(uri,options,res,callback) {
271 options.method = "GET";
275 // Setup request to ODL side
277 if ( process.env.NODE_ENV != 'production' ){
283 console.log('NODE_ENV:' + process.env.NODE_ENV);
284 console.log('GET: ' + JSON.stringify(options,null,4));
286 var request = protocol.request(options, function(response) {
288 var response_str = '';
290 // Read the response from ODL side
291 response.on('data', function(chunk) {
292 response_str += chunk;
295 response.on('end', function() {
296 console.log('response_str: ' + response_str);
297 console.log('response.statusCode: ' + response.statusCode);
298 if(response.statusCode == 200){
300 callback(null,response_str);
304 callback('Error - No data returned.');
309 if ( response.statusCode == 404 )
311 callback('HTTP Status Code:' + response.statusCode + '. Not Found.');
314 else if ( response_str.length > 0 )
316 callback('HTTP Status Code:' + response.statusCode + '. ' + response_str);
321 callback('HTTP Status Code:' + response.statusCode + '. No data returned.');
330 request.on('error', function(err) {
336 var _getClusterStatus = function(options,callback) {
337 //options.method = "GET";
338 //options.path = uri;
340 console.log('URI='+options.path);
342 // Setup request to ODL side
343 var protocol = properties.odlProtocol;
344 console.log('protocol=' + protocol);
345 if ( protocol == 'http' || protocol == 'HTTP' )
347 console.log('http request');
348 var request = http.request(options, function(response) {
349 var response_str = '';
351 // Read the response from ODL side
352 response.on('data', function(chunk) {
353 response_str += chunk;
357 response.on('end', function() {
358 console.log('HTTP StatusCode='+response.statusCode);
359 if(response.statusCode == 200){
361 console.log('response_str='+response_str);
362 callback(null,JSON.parse(response_str));
366 callback(null,'no data');
371 callback(null,response.statusCode);
379 request.on('error', function(err) {
380 callback(null,String(err));
385 var request = https.request(options, function(response) {
386 var response_str = '';
388 // Read the response from ODL side
389 response.on('data', function(chunk) {
390 response_str += chunk;
394 response.on('end', function() {
395 if(response.statusCode == 200){
397 console.log('response_str='+response_str);
398 callback(null,JSON.parse(response_str));
402 callback(null,'no data');
407 callback(null,response.statusCode);
415 request.on('error', function(err) {
416 callback(null,String(err));
422 var _delete = function(uri,options,res,callback) {
423 options.method = 'DELETE';
427 // Setup request to ODL side
428 //var request = https.request(options, function(response) {
429 var request = http.request(options, function(response) {
430 //console.log('STATUS: ' + response.statusCode);
431 var response_str = '';
432 // Read the response from ODL side
433 response.on('data', function(chunk) {
434 response_str += chunk;
437 response.on('end', function() {
438 if(response.statusCode == 200){
443 callback('Error:' + response_str);
448 request.on('error', function(err) {
455 var _post = function(uri,options,data,res,callback)
457 options.method = 'POST';
461 // Setup request to ODL side
463 //if ( process.env.NODE_ENV != 'production' ){
468 var request = protocol.request(options, function(response)
470 var response_str = '';
471 // Read the response from ODL side
472 response.on('data', function(chunk) {
473 response_str += chunk;
474 //logger.debug('chunk:' + chunk);
477 // end of request, check response
478 response.on('end', function() {
479 console.log('post status code:'+response.statusCode);
480 if(response.statusCode == 200 ){
482 var respObj = JSON.parse(response_str);
483 console.log('response_str.length:' + response_str.length);
485 console.log("post response-code:" + respObj['output']['response-code']);
487 if ( respObj['output']['response-code'] == 200 ){
488 callback(null,response_str);
491 callback('Error - response-code:' + respObj['output']['response-code'] + ' response-message:' + respObj['output']['response-message']);
501 callback('Error parsing response: ' + error);
507 if ( response_str.length > 0 ) {
508 console.log('response_str:' + response_str);
510 respObj = JSON.parse(response_str);
511 if ( typeof respObj['errors'] != 'undefined' )
513 console.log('Error' + JSON.stringify(respObj));
514 if ( typeof respObj['errors']['error'][0]['error-message'] != 'undefined' )
516 callback('HTTP Status Code:' + response.statusCode + '. Message:'
517 + respObj['errors']['error'][0]['error-message']);
522 callback('Error - HTTP Status Code:' + response.statusCode + '.');
528 callback('Error - HTTP Status Code:' + response.statusCode + '.');
533 callback('Error - HTTP Status Code:' + response.statusCode + '.');
538 callback('Error - HTTP Status Code:' + response.statusCode + '.');
545 request.on('error', function(err) {
554 var _postSubnetAllocated = function(uri,options,data,callback,res) {
555 options.method = 'POST';
558 // Setup request to ODL side
559 var request = https.request(options, function(response) {
560 var response_str = '';
561 // Read the response from ODL side
562 response.on('data', function(chunk) {
563 response_str += chunk;
566 // end of request, check response
567 response.on('end', function() {
568 //console.log("post: response: " + response_str);
569 callback(response_str,null,res);
572 request.on('error', function(err) {
573 callback(err,null, res);
580 GetClusterStatus: _getClusterStatus,
585 GetPreloadVnfData: _getPreloadVnfData,
587 PostSubnetAllocated: _postSubnetAllocated,
589 Healthcheck: _healthcheck
593 module.exports = OdlInterface;