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);
    });
}
Example #10
0
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);
}