var superagent = require('superagent'); var config = require('../config/config.json'); exports.nam_nodes; exports.nam_nodes_status; var get_nodes = function (callback, error_callback) { var path = config.NAMFederationDatabase + "/monitoring/nam/hosts_all"; console.log(path) var nam_nodes = {}; superagent.get(path).end(function(error, resp) { if(error) { error_callback(error); } else { var nodes = resp.body; for (var n in nodes) { if (nodes[n].regionId) { if (!nam_nodes[nodes[n].regionId]) { nam_nodes[nodes[n].regionId] = [{ip: nodes[n].ipAddress, port: nodes[n].port_NAM, band: false, lat: false}]; } else { if (nam_nodes[nodes[n].regionId].indexOf(nodes[n].ipAddress) === -1) { nam_nodes[nodes[n].regionId].push({ip: nodes[n].ipAddress, port: nodes[n].port_NAM, band: false, lat: false}); } } } } console.log("nodes") console.log(nam_nodes) callback(nam_nodes); } }); }; exports.update_nodes = function() { console.log('[--] Updating nodes...'); get_nodes(function (nodes) { exports.nam_nodes = nodes; var hash = {}; exports.nam_nodes_status = {}; var total_nodes = Object.keys(nodes).length; console.log('nodes') console.log(nodes) for (var n in nodes) { for(i in nodes[n]){ var band_url = 'http://' + nodes[n][i].ip + ':' + nodes[n][i].port + '/monitoring/nam/bdwstatus'; var lat_url = 'http://' + nodes[n][i].ip + ':' + nodes[n][i].port + '/monitoring/nam/owdstatus'; hash[nodes[n][i].ip + ':' + nodes[n][i].port] = n; exports.nam_nodes_status[n] = {band: false, lat: false}; console.log('[--] Checking for ', n, band_url, lat_url, hash); superagent.get(band_url+'?i='+i).end(function(error, resp) { if(!error && resp.body.bdw_status === 'true') { console.log('[--] Resp band from ', hash[resp.req._headers.host], resp.body); exports.nam_nodes[hash[resp.req._headers.host]][resp.req.path.match(/=(.*)/)[0].replace(/=/, "")].band = true; } else { console.log('[--] Error band ', error); } }); superagent.get(lat_url+'?i='+i).end(function(error, resp) { if(!error && resp.body.odw_status === 'true') { console.log('Resp lat from ', hash[resp.req._headers.host], resp.body); exports.nam_nodes[hash[resp.req._headers.host]][resp.req.path.match(/=(.*)/)[0].replace(/=/, "")].lat = true; console.log(exports.nam_nodes) } else { console.log('[--] Error lat ', error); } }); } } }, function (e) { console.log('[--] Error getting nodes ', e); }); };