function getComputeNodeVN (req, res, appData) { var queryData = urlMod.parse(req.url, true); var ip = queryData.query['ip']; var introspectPort = queryData.query['introspectPort']; var dataObjArr = []; var vRouterRestAPI = commonUtils.getRestAPIServer(ip, infraCmn.getvRouetrIntrospectPort(introspectPort)); if(queryData['query'] != null && queryData['query']['x'] != null) { commonUtils.createReqObj(dataObjArr, '/Snh_PageReq?x=' + queryData['query']['x']); } else if(queryData['query'] != null && queryData['query']['vnNameFilter'] != null) { commonUtils.createReqObj(dataObjArr, '/Snh_VnListReq?name=' + queryData['query']['vnNameFilter']); } else { commonUtils.createReqObj(dataObjArr, '/Snh_VnListReq?name='); } async.map(dataObjArr, commonUtils.getServerRespByRestApi(vRouterRestAPI, false), function(err, data) { if ((null == err) && (null != data)) { commonUtils.handleJSONResponse(null, res, data); } else { infraCmn.sendServerRetrieveError(res); } }); }
function getComputeNodeInterface (pubChannel, saveChannelKey, ip, jobData, done) { var dataObjArr = []; var vRouterRestAPI = commonUtils.getRestAPIServer(ip, global.SANDESH_COMPUTE_NODE_PORT); commonUtils.createReqObj(dataObjArr, '/Snh_ItfReq?name='); async.map(dataObjArr, commonUtils.getServerRespByRestApi(vRouterRestAPI, true), commonUtils.doEnsureExecution(function(err, data) { if (data) { redisPub.publishDataToRedis(pubChannel, saveChannelKey, global.HTTP_STATUS_RESP_OK, JSON.stringify(data), JSON.stringify(data), 0, 0, done); } else { redisPub.publishDataToRedis(pubChannel, saveChannelKey, global.HTTP_STATUS_INTERNAL_ERROR, global.STR_CACHE_RETRIEVE_ERROR, global.STR_CACHE_RETRIEVE_ERROR, 0, 0, done); } }, global.DEFAULT_MIDDLEWARE_API_TIMEOUT)); }
/* Function: getSandeshData Req URL: /api/admin/monitor/infrastructure/get-sandesh-data Generic API to get Sandesh data Ex: Client POST body format: {"data":{"ip":"nodeXX","port":"8085","url":"/Snh_VmListReq?uuid="}} */ function getSandeshData (req, res, appData) { var dataObjArr = []; var sandeshReq = req.body; if ((null == sandeshReq) || (null == sandeshReq['data'])) { var err = appErrors.RESTServerError('POST body is empty'); commonUtils.handleJSONResponse(err, res, null); return; } var data = sandeshReq['data']; if ((null == data) || (null == data['ip']) || (null == data['port']) || (null == data['url'])) { var err = new appErrors.RESTServerError('POST body format is not correct,' + ' ip/port/url required'); commonUtils.handleJSONResponse(err, res, null); return; } var nodeRestAPI = commonUtils.getRestAPIServer(data['ip'], data['port']); commonUtils.createReqObj(dataObjArr, data['url']); async.map(dataObjArr, commonUtils.getServerRespByRestApi(nodeRestAPI, false), commonUtils.doEnsureExecution(function(err, data) { if ((null == err) && (data != null)) { /* Created request with single array entry */ data = data[0]; } commonUtils.handleJSONResponse(err, res, data); }, global.DEFAULT_MIDDLEWARE_API_TIMEOUT)); }
function getvRouterFlowsDetail (req, res, appData) { var queryData = urlMod.parse(req.url, true); var flowKey = queryData.query['flowKey']; var ip = queryData.query['ip']; var aclUUID = queryData.query['aclUUID']; var iterKey = queryData.query['iterKey']; var resultJSON = []; var isFetchAll = false; var dataObjArr = []; var reqUrl= null; if ((null == aclUUID) && (null == iterKey)) { if (null == flowKey) { reqUrl = '/Snh_FetchAllFlowRecords?'; } else { reqUrl = '/Snh_NextFlowRecordsSet?flow_key=' + flowKey; } isFetchAll = true; } else { if (null == iterKey) { reqUrl = '/Snh_AclFlowReq?x=' + aclUUID; } else { reqUrl = '/Snh_NextAclFlowReq?x=' + iterKey; } } var vRouterRestApi = commonUtils.getRestAPIServer(ip, global.SANDESH_COMPUTE_NODE_PORT); commonUtils.createReqObj(dataObjArr, reqUrl); infraCmn.sendSandeshRequest(req, res, dataObjArr, vRouterRestApi); }
function getComputeNodeInterface (pubChannel, saveChannelKey, ip, jobData, done) { var dataObjArr = []; var vRouterRestAPI = commonUtils.getRestAPIServer(ip, infraCmn.getvRtrIntrospectPortByJobData(jobData), global.SANDESH_API); commonUtils.createReqObj(dataObjArr,jobData.taskData.appData.url); async.map(dataObjArr, commonUtils.getServerRespByRestApi(vRouterRestAPI, false), commonUtils.doEnsureExecution(function(err, data) { if ((null == err) && (null != data)) { redisPub.publishDataToRedis(pubChannel, saveChannelKey, global.HTTP_STATUS_RESP_OK, JSON.stringify(data), JSON.stringify(data), 0, 0, done); } else { redisPub.publishDataToRedis(pubChannel, saveChannelKey, global.HTTP_STATUS_INTERNAL_ERROR, global.STR_CACHE_RETRIEVE_ERROR, global.STR_CACHE_RETRIEVE_ERROR, 0, 0, done); } }, global.DEFAULT_MIDDLEWARE_API_TIMEOUT)); }
function processComputeNodeAcl (pubChannel, saveChannelKey, jobData, done) { /* We get the interface details from Sandesh */ var url = jobData.taskData.url; var allDetails = false; var sData = {}; var reqUrl = '/Snh_AclReq?uuid='; var pos = url.indexOf(reqUrl); var dataObjArr = []; pos = reqUrl.length; var nodeIp = url.slice(pos); nodeIp = jobData.taskData.appData.ip; if ((nodeIp == null) || (nodeIp.length == 0)) { allDetails = true; } if (allDetails == true) { /* Currently UI does not send this request, so will implement later when requires */ redisPub.publishDataToRedis(pubChannel, saveChannelKey, global.HTTP_STATUS_INTERNAL_ERROR, global.STR_CACHE_RETRIEVE_ERROR, global.STR_CACHE_RETRIEVE_ERROR, 0, 0, done); return; } var vRouterRestAPI = commonUtils.getRestAPIServer(nodeIp, infraCmn.getvRtrIntrospectPortByJobData(jobData), global.SANDESH_API); commonUtils.createReqObj(dataObjArr,url); async.map(dataObjArr, commonUtils.getServerRespByRestApi(vRouterRestAPI, false), commonUtils.doEnsureExecution(function(err, data) { /* Now get flow_count for each ACL UUID */ if ((null != err) || (null == data)) { redisPub.publishDataToRedis(pubChannel, saveChannelKey, global.HTTP_STATUS_INTERNAL_ERROR, global.STR_CACHE_RETRIEVE_ERROR, global.STR_CACHE_RETRIEVE_ERROR, 0, 0, done); return; } getAclFlowByACLSandeshResponse(jobData, nodeIp, data[0], function(result) { redisPub.publishDataToRedis(pubChannel, saveChannelKey, global.HTTP_STATUS_RESP_OK, JSON.stringify(result), JSON.stringify(result), 0, 0, done); }); }, global.DEFAULT_MIDDLEWARE_API_TIMEOUT)); }
function getControlNodeRoutes (req, res, appData) { var queryData = urlMod.parse(req.url, true); var ip = queryData.query['ip']; var routingInst = queryData.query['routingInst']; var routingTable = queryData.query['routingTable']; var prefix = queryData.query['prefix']; var count = queryData.query['limit']; var peerSource = queryData.query['peerSource']; var addrFamily = queryData.query['addrFamily']; var protocol = queryData.query['protocol']; var startRoutingTable = commonUtils.getValueByJsonPath(queryData, 'query;startRoutingTable',''); var startRoutingInstance = commonUtils.getValueByJsonPath(queryData, 'query;startRoutingInstance',''); var startPrefix = commonUtils.getValueByJsonPath(queryData, 'query;startPrefix',''); var dataObjArr = []; if (null == routingInst) { routingInst =''; } if (null == routingTable) { routingTable = ''; } if (null == prefix) { prefix = ''; } if (null == count) { count = ''; } if (addrFamily) { addrFamily = '.' + addrFamily + '.'; } url = '/Snh_ShowRouteReq?routing_table=' + encodeURIComponent(routingTable) + '&routing_instance=' + encodeURIComponent(routingInst) + '&prefix=' + encodeURIComponent(prefix) + '&longer_match=&count=' + count + '&start_routing_table=' + startRoutingTable + '&start_routing_instance=' + startRoutingInstance + '&start_prefix=' + startPrefix; var resultJSON = []; var bgpRtrRestAPI = commonUtils.getRestAPIServer(ip, global.SANDESH_CONTROL_NODE_PORT); commonUtils.createReqObj(dataObjArr, url); async.map(dataObjArr, commonUtils.getServerRespByRestApi(bgpRtrRestAPI, true), function(err, data) { if (data) { commonUtils.handleJSONResponse(null, res, data); } else { commonUtils.handleJSONResponse(null, res, []); } }); }
function getvRouterL2Routes (req, res) { var ip = req.param('ip'); var vrfIndex = req.param('vrfindex'); var introspectPort = req.param('introspectPort'); var index = 0; var dataObjArr = []; var vRouterRestAPI = commonUtils.getRestAPIServer(ip, infraCmn.getvRouetrIntrospectPort(introspectPort), global.SANDESH_API); if (null != vrfIndex) { if(req.param('x') == null) { commonUtils.createReqObj(dataObjArr, '/Snh_Layer2RouteReq?x=' + vrfIndex); } else { commonUtils.createReqObj(dataObjArr, '/Snh_PageReq?x=' + req.param('x')); } sendvRouterRoutes(req, res, dataObjArr, vRouterRestAPI); return; } /* First get the l2index from VRF List */ getVrfIndexList(ip, introspectPort, function(results) { if (null == results) { commonUtils.handleJSONResponse(null, res, []); return; } var vrfListLen = results.length; for (var i = 0; i < vrfListLen; i++) { commonUtils.createReqObj(dataObjArr, '/Snh_Layer2RouteReq?x=' + results[i]['l2index']); } async.map(dataObjArr, commonUtils.getServerRespByRestApi(vRouterRestAPI, false), function(err, data) { if ((null == err) && (null != data)) { commonUtils.handleJSONResponse(null, res, data); } else { infraCmn.sendServerRetrieveError(res); } }); }); }
function getVirtualDNSSandeshRecordsCB (ipObj, callback) { var ip = ipObj['ip']; var dnsName = ipObj['dnsName']; var dataObjArr = []; var reqUrl = '/Snh_ShowVirtualDnsRecords?virtual_dns=' + dnsName; commonUtils.createReqObj(dataObjArr, reqUrl); var dnsAgentRestApi = commonUtils.getRestAPIServer(ip, global.SANDESH_DNS_AGENT_PORT); async.map(dataObjArr, commonUtils.getServerRespByRestApi(dnsAgentRestApi, true), function(err, data) { var dataObj = {'err': err, 'data': data}; callback(null, dataObj); }); }
function getvRouterUCastRoutes (req, res) { var ip = req.param('ip'); var ucIndex = req.param('vrfindex'); var introspectPort = req.param('introspectPort'); var index = 0; var dataObjArr = []; var vRouterRestAPI = commonUtils.getRestAPIServer(ip, infraCmn.getvRouetrIntrospectPort(introspectPort)); //If vrfIndex is passed if (null != ucIndex) { if(req.param('x') == null) { commonUtils.createReqObj(dataObjArr, '/Snh_Inet4UcRouteReq?vrf_index=' + ucIndex); } else { commonUtils.createReqObj(dataObjArr, '/Snh_PageReq?x=' + req.param('x')); } sendvRouterRoutes(req, res, dataObjArr, vRouterRestAPI); return; } /* First get the ucindex from VRF */ getVrfIndexList(ip, introspectPort, function(results) { if (null == results) { commonUtils.handleJSONResponse(null, res, []); return; } var vrfListLen = results.length; for (var i = 0; i < vrfListLen; i++) { commonUtils.createReqObj(dataObjArr, '/Snh_Inet4UcRouteReq?vrf_index=' + results[i]['ucindex']); } async.map(dataObjArr, commonUtils.getServerRespByRestApi(vRouterRestAPI, true), function(err, data) { if (data) { commonUtils.handleJSONResponse(null, res, data); } else { commonUtils.handleJSONResponse(null, res, []); } }); }); }
function getComputeNodeVN (req, res, appData) { var queryData = urlMod.parse(req.url, true); var ip = queryData.query['ip']; var dataObjArr = []; var vRouterRestAPI = commonUtils.getRestAPIServer(ip, global.SANDESH_COMPUTE_NODE_PORT); commonUtils.createReqObj(dataObjArr, '/Snh_VnListReq?name='); async.map(dataObjArr, commonUtils.getServerRespByRestApi(vRouterRestAPI, false), function(err, data) { if (!err) { commonUtils.handleJSONResponse(null, res, data); } else { commonUtils.handleJSONResponse(err, res, []); } }); }
function getvRouterL2Routes (req, res) { var ip = req.param('ip'); var vrfIndex = req.param('vrfindex'); var index = 0; var dataObjArr = []; var vRouterRestAPI = commonUtils.getRestAPIServer(ip, global.SANDESH_COMPUTE_NODE_PORT); if (null != vrfIndex) { commonUtils.createReqObj(dataObjArr, '/Snh_Layer2RouteReq?x=' + vrfIndex); sendvRouterRoutes(req, res, dataObjArr, vRouterRestAPI); return; } /* First get the l2index from VRF List */ getVrfIndexList(ip, function(results) { if (null == results) { commonUtils.handleJSONResponse(null, res, []); return; } var vrfListLen = results.length; for (var i = 0; i < vrfListLen; i++) { commonUtils.createReqObj(dataObjArr, '/Snh_Layer2RouteReq?x=' + results[i]['l2index']); } async.map(dataObjArr, commonUtils.getServerRespByRestApi(vRouterRestAPI, true), function(err, data) { if (data) { commonUtils.handleJSONResponse(null, res, data); } else { commonUtils.handleJSONResponse(null, res, []); } }); }); }
function getControlNodeRoutingInstanceList (req, res, appData) { var queryData = urlMod.parse(req.url, true); var ip = queryData.query['ip']; var nextKey = queryData.query['lastKey']; var hostname = queryData.query['hostname']; var url = '/Snh_ShowRoutingInstanceSummaryReq?'; var dataObjArr = []; if (null != nextKey) { url = '/Snh_ShowRoutingInstanceSummaryReqIterate?x=' + nextKey; } var bgpRtrRestAPI = commonUtils.getRestAPIServer(ip, global.SANDESH_CONTROL_NODE_PORT); commonUtils.createReqObj(dataObjArr, url); async.map(dataObjArr, commonUtils.getServerRespByRestApi(bgpRtrRestAPI, false), function(err, results) { if ((null == err) && (null != results) && (null != results[0])) { var data = results[0]; var nextKey = commonUtils.getValueByJsonPath(data, 'ShowRoutingInstanceSummaryResp;next_batch', null); data['lastKey'] = nextKey; if ((null == nextKey) || ("" == nextKey)) { data['more'] = false; } else { data['more'] = true; } delete data['next_batch']; commonUtils.handleJSONResponse(err, res, data); } else { commonUtils.handleJSONResponse(err, res, null); } }); }
function getControlNodeSandeshRequest (req, res, appData) { var ip = req.param('ip'); var type = req.param('type'); var dataObjArr = []; var url = null; if (type == 'service-chain') { url = '/Snh_ShowServiceChainReq?'; } else if (type == 'multicast-tree') { var rtTab = req.param('name'); if (null == rtTab) { url = '/Snh_ShowMulticastManagerReq?'; } else { url = '/Snh_ShowMulticastManagerDetailReq?x=' + rtTab; } } else if (type == 'routing-inst') { var name = req.param('name'); if (null == name) { url = '/Snh_ShowRoutingInstanceReq?name='; } else { url = '/Snh_ShowRoutingInstanceReq?x=' + name; } } else if (type == 'static-route') { riName = req.param('name'); if (null == riName) { url = '/Snh_ShowStaticRouteReq?ri_name='; } else { url = '/Snh_ShowStaticRouteReq?ri_name=' + riName; } } var controlNodeRestApi = commonUtils.getRestAPIServer(ip, global.SANDESH_CONTROL_NODE_PORT); commonUtils.createReqObj(dataObjArr, url); infraCmn.sendSandeshRequest(req, res, dataObjArr, controlNodeRestApi); }