diff --git a/webroot/common/api/infra.common.api.js b/webroot/common/api/infra.common.api.js index 7bb6471a7..f7088d149 100644 --- a/webroot/common/api/infra.common.api.js +++ b/webroot/common/api/infra.common.api.js @@ -126,7 +126,7 @@ function getProcStateMappedModule(moduleName) { switch (moduleName) { case 'VRouterAgent': - return 'contrail-vrouter'; + return 'contrail-vrouter-agent'; case 'ControlNode': return 'contrail-control'; default: @@ -136,7 +136,7 @@ function getProcStateMappedModule(moduleName) function getNodeStatusByUVE (moduleName, uveData) { - var procStateList = jsonPath(uveData, "$..process_state_list"); + var procStateList = jsonPath(uveData, "$..NodeStatus.process_info"); if (procStateList.length == 0) { /* Why? */ return 'Down'; @@ -308,7 +308,7 @@ function getvRouterSummaryConfigUVEData (configData, uuidList, nodeList, addGen, 'VrouterAgent:total_interface_count', 'VrouterAgent:down_interface_count', 'VrouterAgent:connected_networks', 'VrouterAgent:control_ip', 'VrouterAgent:build_info', - 'VrouterStatsAgent:cpu_share', 'VrouterStatsAgent:process_state_list']; + 'VrouterStatsAgent:cpu_share', 'NodeStatus']; var postData = {}; if (null != nodeList) { var nodeCnt = nodeList.length; diff --git a/webroot/menu.xml b/webroot/menu.xml index 6e6e6be3c..88544fffd 100644 --- a/webroot/menu.xml +++ b/webroot/menu.xml @@ -9,19 +9,23 @@ If any role/orchModel tag is with negation(!) value then every one has access to and need to add the iconClass tag wherever we need to show some icons --> - + + + + monitor + icon-bar-chart + - - monitor - icon-bar-chart - - + + /monitor/infra/common/ui monitor_infra_constants.js monitor_infra_utils.js monitor_infra_common.view monitor_infra_common.css + + icon-desktop @@ -36,10 +40,14 @@ and need to add the iconClass tag wherever we need to show some icons mon_infra_dashboard + + /monitor/infra/dashboard/ui monitor_infra_dashboard.view monitor_infra_dashboard.js infraMonitorDashboardView + + vRouters @@ -48,6 +56,8 @@ and need to add the iconClass tag wherever we need to show some icons mon_infra_control + + /monitor/infra/controlnode/ui monitor_infra_controlnode.view monitor_infra_controlnode.js @@ -56,11 +66,15 @@ and need to add the iconClass tag wherever we need to show some icons monitor_infra_controlnode_peers.js monitor_infra_controlnode_routes.js ctrlNodesView + + Monitor Control Nodes mon_infra_vrouter + + /monitor/infra/vrouter/ui monitor_infra_vrouter.view monitor_infra_vrouter.js @@ -72,11 +86,15 @@ and need to add the iconClass tag wherever we need to show some icons monitor_infra_vrouter_flows.js monitor_infra_vrouter_routes.js cmpNodesView + + Monitor Compute Nodes mon_infra_analytics + + /monitor/infra/analyticsnode/ui monitor_infra_analyticnode.view monitor_infra_analyticnode.js @@ -85,17 +103,23 @@ and need to add the iconClass tag wherever we need to show some icons monitor_infra_analyticsnode_generators.js monitor_infra_analyticsnode_qequeries.js aNodesView + + Monitor Analytics Nodes mon_infra_config + + /monitor/infra/confignode/ui monitor_infra_confignode.view monitor_infra_confignode.js monitor_infra_confignode_summary.js monitor_infra_confignode_details.js confNodesView + + Monitor Config Nodes - - - - networking - - /monitor/tenant-network/common/ui - tenant_monitor_topology.js - tenant_monitor_utils.js - tenant_monitor_common.view - icon-sitemap - - - - mon_net_dashboard - /monitor/tenant-network/dashboard/ui - tenant_monitor_dashboard.view - tenant_monitor_dashboard.js - tenantNetworkMonitorView - - default-domain - - Networking Dashboard - - - - mon_net_projects - /monitor/tenant-network/project/ui - tenant_monitor_project.js - tenant_monitor_project.view - tenantNetworkMonitorView - - list - project - uve - - Monitor Projects - - - - mon_net_networks - /monitor/tenant-network/network/ui - tenant_monitor_network.view - tenant_monitor_network.js - tenantNetworkMonitorView - - list - network - uve - - Monitor Networks - - - - - mon_net_instances - /monitor/tenant-network/instance/ui - tenant_monitor_instance.view - tenant_monitor_instance.js - tenantNetworkMonitorView - - list - instance - uve - - Monitor instances - - - - - debug - - icon-puzzle-piece - - - - mon_debug_pcapture - /monitor/debug/packet_capture - packet_capture.js - packet_capture.view - PacketCaptureObj - Packet Capture, Analyzer - - - - - + + + + + configure + + icon-wrench + - configure - - icon-wrench - - - - - - admin - - - openstack - cloudstack - - - icon-desktop - - - - - config_infra_bgp - /config/bgp/ui - bgp_config.view - bgp_config.js - bgpConfigObj - Configure BGP Peers - - - - config_infra_fwdoptions - /config/forwardingoptions/ui - fwd_options_config.view - fwd_options_config.js - fwdOptionsConfigObj - Configure Fowarding Options - - - - config_infra_lls - /config/linklocalservices/ui - lls_config.view - lls_config.js - llsConfigObj - Configure Link Local Services - - - - + + + + + setting + icon-cog + + + admin + + + openstack + cloudstack + + + + + + icon-table + + + setting_configdb_fqname + + + + /setting/config_db + cdb_query.view + cdb_query.js + fqNameTableObj + + + + + setting_configdb_uuid + + + + /setting/config_db + cdb_query.view + cdb_query.js + uuidTableObj + + + + + + + + + query + icon-search + + + admin + + + openstack + cloudstack + + + - - setting - icon-cog - - - admin - - - openstack - cloudstack - - - - - - icon-table - - - setting_configdb_fqname - - /setting/config_db - cdb_query.view - cdb_query.js - fqNameTableObj - - - setting_configdb_uuid - - /setting/config_db - cdb_query.view - cdb_query.js - uuidTableObj - - - - + + icon-exchange + + + query_flow_series + + + + /reports + flow_queries.view + queries.view + flow_queries.js + flowSeriesObj + + + Query Flow Series + + + query_flow_records + + + + /reports + flow_queries.view + queries.view + flow_queries.js + flowRecordsObj + + + Query Flow Records + + + query_flow_queue + + + + /reports + flow_queries.view + queries.view + flow_queries.js + flowQueryQueueObj + + + Flow Query Queue + + - - query - icon-search - - - admin - - - openstack - cloudstack - - - - - - icon-exchange - - - query_flow_series - - /reports - flow_queries.view - queries.view - flow_queries.js - flowSeriesObj - Query Flow Series - - - query_flow_records - - /reports - flow_queries.view - queries.view - flow_queries.js - flowRecordsObj - Query Flow Records - - - query_flow_queue - - /reports - flow_queries.view - queries.view - flow_queries.js - flowQueryQueueObj - Flow Query Queue - - - - - - icon-hdd - - - query_log_system - - /reports - log_queries.view - queries.view - log_queries.js - systemLogsObj - Query System Logs - - - query_log_object - - /reports - log_queries.view - queries.view - log_queries.js - objectLogsObj - Query Object Logs - - - query_log_queue - - /reports - log_queries.view - queries.view - log_queries.js - logQueryQueueObj - Logs Query Queue - - - - - + + icon-hdd + + + query_log_system + + + + /reports + log_queries.view + queries.view + log_queries.js + systemLogsObj + + + Query System Logs + + + query_log_object + + + + /reports + log_queries.view + queries.view + log_queries.js + objectLogsObj + + + Query Object Logs + + + query_log_queue + + + + /reports + log_queries.view + queries.view + log_queries.js + logQueryQueueObj + + + Logs Query Queue + + - + + + + + diff --git a/webroot/monitor/infra/analyticsnode/api/analyticsnode.api.js b/webroot/monitor/infra/analyticsnode/api/analyticsnode.api.js index b2ff4c2e5..fe7902382 100644 --- a/webroot/monitor/infra/analyticsnode/api/analyticsnode.api.js +++ b/webroot/monitor/infra/analyticsnode/api/analyticsnode.api.js @@ -32,7 +32,7 @@ function getAnalyticsNodeSummary (req, res, appData) var collPostData = {}; collPostData['cfilt'] = ['ModuleCpuState', 'CollectorState:self_ip_list', 'CollectorState:build_info', 'CollectorState:tx_socket_stats', - 'CollectorState:rx_socket_stats']; + 'CollectorState:rx_socket_stats','NodeStatus']; commonUtils.createReqObj(dataObjArr, reqUrl, global.HTTP_REQUEST_POST, collPostData, opApiServer, null, appData); diff --git a/webroot/monitor/infra/analyticsnode/ui/js/monitor_infra_analyticsnode_details.js b/webroot/monitor/infra/analyticsnode/ui/js/monitor_infra_analyticsnode_details.js index a8d2c4874..59a375c1c 100644 --- a/webroot/monitor/infra/analyticsnode/ui/js/monitor_infra_analyticsnode_details.js +++ b/webroot/monitor/infra/analyticsnode/ui/js/monitor_infra_analyticsnode_details.js @@ -60,82 +60,9 @@ monitorInfraAnalyticsDetailsClass = (function() { return contrail.format(monitorInfraUrls['FLOWSERIES_CPU'], 'OpServer', '30', '10', obj['name'], endTime); }, parser: "parseProcessMemCPUData", plotOnLoad: false, showWidgetIds: ['opServer-chart-box'], hideWidgetIds: ['collector-chart-box', 'queryengine-chart-box'], titles: {memTitle:'Memory',cpuTitle:'% CPU Utilization'}}),110); }); - var procStateList, overallStatus = noDataStr; - var analyticsProcessStatusList = []; var statusTemplate = contrail.getTemplate4Id("statusTemplate"); - overallStatus = getOverallNodeStatusForDetails(parsedData); - procStateList = getValueByJsonPath(aNodeData,"ModuleCpuState;process_state_list",[]); - analyticsProcessStatusList = getStatusesForAllAnalyticsProcesses(procStateList); - aNodeDashboardInfo = [ - {lbl:'Hostname', value:obj['name']}, - {lbl:'IP Address', value:(function(){ - var ips = ''; - iplist = getValueByJsonPath(aNodeData,"CollectorState;self_ip_list",[]); - if(iplist != null && iplist.length>0){ - for (var i=0; i< iplist.length;i++){ - if(i+1 == iplist.length) { - ips = ips + iplist[i]; - } else { - ips = ips + iplist[i] + ', '; - } - } - } else { - ips = noDataStr; - } - return ips; - })()}, - {lbl:'Version', value:parsedData['version'] != '-' ? parsedData['version'] : noDataStr}, - {lbl:'Overall Node Status', value:overallStatus}, - {lbl:'Processes', value:" "}, - /*{lbl:INDENT_RIGHT+'Analytics Node Manager', value:(function(){ - try{ - return ifNull(analyticsProcessStatusList['contrail-analytics-nodemgr'],noDataStr); - }catch(e){return noDataStr;} - })()},*/ - {lbl:INDENT_RIGHT+'Collector', value:(function(){ - return ifNull(analyticsProcessStatusList['contrail-collector'],noDataStr); - })()}, - {lbl:INDENT_RIGHT+'Query Engine', value:(function(){ - return ifNull(analyticsProcessStatusList['contrail-qe'],noDataStr); - })()}, - {lbl:INDENT_RIGHT+'OpServer', value:(function(){ - return ifNull(analyticsProcessStatusList['contrail-opserver'],noDataStr); - })()}, - /* {lbl:INDENT_RIGHT+'Redis Sentinel', value:(function(){ - return ifNull(analyticsProcessStatusList['redis-sentinel'],noDataStr); - })()},*/ - {lbl:'CPU', value:$.isNumeric(parsedData['cpu']) ? parsedData['cpu'] + ' %' : noDataStr}, - {lbl:'Memory', value:parsedData['memory'] != '-' ? parsedData['memory'] : noDataStr}, - {lbl:'Messages', value:(function(){ - var msgs = getAnalyticsMessagesCountAndSize(aNodeData,['Collector']); - return msgs['count'] + ' [' + formatBytes(msgs['size']) + ']'; - })()}, - {lbl:'Generators', value:(function(){ - var ret=''; - var genno; - try{ - if(aNodeData.CollectorState["generator_infos"]!=null){ - genno = aNodeData.CollectorState["generator_infos"].length; - }; - ret = ret + ifNull(genno,noDataStr); - }catch(e){ return noDataStr;} - return ret; - })()}, - {lbl:'Last Log', value: (function(){ - var lmsg; - lmsg = getLastLogTimestamp(aNodeData,"analytics"); - if(lmsg != null){ - try{ - return new Date(parseInt(lmsg)/1000).toLocaleString(); - }catch(e){return noDataStr;} - } else return noDataStr; - })()} - //'vRouters ' + aNodeData['establishedPeerCount'] + ', ' + - //'Collectors ' + aNodeData['activevRouterCount'] + ', ' + - //'Analytics Nodes ' + aNodeData['activevRouterCount'] + ', ' + - //'Config Nodes ' + aNodeData['activevRouterCount']}, - ] + aNodeDashboardInfo = getAnalyticsNodeLblValuePairs(parsedData); /*Selenium Testing*/ aNodeDetailsData = aNodeDashboardInfo; /*End of Selenium Testing*/ @@ -172,21 +99,3 @@ monitorInfraAnalyticsDetailsClass = (function() { return {populateDetailsTab:populateDetailsTab}; })(); -function getStatusesForAllAnalyticsProcesses(processStateList){ - var ret = []; - if(processStateList != null){ - for(var i=0; i < processStateList.length; i++){ - var currProc = processStateList[i]; - if (currProc.process_name == "contrail-qe"){ - ret['contrail-qe'] = getProcessUpTime(currProc); - } else if (currProc.process_name == "contrail-analytics-nodemgr"){ - ret['contrail-analytics-nodemgr'] = getProcessUpTime(currProc); - } else if (currProc.process_name == "contrail-opserver"){ - ret['contrail-opserver'] = getProcessUpTime(currProc); - } else if (currProc.process_name == "contrail-collector"){ - ret['contrail-collector'] = getProcessUpTime(currProc); - } - } - } - return ret; -} diff --git a/webroot/monitor/infra/analyticsnode/ui/js/monitor_infra_analyticsnode_summary.js b/webroot/monitor/infra/analyticsnode/ui/js/monitor_infra_analyticsnode_summary.js index 19c89e76c..c356253c1 100644 --- a/webroot/monitor/infra/analyticsnode/ui/js/monitor_infra_analyticsnode_summary.js +++ b/webroot/monitor/infra/analyticsnode/ui/js/monitor_infra_analyticsnode_summary.js @@ -29,7 +29,29 @@ monitorInfraAnalyticsSummaryClass = (function() { autoHeight : true, enableAsyncPostRender: true, forceFitColumns:true, - lazyLoading:true + lazyLoading:true, + detail:{ + template: $("#gridDetailTemplate").html(), + onExpand: function (e,dc) { + var detailTemplate = contrail.getTemplate4Id('infra-summary-details-template'); + var rowData = e.data; + var grid = $(e['target']).closest('div.contrail-grid'); + var dataItem = dc; + var data = getAnalyticsNodeLblValuePairs(dc); + data = {d:data}; + //Issue a call for fetching the details + if(data != null) { + e.detailRow.find('.row-fluid.advancedDetails').html('
' + syntaxHighlight(dc.raw_json) + '
'); + //DataItem consists of row data,passing it as a parameter to the parsefunction + e.detailRow.find('.row-fluid.basicDetails').html(detailTemplate(data)); + $(grid).data('contrailGrid').adjustDetailRowHeight(dataItem['id']); + } else { + e.detailRow.find('.row-fluid.basicDetails').html(detailTemplate(data)); + } + }, + onCollapse:function (e,dc) { + } + } }, dataSource: { dataView: analyticsNodesDataSource, @@ -54,6 +76,9 @@ monitorInfraAnalyticsSummaryClass = (function() { field:"name", id:"name", name:"Host name", + sortable : { + sortBy: 'formattedValue' + }, formatter:function(r,c,v,cd,dc) { return cellTemplateLinks({cellText:'name',name:'name',statusBubble:true,rowData:dc}); }, @@ -69,7 +94,7 @@ monitorInfraAnalyticsSummaryClass = (function() { } }, cssClass: 'cell-hyperlink-blue', - minWidth:110, + minWidth:175, sortable:true }, { @@ -88,13 +113,6 @@ monitorInfraAnalyticsSummaryClass = (function() { } } }, - { - field:"version", - id:"version", - name:"Version", - sortable:true, - minWidth:110 - }, { field:"status", id:"status", @@ -114,6 +132,20 @@ monitorInfraAnalyticsSummaryClass = (function() { } } }, + { + field:"genCount", + id:"genCount", + sortable:true, + name:"Generators", + minWidth:85 + }, + { + field:"version", + id:"version", + name:"Version", + sortable:true, + minWidth:110 + }, { field:"cpu", id:"analyticsCpu", @@ -127,11 +159,11 @@ monitorInfraAnalyticsSummaryClass = (function() { }, minWidth:120, exportConfig: { - allow: true, - advFormatter: function(dc) { - return dc.cpu - } - } + allow: true, + advFormatter: function(dc) { + return dc.cpu + } + } }, { field:"memory", @@ -140,13 +172,6 @@ monitorInfraAnalyticsSummaryClass = (function() { name:"Memory", minWidth:150 }, - { - field:"genCount", - id:"genCount", - sortable:true, - name:"Generators", - minWidth:85 - } ], } }); diff --git a/webroot/monitor/infra/common/ui/js/monitor_infra_utils.js b/webroot/monitor/infra/common/ui/js/monitor_infra_utils.js index 4bc6d0009..17e4db3f0 100644 --- a/webroot/monitor/infra/common/ui/js/monitor_infra_utils.js +++ b/webroot/monitor/infra/common/ui/js/monitor_infra_utils.js @@ -2,6 +2,12 @@ * Copyright (c) 2014 Juniper Networks, Inc. All rights reserved. */ var consoleTimer = []; +var chartsLegend = { + Working: d3Colors['green'], + Idle: d3Colors['blue'], + Warning: d3Colors['orange'], + Error: d3Colors['red'] + }; var infraMonitorAlertUtils = { /** * Process-specific alerts @@ -11,7 +17,7 @@ var infraMonitorAlertUtils = { if(processPath != null) res = getValueByJsonPath(data['value'],processPath,[]); else - res = ifNull(jsonPath(data,'$..process_state_list')[0],[]); + res = ifNull(jsonPath(data,'$..NodeStatus.process_info')[0],[]); var alerts=[]; var infoObj = {type:obj['display_type'],link:obj['link']}; if(obj['isUveMissing'] == true) @@ -223,13 +229,15 @@ var infraMonitorUtils = { parsevRoutersDashboardData : function(result,isSummaryPage) { var retArr = []; var vRouterCnt = result.length; + for(var i=0;i 0){ - obj['errorIntfCntText'] = ", " + obj['errorIntfCnt'] + " Down"; + obj['errorIntfCntText'] = "
" + obj['errorIntfCnt'] + " Down"; } else { obj['errorIntfCntText'] = ""; } @@ -294,7 +303,7 @@ var infraMonitorUtils = { if(obj['isUveMissing'] == false && obj['isConfigMissing'] == false && obj['isPartialUveMissing'] == false) { obj['uveCfgIPMisMatch'] = (obj['uveIP'].indexOf(obj['configIP']) == -1 && obj['configIP'] != '-') ? true : false; } - obj['processAlerts']= infraMonitorAlertUtils.getProcessAlerts(d,obj,'VrouterStatsAgent;process_state_list'); + obj['processAlerts']= infraMonitorAlertUtils.getProcessAlerts(d,obj,'NodeStatus;process_info'); obj['isGeneratorRetrieved'] = false; obj['nodeAlerts'] = infraMonitorAlertUtils.processvRouterAlerts(obj); obj['alerts'] = obj['nodeAlerts'].concat(obj['processAlerts']).sort(dashboardUtils.sortInfraAlerts); @@ -312,6 +321,7 @@ var infraMonitorUtils = { var retArr = []; $.each(result,function(idx,d) { var obj = {}; + obj['raw_json'] = d; obj['x'] = parseFloat(jsonPath(d,'$..cpu_info.cpu_share')[0]); obj['y'] = parseInt(jsonPath(d,'$..meminfo.virt')[0])/1024; //Convert to MB obj['cpu'] = $.isNumeric(obj['x']) ? obj['x'].toFixed(2) : '-'; @@ -351,7 +361,7 @@ var infraMonitorUtils = { obj['downBgpPeerCnt'] = obj['totalBgpPeerCnt'] - obj['upBgpPeerCnt']; } if(obj['downXMPPPeerCnt'] > 0){ - obj['downXMPPPeerCntText'] = ", " + obj['downXMPPPeerCnt'] + " Down"; + obj['downXMPPPeerCntText'] = "
" + obj['downXMPPPeerCnt'] + " Down"; } else { obj['downXMPPPeerCntText'] = ""; } @@ -368,7 +378,7 @@ var infraMonitorUtils = { } } if(obj['downBgpPeerCnt'] > 0){ - obj['downBgpPeerCntText'] = ", " + obj['downBgpPeerCnt'] + " Down"; + obj['downBgpPeerCntText'] = "
" + obj['downBgpPeerCnt'] + " Down"; } else { obj['downBgpPeerCntText'] = ""; } @@ -405,6 +415,7 @@ var infraMonitorUtils = { var retArr = []; $.each(result,function(idx,d) { var obj = {}; + obj['raw_json'] = d; obj['x'] = parseFloat(jsonPath(d,'$..ModuleCpuState.module_cpu_info[?(@.module_id=="Collector")]..cpu_share')[0]); obj['y'] = parseInt(jsonPath(d,'$..ModuleCpuState.module_cpu_info[?(@.module_id=="Collector")]..meminfo.virt')[0])/1024; obj['cpu'] = $.isNumeric(obj['x']) ? obj['x'].toFixed(2) : '-'; @@ -465,6 +476,7 @@ var infraMonitorUtils = { var retArr = []; $.each(result,function(idx,d) { var obj = {}; + obj['raw_json'] = d; obj['x'] = parseFloat(jsonPath(d,'$..ModuleCpuState.module_cpu_info[?(@.module_id=="ApiServer")]..cpu_share')[0]); obj['y'] = parseInt(jsonPath(d,'$..ModuleCpuState.module_cpu_info[?(@.module_id=="ApiServer")]..meminfo.virt')[0])/1024; obj['cpu'] = $.isNumeric(obj['x']) ? obj['x'].toFixed(2) : '-'; @@ -893,7 +905,7 @@ var infraMonitorUtils = { function getCores(data) { var fileList=[],result=[]; - var fileArrList=ifNull(jsonPath(data,'$..process_state_list[*].core_file_list'),[]); + var fileArrList=ifNull(jsonPath(data,'$..NodeStatus.process_info[*].core_file_list'),[]); for(var i=0;i";} + try{ + procStateList = jsonPath(ctrlNodeData,"$..NodeStatus.process_info")[0]; + controlProcessStatusList = getStatusesForAllControlProcesses(procStateList); + }catch(e){} + var ctrlNodeDashboardInfo = [ + {lbl:'Hostname', value:parsedData.name}, + {lbl:'IP Address',value:(function(){ + var ip = ifNullOrEmpty(getControlIpAddresses(ctrlNodeData,"details"),noDataStr); + return ip; + })()}, + {lbl:'Overall Node Status', value:overallStatus}, + {lbl:'Processes', value:" "}, + {lbl:INDENT_RIGHT+'Control Node', value:(function(){ + return ifNull(controlProcessStatusList['contrail-control'],noDataStr); + })()}, + /*{lbl:INDENT_RIGHT+'Control Node Manager', value:(function(){ + try{ + return ifNull(controlProcessStatusList['contrail-control-nodemgr'],noDataStr); + }catch(e){return noDataStr;} + })()},*/ + {lbl:'Ifmap Connection', value:(function(){ + var cnfNode = ''; + try{ + var url = ctrlNodeData.BgpRouterState.ifmap_info.url; + if(url != null && url != undefined && url != ""){ + var pos = url.indexOf(':8443'); + if(pos != -1) + cnfNode = url.substr(0, pos); + pos = cnfNode.indexOf('https://'); + if(pos != -1) + cnfNode = cnfNode.slice(pos + 8) ; + } + var status = ctrlNodeData.BgpRouterState.ifmap_info.connection_status; + var stateChangeAtTime = ctrlNodeData.BgpRouterState.ifmap_info.connection_status_change_at; + var stateChangeSince = ""; + var statusString = ""; + if(stateChangeAtTime != null){ + var stateChangeAtTime = new XDate(stateChangeAtTime/1000); + var currTime = new XDate(); + stateChangeSince = diffDates(stateChangeAtTime,currTime); + } + if(status != null && status != undefined && status != ""){ + if(stateChangeSince != ""){ + if(status.toLowerCase() == "up" || status.toLowerCase() == "down"){ + status = status + " since"; + } + statusString = status + " " + stateChangeSince; + } else { + statusString = status; + } + } + if(statusString != ""){ + cnfNode = cnfNode.concat( ' (' + statusString + ')'); + } + }catch (e){} + return ifNull(cnfNode,noDataStr); + })()}, + {lbl:'Analytics Node', value:(function(){ + var anlNode = noDataStr; + var secondaryAnlNode, status; + try{ + //anlNode = ifNull(computeNodeData.VrouterAgent.collector,noDataStr); + anlNode = jsonPath(ctrlNodeData,"$..ModuleClientState..primary")[0].split(':')[0]; + status = jsonPath(ctrlNodeData,"$..ModuleClientState..status")[0]; + secondaryAnlNode = jsonPath(ctrlNodeData,"$..ModuleClientState..secondary")[0].split(':')[0]; + }catch(e){ + anlNode = "--"; + } + try{ + if(anlNode != null && anlNode != noDataStr && status.toLowerCase() == "established") + anlNode = anlNode.concat(' (Up)'); + }catch(e){ + if(anlNode != null && anlNode != noDataStr) { + anlNode = anlNode.concat(' (Down)'); + } + } + if(secondaryAnlNode != null && secondaryAnlNode != "" && secondaryAnlNode != "0.0.0.0"){ + anlNode.concat(', ' + secondaryAnlNode); + } + return ifNull(anlNode,noDataStr); + })()}, + //TODO{lbl:'Config Messages', value:ctrlNodeData['configMessagesIn'] + ' In, ' + ctrlNodeData['configMessagesOut'] + ' Out'}, + {lbl:'Analytics Messages', value:(function(){ + var msgs = getAnalyticsMessagesCountAndSize(ctrlNodeData,['ControlNode']); + return msgs['count'] + ' [' + formatBytes(msgs['size']) + ']'; + })()}, + {lbl:'Peers', value:(function(){ + var totpeers= 0,uppeers=0; + totpeers= ifNull(parsedData['totalBgpPeerCnt'],0); + uppeers = ifNull(parsedData['upBgpPeerCnt'],0); + var downpeers = 0; + if(totpeers > 0){ + downpeers = totpeers - uppeers; + } + if (downpeers > 0){ + downpeers = ", "+ downpeers +" Down"; + } else { + downpeers = ""; + } + return contrail.format('BGP Peers: {0} Total {1}',totpeers,downpeers); + })()}, + {lbl:'',value:(function(){ + var totXmppPeers = 0,upXmppPeers = 0,downXmppPeers = 0,subsCnt = 0; + totXmppPeers = parsedData['totalXMPPPeerCnt']; + upXmppPeers = parsedData['upXMPPPeerCnt']; + subsCnt = ifNull(jsonPath(ctrlNodeData,'$..BgpRouterState.ifmap_server_info.num_peer_clients')[0],0) + if(totXmppPeers > 0){ + downXmppPeers = totXmppPeers - upXmppPeers; + } + if (downXmppPeers > 0){ + downXmppPeers = ", "+ downXmppPeers +" Down"; + } else { + downXmppPeers = ""; + } + if (subsCnt > 0){ + subsCnt = ", "+ subsCnt +" subscribed for configuration"; + } else { + subsCnt = "" + } + return contrail.format('vRouters: {0} Established in Sync{1}{2} ', + upXmppPeers,downXmppPeers,subsCnt); + })()}, + {lbl:'CPU', value:$.isNumeric(parsedData['cpu']) ? parsedData['cpu'] + ' %' : noDataStr}, + {lbl:'Memory', value:parsedData['memory'] != '-' ? parsedData['memory'] : noDataStr}, + {lbl:'Version', value:parsedData['version'] != '-' ? parsedData['version'] : noDataStr}, + {lbl:'Last Log', value: (function(){ + var lmsg; + lmsg = getLastLogTimestamp(ctrlNodeData,"control"); + if(lmsg != null){ + try{ + return new Date(parseInt(lmsg)/1000).toLocaleString(); + }catch(e){return noDataStr;} + } else return noDataStr; + })()} + ]; + } + return ctrlNodeDashboardInfo; +} + +function getStatusesForAllControlProcesses(processStateList){ + var ret = []; + if(processStateList != null){ + for(var i=0; i < processStateList.length; i++){ + var currProc = processStateList[i]; + if(currProc.process_name == "contrail-control-nodemgr"){ + ret['contrail-control-nodemgr'] = getProcessUpTime(currProc); + } else if(currProc.process_name == "contrail-control"){ + ret['contrail-control'] = getProcessUpTime(currProc); + } + } + } + return ret; + } + +/*****\END Get label value pairs for Control Node details and detail template in summary *****/ + + +/**** Get label value pairs for vRouter Node details and detail template in summaryv****/ +function getvRouterDetailsLblValuePairs(parsedData) { + var computeNodeDashboardInfo = []; + var computeNodeData; + if(parsedData.raw_json != null && parsedData.raw_json.value){ + computeNodeData = parsedData.raw_json.value; + } + if(computeNodeData != null){ + var overallStatus = getOverallNodeStatusForDetails(parsedData); + var procStateList = getValueByJsonPath(computeNodeData,"NodeStatus;process_info"); + var vRouterProcessStatusList = getStatusesForAllvRouterProcesses(procStateList); + + computeNodeDashboardInfo = [ + {lbl:'Hostname', value:parsedData.name}, + {lbl:'IP Address', value:(function(){ + return ifNullOrEmpty(getVrouterIpAddresses(computeNodeData,"details"),noDataStr); + })()}, + {lbl:'Overall Node Status', value:overallStatus}, + {lbl:'Processes', value:" "}, + {lbl:INDENT_RIGHT+'vRouter Agent', value:(function(){ + return ifNull(vRouterProcessStatusList['contrail-vrouter-agent'],noDataStr); + })()}, + /*{lbl:INDENT_RIGHT+'vRouter Node Manager', value:(function(){ + try{ + return ifNull(vRouterProcessStatusList['contrail-vrouter-nodemgr'],noDataStr); + }catch(e){return noDataStr;} + })()}, + {lbl:INDENT_RIGHT+'Openstack Nova Compute', value:(function(){ + try{ + return ifNull(vRouterProcessStatusList['openstack-nova-compute'],noDataStr); + }catch(e){return noDataStr;} + })()},*/ + {lbl:'Analytics Node', value:(function(){ + var anlNode = noDataStr; + var secondaryAnlNode, status; + try{ + //anlNode = ifNull(computeNodeData.VrouterAgent.collector,noDataStr); + anlNode = jsonPath(computeNodeData,"$..ModuleClientState..primary")[0].split(':')[0]; + status = jsonPath(computeNodeData,"$..ModuleClientState..status")[0]; + secondaryAnlNode = jsonPath(computeNodeData,"$..ModuleClientState..secondary")[0].split(':')[0]; + }catch(e){ + anlNode = noDataStr; + } + try{ + if(anlNode != null && anlNode != noDataStr && status.toLowerCase() == "established") + anlNode = anlNode.concat(' (Up)'); + }catch(e){ + if(anlNode != null && anlNode != noDataStr) { + anlNode = anlNode.concat(' (Down)'); + } + } + if(secondaryAnlNode != null && secondaryAnlNode != "" && secondaryAnlNode != "0.0.0.0"){ + anlNode.concat(', ' + secondaryAnlNode); + } + return ifNull(anlNode,noDataStr); + })()}, + {lbl:'Control Nodes', value:(function(){ + var peerList ; + try{ + peerList = computeNodeData.VrouterAgent.xmpp_peer_list; + }catch(e){} + var nodeArr=noDataStr ; + if(peerList != null && peerList.length>0){ + nodeArr = '
'; + var nodes = ''; + + for (var i=0; i< peerList.length;i++){ + var node = ''; + node = ''+ peerList[i].ip +'' ; + + if(peerList[i].primary != null && peerList[i].primary == true){ + if(peerList[i].status == true){ + if((i+1) == peerList.length){//only primary present + node = node + "* (Up) " ; + } else { + node = node + "* (Up), " ; + } + } else { + node = "" + node + "* (Down), " ; + } + if(nodes == ''){ + nodes = node; + } else { + nodes = node + nodes + } + } else { + if(peerList[i].status == true) + node = node + " (Up)" ; + else + node = "" + node + " (Down)" ; + if(node != ''){ + nodes = nodes + node + } else { + nodes = node; + } + } + } + nodeArr = nodeArr + nodes + '
' + } + return nodeArr; + })(),clk:'url'}, + + //Best way to get the primary node - jsonPath(computeNodeData,'$.VrouterAgent.xmpp_peer_list[?(@.primary==true)].ip')}, + {lbl:'Analytics Messages', value:(function(){ + var msgs = getAnalyticsMessagesCountAndSize(computeNodeData,['VRouterAgent']); + return msgs['count'] + ' [' + formatBytes(msgs['size']) + ']'; + })()}, + {lbl:'XMPP Messages', value:(function(){ + var xmppStatsList = getValueByJsonPath(computeNodeData,'VrouterStatsAgent;xmpp_stats_list',[]); + var inMsgs = outMsgs = 0; + for(var i = 0; i < xmppStatsList.length ; i++) { + inMsgs += getValueByJsonPath(xmppStatsList[i],'in_msgs',0); + outMsgs += getValueByJsonPath(xmppStatsList[i],'out_msgs',0); + } + return (inMsgs + ' In, ' + outMsgs + ' Out'); + })()}, + {lbl:'Flow Count', value:(function(){ + return (getValueByJsonPath(computeNodeData,"VrouterStatsAgent;active_flows", noDataStr) + ' Active, ' + + getValueByJsonPath(computeNodeData,"VrouterStatsAgent;total_flows", noDataStr) + ' Total'); + })()}, + {lbl:'Networks', value:parsedData['vnCnt']}, + {lbl:'Interfaces', value:(function(){ + var downInts = parsedData['errorIntfCnt']; + var totInts = parsedData['intfCnt']; + var ret; + if(downInts > 0){ + downInts = ", " + downInts + " Down"; + } else { + downInts = ""; + } + return totInts + " Total" + downInts; + })()}, + {lbl:'Instances', value:parsedData['instCnt']}, + {lbl:'CPU', value:$.isNumeric(parsedData['cpu']) ? parsedData['cpu'] + ' %' : noDataStr}, + {lbl:'Memory', value:parsedData['memory'] != '-' ? parsedData['memory'] : noDataStr}, + {lbl:'Version', value:parsedData['version'] != '-' ? parsedData['version'] : noDataStr}, + {lbl:'Last Log', value: (function(){ + var lmsg; + lmsg = getLastLogTimestamp(computeNodeData,"compute"); + if(lmsg != null){ + try{ + return new Date(parseInt(lmsg)/1000).toLocaleString(); + }catch(e){return noDataStr;} + } else return noDataStr; + })()} + ]; + }//if + return computeNodeDashboardInfo; +} + +function getStatusesForAllvRouterProcesses(processStateList){ + var ret = []; + if(processStateList != null){ + for(var i=0; i < processStateList.length; i++){ + var currProc = processStateList[i]; + if(currProc.process_name == "contrail-vrouter-nodemgr"){ + ret['contrail-vrouter-nodemgr'] = getProcessUpTime(currProc); + } else if (currProc.process_name == "openstack-nova-compute"){ + ret['openstack-nova-compute'] = getProcessUpTime(currProc); + } else if (currProc.process_name == "contrail-vrouter-agent"){ + ret['contrail-vrouter-agent'] = getProcessUpTime(currProc); + } + } + } + return ret; +} + + +/****\END Get label value pairs for vRouter Node details and detail template in summary****/ + +/**** Get label value pairs for Analytics Node details and detail template in summary****/ +function getAnalyticsNodeLblValuePairs(parsedData){ + var aNodeDashboardInfo = []; + var aNodeData = parsedData.raw_json; + var analyticsProcessStatusList = []; + var procStateList, overallStatus = noDataStr; + + if(parsedData.raw_json != null && parsedData.raw_json.value){ + aNodeData = parsedData.raw_json.value; + } + if(aNodeData != null){ + overallStatus = getOverallNodeStatusForDetails(parsedData); + procStateList = getValueByJsonPath(aNodeData,"NodeStatus;process_info",[]); + analyticsProcessStatusList = getStatusesForAllAnalyticsProcesses(procStateList); + aNodeDashboardInfo = [ + {lbl:'Hostname', value:parsedData.name}, + {lbl:'IP Address', value:(function(){ + var ips = ''; + iplist = getValueByJsonPath(aNodeData,"CollectorState;self_ip_list",[]); + if(iplist != null && iplist.length>0){ + for (var i=0; i< iplist.length;i++){ + if(i+1 == iplist.length) { + ips = ips + iplist[i]; + } else { + ips = ips + iplist[i] + ', '; + } + } + } else { + ips = noDataStr; + } + return ips; + })()}, + {lbl:'Overall Node Status', value:overallStatus}, + {lbl:'Processes', value:" "}, + /*{lbl:INDENT_RIGHT+'Analytics Node Manager', value:(function(){ + try{ + return ifNull(analyticsProcessStatusList['contrail-analytics-nodemgr'],noDataStr); + }catch(e){return noDataStr;} + })()},*/ + {lbl:INDENT_RIGHT+'Collector', value:(function(){ + return ifNull(analyticsProcessStatusList['contrail-collector'],noDataStr); + })()}, + {lbl:INDENT_RIGHT+'Query Engine', value:(function(){ + return ifNull(analyticsProcessStatusList['contrail-query-engine'],noDataStr); + })()}, + {lbl:INDENT_RIGHT+'OpServer', value:(function(){ + return ifNull(analyticsProcessStatusList['contrail-analytics-api'],noDataStr); + })()}, + /* {lbl:INDENT_RIGHT+'Redis Sentinel', value:(function(){ + return ifNull(analyticsProcessStatusList['redis-sentinel'],noDataStr); + })()},*/ + {lbl:'CPU', value:$.isNumeric(parsedData['cpu']) ? parsedData['cpu'] + ' %' : noDataStr}, + {lbl:'Memory', value:parsedData['memory'] != '-' ? parsedData['memory'] : noDataStr}, + {lbl:'Messages', value:(function(){ + var msgs = getAnalyticsMessagesCountAndSize(aNodeData,['Collector']); + return msgs['count'] + ' [' + formatBytes(msgs['size']) + ']'; + })()}, + {lbl:'Generators', value:(function(){ + var ret=''; + var genno; + try{ + if(aNodeData.CollectorState["generator_infos"]!=null){ + genno = aNodeData.CollectorState["generator_infos"].length; + }; + ret = ret + ifNull(genno,noDataStr); + }catch(e){ return noDataStr;} + return ret; + })()}, + {lbl:'Version', value:parsedData['version'] != '-' ? parsedData['version'] : noDataStr}, + {lbl:'Last Log', value: (function(){ + var lmsg; + lmsg = getLastLogTimestamp(aNodeData,"analytics"); + if(lmsg != null){ + try{ + return new Date(parseInt(lmsg)/1000).toLocaleString(); + }catch(e){return noDataStr;} + } else return noDataStr; + })()} + ]; + } + return aNodeDashboardInfo; +} + +function getStatusesForAllAnalyticsProcesses(processStateList){ + var ret = []; + if(processStateList != null){ + for(var i=0; i < processStateList.length; i++){ + var currProc = processStateList[i]; + if (currProc.process_name == "contrail-query-engine"){ + ret['contrail-query-engine'] = getProcessUpTime(currProc); + } else if (currProc.process_name == "contrail-analytics-nodemgr"){ + ret['contrail-analytics-nodemgr'] = getProcessUpTime(currProc); + } else if (currProc.process_name == "contrail-analytics-api"){ + ret['contrail-analytics-api'] = getProcessUpTime(currProc); + } else if (currProc.process_name == "contrail-collector"){ + ret['contrail-collector'] = getProcessUpTime(currProc); + } + } + } + return ret; +} +/****\END Get label value pairs for Analytics Node details and detail template in summaryv****/ + +/**** Get label value pairs for Config Node details and detail template in summary****/ +function getConfigNodeLblValuePairs(parsedData){ + var confNodeDashboardInfo = []; + var confNodeData = parsedData.raw_json; + var analyticsProcessStatusList = []; + + if(parsedData.raw_json != null && parsedData.raw_json.value){ + confNodeData = parsedData.raw_json.value; + } + if(confNodeData != null){ + var procStateList, overallStatus = noDataStr; + var configProcessStatusList = []; + overallStatus = getOverallNodeStatusForDetails(parsedData); + procStateList = getValueByJsonPath(confNodeData,"configNode;NodeStatus;process_info",[]); + if(!(procStateList instanceof Array)){ + procStateList = [procStateList]; + } + configProcessStatusList = getStatusesForAllConfigProcesses(procStateList); + confNodeDashboardInfo = [ + {lbl:'Hostname', value:parsedData.name}, + {lbl:'IP Address', value:(function (){ + var ips = ''; + try{ + iplist = getValueByJsonPath(confNodeData,"configNode;ModuleCpuState;config_node_ip",[]); + if(iplist instanceof Array){ + nodeIp = iplist[0];//using the first ip in the list for status + } else { + nodeIp = iplist; + } + } catch(e){return noDataStr;} + if(iplist != null && iplist != noDataStr && iplist.length>0){ + for (var i=0; i< iplist.length;i++){ + if(i+1 == iplist.length) { + ips = ips + iplist[i]; + } else { + ips = ips + iplist[i] + ', '; + } + } + } else { + ips = noDataStr; + } + return ips; + })()}, + {lbl:'Overall Node Status', value:overallStatus}, + {lbl:'Processes', value:" "}, + {lbl:INDENT_RIGHT+'API Server', value:(function(){ + return configProcessStatusList['contrail-api']; + })()}, + {lbl:INDENT_RIGHT+'Schema Transformer', value:(function(){ + return configProcessStatusList['contrail-schema']; + })()}, + {lbl:INDENT_RIGHT+'Service Monitor', value:(function(){ + return configProcessStatusList['contrail-svc-monitor']; + })()}, + /*{lbl:INDENT_RIGHT+'Config Node Manager', value:(function(){ + return ifNull(configProcessStatusList['contrail-config-nodemgr'],noDataStr); + })()},*/ + {lbl:INDENT_RIGHT+'Discovery', value:(function(){ + return ifNull(configProcessStatusList['contrail-discovery'],noDataStr); + })()}, + /* {lbl:INDENT_RIGHT+'Zookeeper', value:(function(){ + return ifNull(configProcessStatusList['contrail-zookeeper'],noDataStr); + })()},*/ + {lbl:INDENT_RIGHT+'Ifmap', value:(function(){ + return ifNull(configProcessStatusList['ifmap'],noDataStr); + })()}, + {lbl:'Analytics Node', value:(function(){ + var anlNode = noDataStr; + var secondaryAnlNode, status; + try{ + //anlNode = ifNull(computeNodeData.VrouterAgent.collector,noDataStr); + anlNode = jsonPath(confNodeData,"$..ModuleClientState..primary")[0].split(':')[0]; + status = jsonPath(confNodeData,"$..ModuleClientState..status")[0]; + secondaryAnlNode = ifNull(jsonPath(confNodeData,"$..ModuleClientState..secondary")[0],"").split(':')[0]; + }catch(e){ + anlNode = "--"; + } + try{ + if(anlNode != null && anlNode != noDataStr && status.toLowerCase() == "established") + anlNode = anlNode.concat(' (Up)'); + }catch(e){ + if(anlNode != null && anlNode != noDataStr) { + anlNode = anlNode.concat(' (Down)'); + } + } + if(secondaryAnlNode != null && secondaryAnlNode != "" && secondaryAnlNode != "0.0.0.0"){ + anlNode.concat(', ' + secondaryAnlNode); + } + return ifNull(anlNode,noDataStr); + })()}, + // {lbl:'Analytics Messages', value:(function(){return (parseInt(confNodeData.ApiServer.ModuleServerState["generator_info"]["connect_time"]) + // > parseInt(confNodeData.ModuleServerState["generator_info"]["reset_time"]))?"Up":"Down"})()}, + {lbl:'CPU', value:$.isNumeric(parsedData['cpu']) ? parsedData['cpu'] + ' %' : noDataStr}, + {lbl:'Memory', value:parsedData['memory'] != '-' ? parsedData['memory'] : noDataStr}, + {lbl:'Version', value:parsedData['version'] != '-' ? parsedData['version'] : noDataStr}, + {lbl:'Last Log', value: (function(){ + var lmsg; + lmsg = getLastLogTimestamp(confNodeData,"config"); + if(lmsg != null){ + try{ + return new Date(parseInt(lmsg)/1000).toLocaleString(); + }catch(e){return noDataStr;} + } else return noDataStr; + })()} + ]; + } + return confNodeDashboardInfo; +} + +/****\END Get label value pairs for Config Node details and detail template in summary****/ diff --git a/webroot/monitor/infra/confignode/api/confignode.api.js b/webroot/monitor/infra/confignode/api/confignode.api.js index 500e29603..7e51bf431 100644 --- a/webroot/monitor/infra/confignode/api/confignode.api.js +++ b/webroot/monitor/infra/confignode/api/confignode.api.js @@ -69,7 +69,7 @@ function getConfigNodesSummary (req, res, appData) var reqUrl = '/analytics/uves/config-node'; var postData = {}; - postData['cfilt'] = ['ModuleCpuState']; + postData['cfilt'] = ['ModuleCpuState','NodeStatus']; commonUtils.createReqObj(dataObjArr, reqUrl, global.HTTP_REQUEST_POST, postData, opApiServer, null, appData); if (null != addGen) { diff --git a/webroot/monitor/infra/confignode/ui/js/monitor_infra_confignode_details.js b/webroot/monitor/infra/confignode/ui/js/monitor_infra_confignode_details.js index a62cc3a10..46d391f3f 100644 --- a/webroot/monitor/infra/confignode/ui/js/monitor_infra_confignode_details.js +++ b/webroot/monitor/infra/confignode/ui/js/monitor_infra_confignode_details.js @@ -61,102 +61,9 @@ monitorInfraConfigDetailsClass = (function() { memory = "N/A", confNodeDashboardInfo, oneMinCPU, fiveMinCPU, fifteenMinCPU, usedMemory, totalMemory; - var procStateList, overallStatus = noDataStr; - var configProcessStatusList = []; + var statusTemplate = contrail.getTemplate4Id("statusTemplate"); - overallStatus = getOverallNodeStatusForDetails(parsedData); - procStateList = getValueByJsonPath(confNodeData,"configNode;ModuleCpuState;process_state_list",[]); - if(!(procStateList instanceof Array)){ - procStateList = [procStateList]; - } - configProcessStatusList = getStatusesForAllConfigProcesses(procStateList); - confNodeDashboardInfo = [ - {lbl:'Hostname', value:obj['name']}, - {lbl:'IP Address', value:(function (){ - var ips = ''; - try{ - iplist = getValueByJsonPath(confNodeData,"configNode;ModuleCpuState;config_node_ip",[]); - if(iplist instanceof Array){ - nodeIp = iplist[0];//using the first ip in the list for status - } else { - nodeIp = iplist; - } - } catch(e){return noDataStr;} - if(iplist != null && iplist != noDataStr && iplist.length>0){ - for (var i=0; i< iplist.length;i++){ - if(i+1 == iplist.length) { - ips = ips + iplist[i]; - } else { - ips = ips + iplist[i] + ', '; - } - } - } else { - ips = noDataStr; - } - return ips; - })()}, - {lbl:'Version', value:parsedData['version'] != '-' ? parsedData['version'] : noDataStr}, - {lbl:'Overall Node Status', value:overallStatus}, - {lbl:'Processes', value:" "}, - {lbl:INDENT_RIGHT+'API Server', value:(function(){ - return configProcessStatusList['contrail-api']; - })()}, - {lbl:INDENT_RIGHT+'Schema Transformer', value:(function(){ - return configProcessStatusList['contrail-schema']; - })()}, - {lbl:INDENT_RIGHT+'Service Monitor', value:(function(){ - return configProcessStatusList['contrail-svc-monitor']; - })()}, - /*{lbl:INDENT_RIGHT+'Config Node Manager', value:(function(){ - return ifNull(configProcessStatusList['contrail-config-nodemgr'],noDataStr); - })()},*/ - {lbl:INDENT_RIGHT+'Discovery', value:(function(){ - return ifNull(configProcessStatusList['contrail-discovery'],noDataStr); - })()}, - /* {lbl:INDENT_RIGHT+'Zookeeper', value:(function(){ - return ifNull(configProcessStatusList['contrail-zookeeper'],noDataStr); - })()},*/ - {lbl:INDENT_RIGHT+'Ifmap', value:(function(){ - return ifNull(configProcessStatusList['ifmap'],noDataStr); - })()}, - {lbl:'Analytics Node', value:(function(){ - var anlNode = noDataStr; - var secondaryAnlNode, status; - try{ - //anlNode = ifNull(computeNodeData.VrouterAgent.collector,noDataStr); - anlNode = jsonPath(confNodeData,"$..ModuleClientState..primary")[0].split(':')[0]; - status = jsonPath(confNodeData,"$..ModuleClientState..status")[0]; - secondaryAnlNode = ifNull(jsonPath(confNodeData,"$..ModuleClientState..secondary")[0],"").split(':')[0]; - }catch(e){ - anlNode = "--"; - } - try{ - if(anlNode != null && anlNode != noDataStr && status.toLowerCase() == "established") - anlNode = anlNode.concat(' (Up)'); - }catch(e){ - if(anlNode != null && anlNode != noDataStr) { - anlNode = anlNode.concat(' (Down)'); - } - } - if(secondaryAnlNode != null && secondaryAnlNode != "" && secondaryAnlNode != "0.0.0.0"){ - anlNode.concat(', ' + secondaryAnlNode); - } - return ifNull(anlNode,noDataStr); - })()}, - // {lbl:'Analytics Messages', value:(function(){return (parseInt(confNodeData.ApiServer.ModuleServerState["generator_info"]["connect_time"]) - // > parseInt(confNodeData.ModuleServerState["generator_info"]["reset_time"]))?"Up":"Down"})()}, - {lbl:'CPU', value:$.isNumeric(parsedData['cpu']) ? parsedData['cpu'] + ' %' : noDataStr}, - {lbl:'Memory', value:parsedData['memory'] != '-' ? parsedData['memory'] : noDataStr}, - {lbl:'Last Log', value: (function(){ - var lmsg; - lmsg = getLastLogTimestamp(confNodeData,"config"); - if(lmsg != null){ - try{ - return new Date(parseInt(lmsg)/1000).toLocaleString(); - }catch(e){return noDataStr;} - } else return noDataStr; - })()} - ] + confNodeDashboardInfo = getConfigNodeLblValuePairs(parsedData); /*Selenium Testing*/ confNodeDetailsData = confNodeDashboardInfo; /*End of Selenium Testing*/ diff --git a/webroot/monitor/infra/confignode/ui/js/monitor_infra_confignode_summary.js b/webroot/monitor/infra/confignode/ui/js/monitor_infra_confignode_summary.js index cf85d55fa..6b3ccbfc6 100644 --- a/webroot/monitor/infra/confignode/ui/js/monitor_infra_confignode_summary.js +++ b/webroot/monitor/infra/confignode/ui/js/monitor_infra_confignode_summary.js @@ -29,7 +29,29 @@ monitorInfraConfigSummaryClass = (function() { autoHeight : true, enableAsyncPostRender:true, forceFitColumns:true, - lazyLoading:true + lazyLoading:true, + detail:{ + template: $("#gridDetailTemplate").html(), + onExpand: function (e,dc) { + var detailTemplate = contrail.getTemplate4Id('infra-summary-details-template'); + var rowData = e.data; + var grid = $(e['target']).closest('div.contrail-grid'); + var dataItem = dc; + var data = getConfigNodeLblValuePairs(dc); + data = {d:data}; + //Issue a call for fetching the details + if(data != null) { + e.detailRow.find('.row-fluid.advancedDetails').html('
' + syntaxHighlight(dc.raw_json) + '
'); + //DataItem consists of row data,passing it as a parameter to the parsefunction + e.detailRow.find('.row-fluid.basicDetails').html(detailTemplate(data)); + $(grid).data('contrailGrid').adjustDetailRowHeight(dataItem['id']); + } else { + e.detailRow.find('.row-fluid.basicDetails').html(detailTemplate(data)); + } + }, + onCollapse:function (e,dc) { + } + } }, dataSource: { dataView: configNodesDataSource, @@ -53,6 +75,9 @@ monitorInfraConfigSummaryClass = (function() { { field:"hostName", name:"Host name", + sortable : { + sortBy: 'formattedValue' + }, formatter:function(r,c,v,cd,dc) { return cellTemplateLinks({cellText:'name',name:'name',statusBubble:true,rowData:dc}); }, @@ -65,7 +90,7 @@ monitorInfraConfigSummaryClass = (function() { searchFn:function(d) { return d['name']; }, - minWidth:90, + minWidth:175, exportConfig: { allow: true, advFormatter: function(dc) { @@ -87,11 +112,6 @@ monitorInfraConfigSummaryClass = (function() { } } }, - { - field:"version", - name:"Version", - minWidth:90 - }, { field:"status", name:"Status", @@ -109,6 +129,11 @@ monitorInfraConfigSummaryClass = (function() { } } }, + { + field:"version", + name:"Version", + minWidth:90 + }, { field:"cpu", name:"CPU (%)", diff --git a/webroot/monitor/infra/controlnode/api/controlnode.api.js b/webroot/monitor/infra/controlnode/api/controlnode.api.js index 654f6fb3a..3cd2d1148 100644 --- a/webroot/monitor/infra/controlnode/api/controlnode.api.js +++ b/webroot/monitor/infra/controlnode/api/controlnode.api.js @@ -264,7 +264,7 @@ function getControlNodeDetailConfigUVEData (configData, addGen, appData, callbac } reqUrl = '/analytics/uves/control-node'; var postData = {}; - postData['cfilt'] = ['BgpRouterState']; + postData['cfilt'] = ['BgpRouterState','NodeStatus']; commonUtils.createReqObj(dataObjArr, reqUrl, global.HTTP_REQUEST_POST, postData, opApiServer, null, appData); if (null != addGen) { diff --git a/webroot/monitor/infra/controlnode/ui/js/monitor_infra_controlnode_details.js b/webroot/monitor/infra/controlnode/ui/js/monitor_infra_controlnode_details.js index 6b0f11a99..cc67e03c4 100644 --- a/webroot/monitor/infra/controlnode/ui/js/monitor_infra_controlnode_details.js +++ b/webroot/monitor/infra/controlnode/ui/js/monitor_infra_controlnode_details.js @@ -44,147 +44,11 @@ monitorInfraControlDetailsClass = (function() { return contrail.format(monitorInfraUrls['FLOWSERIES_CPU'], 'ControlNode', '30', '10', obj['name'], endTime); }, parser: "parseProcessMemCPUData", plotOnLoad: true, showWidgetIds: [], hideWidgetIds: [], titles: {memTitle:'Memory',cpuTitle:'% CPU Utilization'}}),110); }); - var procStateList, overallStatus = noDataStr; - var controlProcessStatusList = []; + var statusTemplate = contrail.getTemplate4Id("statusTemplate"); - try{ - overallStatus = getOverallNodeStatusForDetails(parsedData); - }catch(e){overallStatus = " "+statusTemplate({sevLevel:sevLevels['ERROR'],sevLevels:sevLevels})+" Down";} - try{ - procStateList = jsonPath(ctrlNodeData,"$..process_state_list")[0]; - controlProcessStatusList = getStatusesForAllControlProcesses(procStateList); - }catch(e){} - ctrlNodeDashboardInfo = [ - {lbl:'Hostname', value:obj['name']}, - {lbl:'IP Address',value:(function(){ - var ip = ifNullOrEmpty(getControlIpAddresses(ctrlNodeData,"details"),noDataStr); - return ip; - })()}, - {lbl:'Version', value:parsedData['version'] != '-' ? parsedData['version'] : noDataStr}, - {lbl:'Overall Node Status', value:overallStatus}, - {lbl:'Processes', value:" "}, - {lbl:INDENT_RIGHT+'Control Node', value:(function(){ - return ifNull(controlProcessStatusList['contrail-control'],noDataStr); - })()}, - /*{lbl:INDENT_RIGHT+'Control Node Manager', value:(function(){ - try{ - return ifNull(controlProcessStatusList['contrail-control-nodemgr'],noDataStr); - }catch(e){return noDataStr;} - })()},*/ - {lbl:'Ifmap Connection', value:(function(){ - var cnfNode = ''; - try{ - var url = ctrlNodeData.BgpRouterState.ifmap_info.url; - if(url != null && url != undefined && url != ""){ - var pos = url.indexOf(':8443'); - if(pos != -1) - cnfNode = url.substr(0, pos); - pos = cnfNode.indexOf('https://'); - if(pos != -1) - cnfNode = cnfNode.slice(pos + 8) ; - } - var status = ctrlNodeData.BgpRouterState.ifmap_info.connection_status; - var stateChangeAtTime = ctrlNodeData.BgpRouterState.ifmap_info.connection_status_change_at; - var stateChangeSince = ""; - var statusString = ""; - if(stateChangeAtTime != null){ - var stateChangeAtTime = new XDate(stateChangeAtTime/1000); - var currTime = new XDate(); - stateChangeSince = diffDates(stateChangeAtTime,currTime); - } - if(status != null && status != undefined && status != ""){ - if(stateChangeSince != ""){ - if(status.toLowerCase() == "up" || status.toLowerCase() == "down"){ - status = status + " since"; - } - statusString = status + " " + stateChangeSince; - } else { - statusString = status; - } - } - if(statusString != ""){ - cnfNode = cnfNode.concat( ' (' + statusString + ')'); - } - }catch (e){} - return ifNull(cnfNode,noDataStr); - })()}, - {lbl:'Analytics Node', value:(function(){ - var anlNode = noDataStr; - var secondaryAnlNode, status; - try{ - //anlNode = ifNull(computeNodeData.VrouterAgent.collector,noDataStr); - anlNode = jsonPath(ctrlNodeData,"$..ModuleClientState..primary")[0].split(':')[0]; - status = jsonPath(ctrlNodeData,"$..ModuleClientState..status")[0]; - secondaryAnlNode = jsonPath(ctrlNodeData,"$..ModuleClientState..secondary")[0].split(':')[0]; - }catch(e){ - anlNode = "--"; - } - try{ - if(anlNode != null && anlNode != noDataStr && status.toLowerCase() == "established") - anlNode = anlNode.concat(' (Up)'); - }catch(e){ - if(anlNode != null && anlNode != noDataStr) { - anlNode = anlNode.concat(' (Down)'); - } - } - if(secondaryAnlNode != null && secondaryAnlNode != "" && secondaryAnlNode != "0.0.0.0"){ - anlNode.concat(', ' + secondaryAnlNode); - } - return ifNull(anlNode,noDataStr); - })()}, - //TODO{lbl:'Config Messages', value:ctrlNodeData['configMessagesIn'] + ' In, ' + ctrlNodeData['configMessagesOut'] + ' Out'}, - {lbl:'Analytics Messages', value:(function(){ - var msgs = getAnalyticsMessagesCountAndSize(ctrlNodeData,['ControlNode']); - return msgs['count'] + ' [' + formatBytes(msgs['size']) + ']'; - })()}, - {lbl:'Peers', value:(function(){ - var totpeers= 0,uppeers=0; - totpeers= ifNull(parsedData['totalBgpPeerCnt'],0); - uppeers = ifNull(parsedData['upBgpPeerCnt'],0); - var downpeers = 0; - if(totpeers > 0){ - downpeers = totpeers - uppeers; - } - if (downpeers > 0){ - downpeers = ", "+ downpeers +" Down"; - } else { - downpeers = ""; - } - return contrail.format('BGP Peers: {0} Total {1}',totpeers,downpeers); - })()}, - {lbl:'',value:(function(){ - var totXmppPeers = 0,upXmppPeers = 0,downXmppPeers = 0,subsCnt = 0; - totXmppPeers = parsedData['totalXMPPPeerCnt']; - upXmppPeers = parsedData['upXMPPPeerCnt']; - subsCnt = ifNull(jsonPath(ctrlNodeData,'$..BgpRouterState.ifmap_server_info.num_peer_clients')[0],0) - if(totXmppPeers > 0){ - downXmppPeers = totXmppPeers - upXmppPeers; - } - if (downXmppPeers > 0){ - downXmppPeers = ", "+ downXmppPeers +" Down"; - } else { - downXmppPeers = ""; - } - if (subsCnt > 0){ - subsCnt = ", "+ subsCnt +" subscribed for configuration"; - } else { - subsCnt = "" - } - return contrail.format('vRouters: {0} Established in Sync{1}{2} ', - upXmppPeers,downXmppPeers,subsCnt); - })()}, - {lbl:'CPU', value:$.isNumeric(parsedData['cpu']) ? parsedData['cpu'] + ' %' : noDataStr}, - {lbl:'Memory', value:parsedData['memory'] != '-' ? parsedData['memory'] : noDataStr}, - {lbl:'Last Log', value: (function(){ - var lmsg; - lmsg = getLastLogTimestamp(ctrlNodeData,"control"); - if(lmsg != null){ - try{ - return new Date(parseInt(lmsg)/1000).toLocaleString(); - }catch(e){return noDataStr;} - } else return noDataStr; - })()} - ] + + ctrlNodeDashboardInfo = getControlNodeDetailsLblValuePairs(parsedData); + /*Selenium Testing*/ ctrlNodeDetailsData = ctrlNodeDashboardInfo; /*End of Selenium Testing*/ @@ -220,21 +84,6 @@ monitorInfraControlDetailsClass = (function() { return {populateDetailsTab:populateDetailsTab} })(); -function getStatusesForAllControlProcesses(processStateList){ - var ret = []; - if(processStateList != null){ - for(var i=0; i < processStateList.length; i++){ - var currProc = processStateList[i]; - if(currProc.process_name == "contrail-control-nodemgr"){ - ret['contrail-control-nodemgr'] = getProcessUpTime(currProc); - } else if(currProc.process_name == "contrail-control"){ - ret['contrail-control'] = getProcessUpTime(currProc); - } - } - } - return ret; - } - function getControlNodeIpAddressList(data){ var ips = getValueByJsonPath(data,'$..bgp_router_ip_list',[]); var configip = jsonPath(data,'$..ConfigData..bgp_router_parameters.address')[0]; diff --git a/webroot/monitor/infra/controlnode/ui/js/monitor_infra_controlnode_routes.js b/webroot/monitor/infra/controlnode/ui/js/monitor_infra_controlnode_routes.js index 00f737c04..eac86a953 100644 --- a/webroot/monitor/infra/controlnode/ui/js/monitor_infra_controlnode_routes.js +++ b/webroot/monitor/infra/controlnode/ui/js/monitor_infra_controlnode_routes.js @@ -67,26 +67,31 @@ monitorInfraControlRoutesClass = (function() { (selPeerSrc == "All" || selPeerSrc == obj['source']) && (selProtocol == "All" || selProtocol == obj['protocol'])){ var src = obj['source']; - src = ifNullOrEmptyObject(src, "-").split(":").pop(); - origVn = ifNullOrEmptyObject(origVn, "-") ; + var protocol = ifNullOrEmptyObject(obj['protocol'],noDataStr); + var nextHop = ifNullOrEmptyObject(obj['next_hop'],noDataStr); + var label = ifNullOrEmptyObject(obj['label'],noDataStr); + var prefix = ifNullOrEmptyObject(currRoute['prefix'],noDataStr); + src = ifNullOrEmptyObject(src, noDataStr).split(":").pop(); + origVn = ifNullOrEmptyObject(origVn, noDataStr) ; + if(idx == 0) { routesArr.push({ - prefix:currRoute['Prefix'], - dispPrefix:currRoute['prefix'], + prefix:prefix, + dispPrefix:prefix, table:rtTable, instance:routeInstances[i], addrFamily:addfamily, sg:ifEmpty(sg,'-'), raw_json:rawJson, originVn:origVn, - protocol:obj['protocol'], + protocol:protocol, source:src, - next_hop:obj['next_hop'], - label:obj['label'] + next_hop:nextHop, + label:label }); } else { routesArr.push({ - prefix:currRoute['Prefix'], + prefix:prefix, dispPrefix:'', table:rtTable, instance:routeInstances[i], @@ -94,10 +99,10 @@ monitorInfraControlRoutesClass = (function() { sg:ifEmpty(sg,'-'), raw_json:rawJson, originVn:origVn, - protocol:obj['protocol'], + protocol:protocol, source:src, - next_hop:obj['next_hop'], - label:obj['label'] + next_hop:nextHop, + label:label }); } isRtTableDisplayed = true; diff --git a/webroot/monitor/infra/controlnode/ui/js/monitor_infra_controlnode_summary.js b/webroot/monitor/infra/controlnode/ui/js/monitor_infra_controlnode_summary.js index 03dba1423..bbd08e459 100644 --- a/webroot/monitor/infra/controlnode/ui/js/monitor_infra_controlnode_summary.js +++ b/webroot/monitor/infra/controlnode/ui/js/monitor_infra_controlnode_summary.js @@ -33,7 +33,29 @@ monitorInfraControlSummaryClass = (function() { autoHeight : true, forceFitColumns:true, enableAsyncPostRender: true, - lazyLoading:true + lazyLoading:true, + detail:{ + template: $("#gridDetailTemplate").html(), + onExpand: function (e,dc) { + var detailTemplate = contrail.getTemplate4Id('infra-summary-details-template'); + var rowData = e.data; + var grid = $(e['target']).closest('div.contrail-grid'); + var dataItem = dc; + var data = getControlNodeDetailsLblValuePairs(dc); + data = {d:data}; + //Issue a call for fetching the details + if(data != null) { + e.detailRow.find('.row-fluid.advancedDetails').html('
' + syntaxHighlight(dc.raw_json) + '
'); + //DataItem consists of row data,passing it as a parameter to the parsefunction + e.detailRow.find('.row-fluid.basicDetails').html(detailTemplate(data)); + $(grid).data('contrailGrid').adjustDetailRowHeight(dataItem['id']); + } else { + e.detailRow.find('.row-fluid.basicDetails').html(detailTemplate(data)); + } + }, + onCollapse:function (e,dc) { + } + }, }, dataSource: { dataView: controlNodesDataSource, @@ -57,6 +79,9 @@ monitorInfraControlSummaryClass = (function() { { field:"name", name:"Host name", + sortable : { + sortBy: 'formattedValue' + }, formatter:function(r,c,v,cd,dc) { return cellTemplateLinks({cellText:'name',name:'name',statusBubble:true,rowData:dc}); }, @@ -66,7 +91,7 @@ monitorInfraControlSummaryClass = (function() { } }, cssClass: 'cell-hyperlink-blue', - minWidth:110, + minWidth:175, exportConfig: { allow: true, advFormatter: function(dc) { @@ -88,11 +113,6 @@ monitorInfraControlSummaryClass = (function() { } } }, - { - field:"version", - name:"Version", - minWidth:150 - }, { field:"status", name:"Status", @@ -105,6 +125,27 @@ monitorInfraControlSummaryClass = (function() { }, minWidth:150 }, + { + field:"establishedPeerCount", + name:"BGP Peers", + minWidth:100, + formatter:function(r,c,v,cd,dc){ + return contrail.format("{0} Total {1}",ifNull(dc['totalBgpPeerCnt'],0),dc['downBgpPeerCntText']); + } + }, + { + field:"activevRouterCount", + name:"vRouters", + formatter:function(r,c,v,cd,dc){ + return contrail.format("{0} Total {1}",dc['totalXMPPPeerCnt'],dc['downXMPPPeerCntText']); + }, + minWidth:100 + }, + { + field:"version", + name:"Version", + minWidth:110 + }, { field:"cpu", name:"CPU (%)", @@ -117,33 +158,17 @@ monitorInfraControlSummaryClass = (function() { }, minWidth:150, exportConfig: { - allow: true, - advFormatter: function(dc) { - return dc['cpu']; - } - } + allow: true, + advFormatter: function(dc) { + return dc['cpu']; + } + } }, { field:"memory", name:"Memory", minWidth:110 }, - { - field:"establishedPeerCount", - name:"BGP Peers", - minWidth:140, - formatter:function(r,c,v,cd,dc){ - return contrail.format("{0} Total {1}",ifNull(dc['totalBgpPeerCnt'],0),dc['downBgpPeerCntText']); - } - }, - { - field:"activevRouterCount", - name:"vRouters", - formatter:function(r,c,v,cd,dc){ - return contrail.format("{0} Total {1}",dc['totalXMPPPeerCnt'],dc['downXMPPPeerCntText']); - }, - minWidth:140 - } ], } }); diff --git a/webroot/monitor/infra/dashboard/ui/js/monitor_infra_dashboard.js b/webroot/monitor/infra/dashboard/ui/js/monitor_infra_dashboard.js index 0a33c23dd..3a972dc2b 100644 --- a/webroot/monitor/infra/dashboard/ui/js/monitor_infra_dashboard.js +++ b/webroot/monitor/infra/dashboard/ui/js/monitor_infra_dashboard.js @@ -36,33 +36,30 @@ function addTabs() { * Takes vRouters data(array) as input and creates/updates chart */ var updateView = function(data) { + data = data.reverse();//reversing to get the reds on top var chartObj = {}; var chartsData = { title: 'vRouters', - d: splitNodesToSeriesByColor(data, { - Red: d3Colors['red'], - Orange: d3Colors['orange'], - Blue: d3Colors['blue'], - Green: d3Colors['green'] - }), + d: splitNodesToSeriesByColor(data, chartsLegend), chartOptions: { tooltipFn: bgpMonitor.vRouterTooltipFn, clickFn: bgpMonitor.onvRouterDrillDown, xPositive: true, - addDomainBuffer: true + addDomainBuffer: true, + deferredObj:$.Deferred(), + showSettings:false, + //For Axis params if the data type is not provided default one is Integer and currently + //only two data types integer and float are supported + yAxisParams:[{lbl:'Memory (MB)',key:'virtMemory',formatFn:function(data){ + return prettifyBytes({bytes:ifNull(data,0)*1024,stripUnit:true,prefix:'MB'}) + } + },{lbl:'Virtual Networks',key:'vnCnt'}], + xAxisParams:[{lbl:'CPU (%)',key:'cpu',type:'float'},{lbl:'Instances',key:'instCnt'}] } }; - var chartObj = {}; - if(!isScatterChartInitialized('#vrouter-bubble')) { - $('#vrouterStats-header').initWidgetHeader({title:'vRouters',link:{hashParams:{p:'mon_infra_vrouter',q:{node:'vRouters'}}}}); - $('#vrouter-bubble').initScatterChart(chartsData); - } else { - data = updateCharts.setUpdateParams(data); - chartObj['selector'] = $('#content-container').find('#vrouter-bubble > svg').first()[0]; - chartObj['data'] = chartsData['d']; - chartObj['type'] = 'infrabubblechart'; - updateCharts.updateView(chartObj); - } + + $('#vrouterStats-header').initWidgetHeader({title:'vRouters',link:{hashParams:{p:'mon_infra_vrouter',q:{node:'vRouters'}}}}); + $('#vrouter-bubble').initScatterChart(chartsData); self.updatevRouterInfoBoxes(); } @@ -141,26 +138,19 @@ function addTabs() { }) var updateView = function(data) { - if(!isScatterChartInitialized('#ctrlNode-bubble')) { - $('#ctrlNodeStats-header').initWidgetHeader({title:'Control Nodes',link:{hashParams:{p:'mon_infra_control',q:{node:'Control Nodes'}}}}); - var chartsData = { - title: 'Control Nodes', - chartOptions: { - tooltipFn: bgpMonitor.controlNodetooltipFn, - clickFn: bgpMonitor.onControlNodeDrillDown, - xPositive: true, - addDomainBuffer: true - }, - d: splitNodesToSeriesByColor(data,{ - Red: d3Colors['red'], - Orange: d3Colors['orange'], - Blue: d3Colors['blue'], - Green: d3Colors['green'] - }) - }; - $('#ctrlNode-bubble').initScatterChart(chartsData); - } else { - } + data = data.reverse();//reversing to get the reds on top + var chartsData = { + title: 'Control Nodes', + chartOptions: { + tooltipFn: bgpMonitor.controlNodetooltipFn, + clickFn: bgpMonitor.onControlNodeDrillDown, + xPositive: true, + addDomainBuffer: true + }, + d: splitNodesToSeriesByColor(data,chartsLegend) + }; + $('#ctrlNodeStats-header').initWidgetHeader({title:'Control Nodes',link:{hashParams:{p:'mon_infra_control',q:{node:'Control Nodes'}}}}); + $('#ctrlNode-bubble').initScatterChart(chartsData); } infraDashboardView.addInfoBox({ @@ -189,26 +179,19 @@ function addTabs() { updateView(newValue); }) this.updateView = function(data) { - if(!isScatterChartInitialized('#analyticNode-bubble')) { - $('#analyticNodeStats-header').initWidgetHeader({title:'Analytics Nodes',link:{hashParams:{p:'mon_infra_analytics',q:{node:'Analytics Nodes'}}}}); - var chartsData = { - title: 'Analytic Nodes', - chartOptions: { - tooltipFn: bgpMonitor.analyticNodeTooltipFn, - clickFn: bgpMonitor.onAnalyticNodeDrillDown, - xPositive: true, - addDomainBuffer: true - }, - d: splitNodesToSeriesByColor(data, { - Red: d3Colors['red'], - Orange: d3Colors['orange'], - Blue: d3Colors['blue'], - Green: d3Colors['green'] - }) - }; - $('#analyticNode-bubble').initScatterChart(chartsData); - } else { - } + data = data.reverse();//reversing to get the reds on top + var chartsData = { + title: 'Analytic Nodes', + chartOptions: { + tooltipFn: bgpMonitor.analyticNodeTooltipFn, + clickFn: bgpMonitor.onAnalyticNodeDrillDown, + xPositive: true, + addDomainBuffer: true + }, + d: splitNodesToSeriesByColor(data, chartsLegend) + }; + $('#analyticNodeStats-header').initWidgetHeader({title:'Analytics Nodes',link:{hashParams:{p:'mon_infra_analytics',q:{node:'Analytics Nodes'}}}}); + $('#analyticNode-bubble').initScatterChart(chartsData); } infraDashboardView.addInfoBox({ title:'Analytics Nodes', @@ -237,26 +220,19 @@ function addTabs() { }) var updateView = function(data) { - if(!isScatterChartInitialized('#configNode-bubble')) { - $('#configNodeStats-header').initWidgetHeader({title:'Config Nodes',link:{hashParams:{p:'mon_infra_config',q:{node:'Config Nodes'}}}}); - var chartsData = { - title: 'Config Nodes', - chartOptions: { - tooltipFn: bgpMonitor.configNodeTooltipFn, - clickFn: bgpMonitor.onConfigNodeDrillDown, - xPositive: true, - addDomainBuffer: true - }, - d: splitNodesToSeriesByColor(data, { - Red: d3Colors['red'], - Orange: d3Colors['orange'], - Blue: d3Colors['blue'], - Green: d3Colors['green'] - }) - }; - $('#configNode-bubble').initScatterChart(chartsData); - } else { - } + data = data.reverse();//reversing to get the reds on top + var chartsData = { + title: 'Config Nodes', + chartOptions: { + tooltipFn: bgpMonitor.configNodeTooltipFn, + clickFn: bgpMonitor.onConfigNodeDrillDown, + xPositive: true, + addDomainBuffer: true + }, + d: splitNodesToSeriesByColor(data, chartsLegend) + }; + $('#configNodeStats-header').initWidgetHeader({title:'Config Nodes',link:{hashParams:{p:'mon_infra_config',q:{node:'Config Nodes'}}}}); + $('#configNode-bubble').initScatterChart(chartsData); } infraDashboardView.addInfoBox({ diff --git a/webroot/monitor/infra/test/monitor_infra_dashboard_mock.js b/webroot/monitor/infra/test/monitor_infra_dashboard_mock.js index 6197b0a35..d1e7a00b9 100644 --- a/webroot/monitor/infra/test/monitor_infra_dashboard_mock.js +++ b/webroot/monitor/infra/test/monitor_infra_dashboard_mock.js @@ -83,37 +83,40 @@ function InfraMockData() { "sum" : "0.1014029" } } ], - "process_state_list" : [ { "core_file_list" : [ ], - "exit_count" : 0, - "last_exit_time" : null, - "last_start_time" : "1391061692459593", - "last_stop_time" : null, - "process_name" : "contrail-vrouter", - "process_state" : "PROCESS_STATE_RUNNING", - "start_count" : 1, - "stop_count" : 0 - }, - { "core_file_list" : [ ], - "exit_count" : 0, - "last_exit_time" : null, - "last_start_time" : "1391061690455524", - "last_stop_time" : null, - "process_name" : "contrail-vrouter-nodemgr", - "process_state" : "PROCESS_STATE_RUNNING", - "start_count" : 1, - "stop_count" : 0 - }, - { "core_file_list" : [ ], - "exit_count" : 0, - "last_exit_time" : null, - "last_start_time" : "1391061733842477", - "last_stop_time" : null, - "process_name" : "openstack-nova-compute", - "process_state" : "PROCESS_STATE_RUNNING", - "start_count" : 1, - "stop_count" : 0 - } - ] + "NodeStatus":{ + "process_info" : [ + { "core_file_list" : [ ], + "exit_count" : 0, + "last_exit_time" : null, + "last_start_time" : "1391061692459593", + "last_stop_time" : null, + "process_name" : "contrail-vrouter-agent", + "process_state" : "PROCESS_STATE_RUNNING", + "start_count" : 1, + "stop_count" : 0 + }, + { "core_file_list" : [ ], + "exit_count" : 0, + "last_exit_time" : null, + "last_start_time" : "1391061690455524", + "last_stop_time" : null, + "process_name" : "contrail-vrouter-nodemgr", + "process_state" : "PROCESS_STATE_RUNNING", + "start_count" : 1, + "stop_count" : 0 + }, + { "core_file_list" : [ ], + "exit_count" : 0, + "last_exit_time" : null, + "last_start_time" : "1391061733842477", + "last_stop_time" : null, + "process_name" : "openstack-nova-compute", + "process_state" : "PROCESS_STATE_RUNNING", + "start_count" : 1, + "stop_count" : 0 + } + ] + } } } } ], @@ -196,37 +199,40 @@ function InfraMockData() { "sum" : "0.3513834" } } ], - "process_state_list" : [ { "core_file_list" : [ ], - "exit_count" : 0, - "last_exit_time" : null, - "last_start_time" : "1395208421747763", - "last_stop_time" : "1395208417363453", - "process_name" : "contrail-vrouter", - "process_state" : "PROCESS_STATE_RUNNING", - "start_count" : 2, - "stop_count" : 1 - }, - { "core_file_list" : [ ], - "exit_count" : 0, - "last_exit_time" : null, - "last_start_time" : "1395137366570779", - "last_stop_time" : null, - "process_name" : "contrail-vrouter-nodemgr", - "process_state" : "PROCESS_STATE_RUNNING", - "start_count" : 1, - "stop_count" : 0 - }, - { "core_file_list" : [ ], - "exit_count" : 0, - "last_exit_time" : null, - "last_start_time" : "1395137360211414", - "last_stop_time" : null, - "process_name" : "openstack-nova-compute", - "process_state" : "PROCESS_STATE_RUNNING", - "start_count" : 1, - "stop_count" : 0 - } - ] + "NodeStatus":{ + "process_info" : [ + { "core_file_list" : [ ], + "exit_count" : 0, + "last_exit_time" : null, + "last_start_time" : "1395208421747763", + "last_stop_time" : "1395208417363453", + "process_name" : "contrail-vrouter-agent", + "process_state" : "PROCESS_STATE_RUNNING", + "start_count" : 2, + "stop_count" : 1 + }, + { "core_file_list" : [ ], + "exit_count" : 0, + "last_exit_time" : null, + "last_start_time" : "1395137366570779", + "last_stop_time" : null, + "process_name" : "contrail-vrouter-nodemgr", + "process_state" : "PROCESS_STATE_RUNNING", + "start_count" : 1, + "stop_count" : 0 + }, + { "core_file_list" : [ ], + "exit_count" : 0, + "last_exit_time" : null, + "last_start_time" : "1395137360211414", + "last_stop_time" : null, + "process_name" : "openstack-nova-compute", + "process_state" : "PROCESS_STATE_RUNNING", + "start_count" : 1, + "stop_count" : 0 + } + ] + } } } }, @@ -310,37 +316,39 @@ function InfraMockData() { "sum" : "0.5111039" } } ], - "process_state_list" : [ { "core_file_list" : [ ], - "exit_count" : 0, - "last_exit_time" : null, - "last_start_time" : "1395137363474175", - "last_stop_time" : null, - "process_name" : "contrail-vrouter", - "process_state" : "PROCESS_STATE_RUNNING", - "start_count" : 1, - "stop_count" : 0 - }, - { "core_file_list" : [ ], - "exit_count" : 0, - "last_exit_time" : null, - "last_start_time" : "1395137361471053", - "last_stop_time" : null, - "process_name" : "contrail-vrouter-nodemgr", - "process_state" : "PROCESS_STATE_RUNNING", - "start_count" : 1, - "stop_count" : 0 - }, - { "core_file_list" : [ ], - "exit_count" : 0, - "last_exit_time" : null, - "last_start_time" : "1395137355364969", - "last_stop_time" : null, - "process_name" : "openstack-nova-compute", - "process_state" : "PROCESS_STATE_RUNNING", - "start_count" : 1, - "stop_count" : 0 - } - ] + "NodeStatus":{ + "process_info" : [ { "core_file_list" : [ ], + "exit_count" : 0, + "last_exit_time" : null, + "last_start_time" : "1395137363474175", + "last_stop_time" : null, + "process_name" : "contrail-vrouter-agent", + "process_state" : "PROCESS_STATE_RUNNING", + "start_count" : 1, + "stop_count" : 0 + }, + { "core_file_list" : [ ], + "exit_count" : 0, + "last_exit_time" : null, + "last_start_time" : "1395137361471053", + "last_stop_time" : null, + "process_name" : "contrail-vrouter-nodemgr", + "process_state" : "PROCESS_STATE_RUNNING", + "start_count" : 1, + "stop_count" : 0 + }, + { "core_file_list" : [ ], + "exit_count" : 0, + "last_exit_time" : null, + "last_start_time" : "1395137355364969", + "last_stop_time" : null, + "process_name" : "openstack-nova-compute", + "process_state" : "PROCESS_STATE_RUNNING", + "start_count" : 1, + "stop_count" : 0 + } + ] + } } } }, @@ -424,37 +432,39 @@ function InfraMockData() { "sum" : "0.4555491" } } ], - "process_state_list" : [ { "core_file_list" : [ ], - "exit_count" : 0, - "last_exit_time" : null, - "last_start_time" : "1395137426055669", - "last_stop_time" : null, - "process_name" : "contrail-vrouter", - "process_state" : "PROCESS_STATE_RUNNING", - "start_count" : 1, - "stop_count" : 0 - }, - { "core_file_list" : [ ], - "exit_count" : 0, - "last_exit_time" : null, - "last_start_time" : "1395137424052005", - "last_stop_time" : null, - "process_name" : "contrail-vrouter-nodemgr", - "process_state" : "PROCESS_STATE_RUNNING", - "start_count" : 1, - "stop_count" : 0 - }, - { "core_file_list" : [ ], - "exit_count" : 0, - "last_exit_time" : null, - "last_start_time" : "1395137416543513", - "last_stop_time" : null, - "process_name" : "openstack-nova-compute", - "process_state" : "PROCESS_STATE_RUNNING", - "start_count" : 1, - "stop_count" : 0 - } - ] + "NodeStatus":{ + "process_info" : [ { "core_file_list" : [ ], + "exit_count" : 0, + "last_exit_time" : null, + "last_start_time" : "1395137426055669", + "last_stop_time" : null, + "process_name" : "contrail-vrouter-agent", + "process_state" : "PROCESS_STATE_RUNNING", + "start_count" : 1, + "stop_count" : 0 + }, + { "core_file_list" : [ ], + "exit_count" : 0, + "last_exit_time" : null, + "last_start_time" : "1395137424052005", + "last_stop_time" : null, + "process_name" : "contrail-vrouter-nodemgr", + "process_state" : "PROCESS_STATE_RUNNING", + "start_count" : 1, + "stop_count" : 0 + }, + { "core_file_list" : [ ], + "exit_count" : 0, + "last_exit_time" : null, + "last_start_time" : "1395137416543513", + "last_stop_time" : null, + "process_name" : "openstack-nova-compute", + "process_state" : "PROCESS_STATE_RUNNING", + "start_count" : 1, + "stop_count" : 0 + } + ] + } } } } @@ -553,47 +563,49 @@ function InfraMockData() { "num_up_xmpp_peer" : 1, "num_xmpp_peer" : 1, "output_queue_depth" : 0, - "process_state_list" : [ { "core_file_list" : [ ], - "exit_count" : 0, - "last_exit_time" : null, - "last_start_time" : "1392031408218460", - "last_stop_time" : null, - "process_name" : "contrail-control", - "process_state" : "PROCESS_STATE_RUNNING", - "start_count" : 1, - "stop_count" : 0 - }, - { "core_file_list" : [ ], - "exit_count" : 0, - "last_exit_time" : null, - "last_start_time" : "1392031406212682", - "last_stop_time" : null, - "process_name" : "contrail-control-nodemgr", - "process_state" : "PROCESS_STATE_RUNNING", - "start_count" : 1, - "stop_count" : 0 - }, - { "core_file_list" : [ ], - "exit_count" : 0, - "last_exit_time" : null, - "last_start_time" : "1392031410227087", - "last_stop_time" : null, - "process_name" : "contrail-dns", - "process_state" : "PROCESS_STATE_RUNNING", - "start_count" : 1, - "stop_count" : 0 - }, - { "core_file_list" : [ ], - "exit_count" : 0, - "last_exit_time" : null, - "last_start_time" : "1392031412228269", - "last_stop_time" : null, - "process_name" : "contrail-named", - "process_state" : "PROCESS_STATE_RUNNING", - "start_count" : 1, - "stop_count" : 0 - } - ], + "NodeStatus":{ + "process_info" : [ { "core_file_list" : [ ], + "exit_count" : 0, + "last_exit_time" : null, + "last_start_time" : "1392031408218460", + "last_stop_time" : null, + "process_name" : "contrail-control", + "process_state" : "PROCESS_STATE_RUNNING", + "start_count" : 1, + "stop_count" : 0 + }, + { "core_file_list" : [ ], + "exit_count" : 0, + "last_exit_time" : null, + "last_start_time" : "1392031406212682", + "last_stop_time" : null, + "process_name" : "contrail-control-nodemgr", + "process_state" : "PROCESS_STATE_RUNNING", + "start_count" : 1, + "stop_count" : 0 + }, + { "core_file_list" : [ ], + "exit_count" : 0, + "last_exit_time" : null, + "last_start_time" : "1392031410227087", + "last_stop_time" : null, + "process_name" : "contrail-dns", + "process_state" : "PROCESS_STATE_RUNNING", + "start_count" : 1, + "stop_count" : 0 + }, + { "core_file_list" : [ ], + "exit_count" : 0, + "last_exit_time" : null, + "last_start_time" : "1392031412228269", + "last_stop_time" : null, + "process_name" : "contrail-named", + "process_state" : "PROCESS_STATE_RUNNING", + "start_count" : 1, + "stop_count" : 0 + } + ] + }, "uptime" : 1392031395956100, "virt_mem" : [ { "history-10" : { "{\"ts\":1392167118706305}" : 421336, "{\"ts\":1392173898782740}" : 421336, @@ -797,87 +809,89 @@ function InfraMockData() { "module_id" : "ServiceMonitor" } ], - "process_state_list" : [ { "core_file_list" : [ ], - "exit_count" : 0, - "last_exit_time" : null, - "last_start_time" : "1392031421077655", - "last_stop_time" : null, - "process_name" : "contrail-api:0", - "process_state" : "PROCESS_STATE_RUNNING", - "start_count" : 1, - "stop_count" : 0 - }, - { "core_file_list" : [ ], - "exit_count" : 0, - "last_exit_time" : null, - "last_start_time" : "1392031415064786", - "last_stop_time" : null, - "process_name" : "redis-config", - "process_state" : "PROCESS_STATE_RUNNING", - "start_count" : 1, - "stop_count" : 0 - }, - { "core_file_list" : [ ], - "exit_count" : 0, - "last_exit_time" : null, - "last_start_time" : "1392031413059723", - "last_stop_time" : null, - "process_name" : "contrail-config-nodemgr", - "process_state" : "PROCESS_STATE_RUNNING", - "start_count" : 1, - "stop_count" : 0 - }, - { "core_file_list" : [ ], - "exit_count" : 0, - "last_exit_time" : null, - "last_start_time" : "1392031417072072", - "last_stop_time" : "1392186852753830", - "process_name" : "contrail-discovery:0", - "process_state" : "PROCESS_STATE_STOPPED", - "start_count" : 1, - "stop_count" : 1 - }, - { "core_file_list" : [ ], - "exit_count" : 0, - "last_exit_time" : null, - "last_start_time" : "1392031425086415", - "last_stop_time" : null, - "process_name" : "contrail-svc-monitor", - "process_state" : "PROCESS_STATE_RUNNING", - "start_count" : 1, - "stop_count" : 0 - }, - { "core_file_list" : [ ], - "exit_count" : 0, - "last_exit_time" : null, - "last_start_time" : "1392031419075457", - "last_stop_time" : "1392189058210917", - "process_name" : "ifmap", - "process_state" : "PROCESS_STATE_STOPPED", - "start_count" : 1, - "stop_count" : 1 - }, - { "core_file_list" : [ ], - "exit_count" : 1, - "last_exit_time" : "1392189060216682", - "last_start_time" : "1392031423083104", - "last_stop_time" : null, - "process_name" : "contrail-schema", - "process_state" : "PROCESS_STATE_EXITED", - "start_count" : 1, - "stop_count" : 0 - }, - { "core_file_list" : [ ], - "exit_count" : 0, - "last_exit_time" : null, - "last_start_time" : "1392031427092471", - "last_stop_time" : null, - "process_name" : "contrail-zookeeper", - "process_state" : "PROCESS_STATE_RUNNING", - "start_count" : 1, - "stop_count" : 0 - } - ], + "NodeStatus":{ + "process_info" : [ { "core_file_list" : [ ], + "exit_count" : 0, + "last_exit_time" : null, + "last_start_time" : "1392031421077655", + "last_stop_time" : null, + "process_name" : "contrail-api:0", + "process_state" : "PROCESS_STATE_RUNNING", + "start_count" : 1, + "stop_count" : 0 + }, + { "core_file_list" : [ ], + "exit_count" : 0, + "last_exit_time" : null, + "last_start_time" : "1392031415064786", + "last_stop_time" : null, + "process_name" : "redis-config", + "process_state" : "PROCESS_STATE_RUNNING", + "start_count" : 1, + "stop_count" : 0 + }, + { "core_file_list" : [ ], + "exit_count" : 0, + "last_exit_time" : null, + "last_start_time" : "1392031413059723", + "last_stop_time" : null, + "process_name" : "contrail-config-nodemgr", + "process_state" : "PROCESS_STATE_RUNNING", + "start_count" : 1, + "stop_count" : 0 + }, + { "core_file_list" : [ ], + "exit_count" : 0, + "last_exit_time" : null, + "last_start_time" : "1392031417072072", + "last_stop_time" : "1392186852753830", + "process_name" : "contrail-discovery:0", + "process_state" : "PROCESS_STATE_STOPPED", + "start_count" : 1, + "stop_count" : 1 + }, + { "core_file_list" : [ ], + "exit_count" : 0, + "last_exit_time" : null, + "last_start_time" : "1392031425086415", + "last_stop_time" : null, + "process_name" : "contrail-svc-monitor", + "process_state" : "PROCESS_STATE_RUNNING", + "start_count" : 1, + "stop_count" : 0 + }, + { "core_file_list" : [ ], + "exit_count" : 0, + "last_exit_time" : null, + "last_start_time" : "1392031419075457", + "last_stop_time" : "1392189058210917", + "process_name" : "ifmap", + "process_state" : "PROCESS_STATE_STOPPED", + "start_count" : 1, + "stop_count" : 1 + }, + { "core_file_list" : [ ], + "exit_count" : 1, + "last_exit_time" : "1392189060216682", + "last_start_time" : "1392031423083104", + "last_stop_time" : null, + "process_name" : "contrail-schema", + "process_state" : "PROCESS_STATE_EXITED", + "start_count" : 1, + "stop_count" : 0 + }, + { "core_file_list" : [ ], + "exit_count" : 0, + "last_exit_time" : null, + "last_start_time" : "1392031427092471", + "last_stop_time" : null, + "process_name" : "contrail-zookeeper", + "process_state" : "PROCESS_STATE_RUNNING", + "start_count" : 1, + "stop_count" : 0 + } + ] + }, "schema_xmer_cpu_share" : [ { "history-10" : { "{\"ts\":1392188456790712}" : 0, "{\"ts\":1392188516893411}" : 0, "{\"ts\":1392188576996887}" : 0, @@ -1217,77 +1231,79 @@ function InfraMockData() { "sum" : "14046560" } } ], - "process_state_list" : [ { "core_file_list" : [ ], - "exit_count" : 0, - "last_exit_time" : null, - "last_start_time" : "1392031412546885", - "last_stop_time" : null, - "process_name" : "redis-query", - "process_state" : "PROCESS_STATE_RUNNING", - "start_count" : 1, - "stop_count" : 0 - }, - { "core_file_list" : [ ], - "exit_count" : 0, - "last_exit_time" : null, - "last_start_time" : "1392031418563789", - "last_stop_time" : null, - "process_name" : "contrail-qe", - "process_state" : "PROCESS_STATE_RUNNING", - "start_count" : 1, - "stop_count" : 0 - }, - { "core_file_list" : [ ], - "exit_count" : 0, - "last_exit_time" : null, - "last_start_time" : "1392031416558338", - "last_stop_time" : null, - "process_name" : "contrail-collector", - "process_state" : "PROCESS_STATE_RUNNING", - "start_count" : 1, - "stop_count" : 0 - }, - { "core_file_list" : [ ], - "exit_count" : 0, - "last_exit_time" : null, - "last_start_time" : "1392031408536264", - "last_stop_time" : null, - "process_name" : "contrail-analytics-nodemgr", - "process_state" : "PROCESS_STATE_RUNNING", - "start_count" : 1, - "stop_count" : 0 - }, - { "core_file_list" : [ ], - "exit_count" : 0, - "last_exit_time" : null, - "last_start_time" : "1392031414552561", - "last_stop_time" : null, - "process_name" : "redis-uve", - "process_state" : "PROCESS_STATE_RUNNING", - "start_count" : 1, - "stop_count" : 0 - }, - { "core_file_list" : [ ], - "exit_count" : 0, - "last_exit_time" : null, - "last_start_time" : "1392031420569403", - "last_stop_time" : null, - "process_name" : "contrail-opserver", - "process_state" : "PROCESS_STATE_RUNNING", - "start_count" : 1, - "stop_count" : 0 - }, - { "core_file_list" : [ ], - "exit_count" : 0, - "last_exit_time" : null, - "last_start_time" : "1392031410542571", - "last_stop_time" : null, - "process_name" : "redis-sentinel", - "process_state" : "PROCESS_STATE_RUNNING", - "start_count" : 1, - "stop_count" : 0 - } - ], + "NodeStatus":{ + "process_info" : [ { "core_file_list" : [ ], + "exit_count" : 0, + "last_exit_time" : null, + "last_start_time" : "1392031412546885", + "last_stop_time" : null, + "process_name" : "redis-query", + "process_state" : "PROCESS_STATE_RUNNING", + "start_count" : 1, + "stop_count" : 0 + }, + { "core_file_list" : [ ], + "exit_count" : 0, + "last_exit_time" : null, + "last_start_time" : "1392031418563789", + "last_stop_time" : null, + "process_name" : "contrail-query-engine", + "process_state" : "PROCESS_STATE_RUNNING", + "start_count" : 1, + "stop_count" : 0 + }, + { "core_file_list" : [ ], + "exit_count" : 0, + "last_exit_time" : null, + "last_start_time" : "1392031416558338", + "last_stop_time" : null, + "process_name" : "contrail-collector", + "process_state" : "PROCESS_STATE_RUNNING", + "start_count" : 1, + "stop_count" : 0 + }, + { "core_file_list" : [ ], + "exit_count" : 0, + "last_exit_time" : null, + "last_start_time" : "1392031408536264", + "last_stop_time" : null, + "process_name" : "contrail-analytics-nodemgr", + "process_state" : "PROCESS_STATE_RUNNING", + "start_count" : 1, + "stop_count" : 0 + }, + { "core_file_list" : [ ], + "exit_count" : 0, + "last_exit_time" : null, + "last_start_time" : "1392031414552561", + "last_stop_time" : null, + "process_name" : "redis-uve", + "process_state" : "PROCESS_STATE_RUNNING", + "start_count" : 1, + "stop_count" : 0 + }, + { "core_file_list" : [ ], + "exit_count" : 0, + "last_exit_time" : null, + "last_start_time" : "1392031420569403", + "last_stop_time" : null, + "process_name" : "contrail-analytics-api", + "process_state" : "PROCESS_STATE_RUNNING", + "start_count" : 1, + "stop_count" : 0 + }, + { "core_file_list" : [ ], + "exit_count" : 0, + "last_exit_time" : null, + "last_start_time" : "1392031410542571", + "last_stop_time" : null, + "process_name" : "redis-sentinel", + "process_state" : "PROCESS_STATE_RUNNING", + "start_count" : 1, + "stop_count" : 0 + } + ] + }, "queryengine_cpu_share" : [ { "history-10" : { "{\"ts\":1392198391710580}" : 0.0083347200000000003, "{\"ts\":1392198451710998}" : 0.0041673600000000002, "{\"ts\":1392198511711397}" : 0.0041673600000000002, @@ -1404,7 +1420,7 @@ function InfraMockData() { "isUveMissing": false, "configIP": "10.204.217.11", "processDetails": { - "contrail-vrouter": { + "contrail-vrouter-agent": { "state": "PROCESS_STATE_RUNNING", "since": "1393912630664005" } diff --git a/webroot/monitor/infra/test/monitor_infra_vrouter_mock.js b/webroot/monitor/infra/test/monitor_infra_vrouter_mock.js index 5ea8b392d..93c1965b9 100644 --- a/webroot/monitor/infra/test/monitor_infra_vrouter_mock.js +++ b/webroot/monitor/infra/test/monitor_infra_vrouter_mock.js @@ -11,7 +11,7 @@ function InfraComputeMockData() { "last_exit_time" : null, "last_start_time" : "1391578930317483", "last_stop_time" : null, - "process_name" : "contrail-vrouter", + "process_name" : "contrail-vrouter-agent", "process_state" : "PROCESS_STATE_RUNNING", "start_count" : 1, "stop_count" : 0 @@ -39,7 +39,7 @@ function InfraComputeMockData() { }, "output" : { "PROCESS_STATE_LIST" : { - "contrail-vrouter" : "Up since 4d 9h 28m", + "contrail-vrouter-agent" : "Up since 4d 9h 28m", "contrail-vrouter-nodemgr" : "Up since 4d 9h 28m", "openstack-nova-compute" : "Up since 4d 9h 28m" } diff --git a/webroot/monitor/infra/vrouter/api/vrouternode.api.js b/webroot/monitor/infra/vrouter/api/vrouternode.api.js index 76890d0bd..6124e3fac 100644 --- a/webroot/monitor/infra/vrouter/api/vrouternode.api.js +++ b/webroot/monitor/infra/vrouter/api/vrouternode.api.js @@ -369,7 +369,7 @@ function getvRouterDetailConfigUVEData (configData, uuidList, nodeList, addGen, 'VrouterAgent:total_interface_count', 'VrouterAgent:down_interface_count', 'VrouterAgent:connected_networks', 'VrouterAgent:control_ip', 'VrouterAgent:build_info', - 'VrouterStatsAgent:cpu_share', 'VrouterStatsAgent:process_state_list']; + 'VrouterStatsAgent:cpu_share', 'NodeStatus']; commonUtils.createReqObj(dataObjArr, reqUrl, global.HTTP_REQUEST_POST, postData, opApiServer, null, appData); if (null != addGen) { diff --git a/webroot/monitor/infra/vrouter/ui/js/monitor_infra_vrouter_details.js b/webroot/monitor/infra/vrouter/ui/js/monitor_infra_vrouter_details.js index 722fcd91d..793a2e6b9 100644 --- a/webroot/monitor/infra/vrouter/ui/js/monitor_infra_vrouter_details.js +++ b/webroot/monitor/infra/vrouter/ui/js/monitor_infra_vrouter_details.js @@ -56,143 +56,7 @@ monitorInfraComputeDetailsClass = (function() { var procStateList, overallStatus = noDataStr; var vRouterProcessStatusList = []; var statusTemplate = contrail.getTemplate4Id("statusTemplate"); - overallStatus = getOverallNodeStatusForDetails(parsedData); - procStateList = getValueByJsonPath(computeNodeData,"VrouterStatsAgent;process_state_list"); - vRouterProcessStatusList = getStatusesForAllvRouterProcesses(procStateList); - computeNodeDashboardInfo = [ - {lbl:'Hostname', value:obj['name']}, - {lbl:'IP Address', value:(function(){ - return ifNullOrEmpty(getVrouterIpAddresses(computeNodeData,"details"),noDataStr); - })()}, - {lbl:'Version', value:parsedData['version'] != '-' ? parsedData['version'] : noDataStr}, - {lbl:'Overall Node Status', value:overallStatus}, - {lbl:'Processes', value:" "}, - {lbl:INDENT_RIGHT+'vRouter Agent', value:(function(){ - return ifNull(vRouterProcessStatusList['contrail-vrouter'],noDataStr); - })()}, - /*{lbl:INDENT_RIGHT+'vRouter Node Manager', value:(function(){ - try{ - return ifNull(vRouterProcessStatusList['contrail-vrouter-nodemgr'],noDataStr); - }catch(e){return noDataStr;} - })()}, - {lbl:INDENT_RIGHT+'Openstack Nova Compute', value:(function(){ - try{ - return ifNull(vRouterProcessStatusList['openstack-nova-compute'],noDataStr); - }catch(e){return noDataStr;} - })()},*/ - {lbl:'Analytics Node', value:(function(){ - var anlNode = noDataStr; - var secondaryAnlNode, status; - try{ - //anlNode = ifNull(computeNodeData.VrouterAgent.collector,noDataStr); - anlNode = jsonPath(computeNodeData,"$..ModuleClientState..primary")[0].split(':')[0]; - status = jsonPath(computeNodeData,"$..ModuleClientState..status")[0]; - secondaryAnlNode = jsonPath(computeNodeData,"$..ModuleClientState..secondary")[0].split(':')[0]; - }catch(e){ - anlNode = noDataStr; - } - try{ - if(anlNode != null && anlNode != noDataStr && status.toLowerCase() == "established") - anlNode = anlNode.concat(' (Up)'); - }catch(e){ - if(anlNode != null && anlNode != noDataStr) { - anlNode = anlNode.concat(' (Down)'); - } - } - if(secondaryAnlNode != null && secondaryAnlNode != "" && secondaryAnlNode != "0.0.0.0"){ - anlNode.concat(', ' + secondaryAnlNode); - } - return ifNull(anlNode,noDataStr); - })()}, - {lbl:'Control Nodes', value:(function(){ - var peerList ; - try{ - peerList = computeNodeData.VrouterAgent.xmpp_peer_list; - }catch(e){} - var nodeArr=noDataStr ; - if(peerList != null && peerList.length>0){ - nodeArr = '
'; - var nodes = ''; - - for (var i=0; i< peerList.length;i++){ - var node = ''; - node = ''+ peerList[i].ip +'' ; - - if(peerList[i].primary != null && peerList[i].primary == true){ - if(peerList[i].status == true){ - if((i+1) == peerList.length){//only primary present - node = node + "* (Up) " ; - } else { - node = node + "* (Up), " ; - } - } else { - node = "" + node + "* (Down), " ; - } - if(nodes == ''){ - nodes = node; - } else { - nodes = node + nodes - } - } else { - if(peerList[i].status == true) - node = node + " (Up)" ; - else - node = "" + node + " (Down)" ; - if(node != ''){ - nodes = nodes + node - } else { - nodes = node; - } - } - } - nodeArr = nodeArr + nodes + '
' - } - return nodeArr; - })(),clk:'url'}, - - //Best way to get the primary node - jsonPath(computeNodeData,'$.VrouterAgent.xmpp_peer_list[?(@.primary==true)].ip')}, - {lbl:'Analytics Messages', value:(function(){ - var msgs = getAnalyticsMessagesCountAndSize(computeNodeData,['VRouterAgent']); - return msgs['count'] + ' [' + formatBytes(msgs['size']) + ']'; - })()}, - {lbl:'XMPP Messages', value:(function(){ - var xmppStatsList = getValueByJsonPath(computeNodeData,'VrouterStatsAgent;xmpp_stats_list',[]); - var inMsgs = outMsgs = 0; - for(var i = 0; i < xmppStatsList.length ; i++) { - inMsgs += getValueByJsonPath(xmppStatsList[i],'in_msgs',0); - outMsgs += getValueByJsonPath(xmppStatsList[i],'out_msgs',0); - } - return (inMsgs + ' In, ' + outMsgs + ' Out'); - })()}, - {lbl:'Flow Count', value:(function(){ - return (getValueByJsonPath(computeNodeData,"VrouterStatsAgent;active_flows", noDataStr) + ' Active, ' + - getValueByJsonPath(computeNodeData,"VrouterStatsAgent;total_flows", noDataStr) + ' Total'); - })()}, - {lbl:'Networks', value:parsedData['vnCnt']}, - {lbl:'Interfaces', value:(function(){ - var downInts = parsedData['errorIntfCnt']; - var totInts = parsedData['intfCnt']; - var ret; - if(downInts > 0){ - downInts = ", " + downInts + " Down"; - } else { - downInts = ""; - } - return totInts + " Total" + downInts; - })()}, - {lbl:'Instances', value:parsedData['instCnt']}, - {lbl:'CPU', value:$.isNumeric(parsedData['cpu']) ? parsedData['cpu'] + ' %' : noDataStr}, - {lbl:'Memory', value:parsedData['memory'] != '-' ? parsedData['memory'] : noDataStr}, - {lbl:'Last Log', value: (function(){ - var lmsg; - lmsg = getLastLogTimestamp(computeNodeData,"compute"); - if(lmsg != null){ - try{ - return new Date(parseInt(lmsg)/1000).toLocaleString(); - }catch(e){return noDataStr;} - } else return noDataStr; - })()} - ] + computeNodeDashboardInfo = getvRouterDetailsLblValuePairs(parsedData); var cores=getCores(computeNodeData); for(var i=0;i
' + syntaxHighlight(dc.raw_json) + '
'); + //DataItem consists of row data,passing it as a parameter to the parsefunction + e.detailRow.find('.row-fluid.basicDetails').html(detailTemplate(data)); + $(grid).data('contrailGrid').adjustDetailRowHeight(dataItem['id']); + } else { + e.detailRow.find('.row-fluid.basicDetails').html(detailTemplate(data)); + } + }, + onCollapse:function (e,dc) { + } + } }, dataSource: { dataView: vRoutersDataSource, @@ -223,7 +245,10 @@ monitorInfraComputeSummaryClass = (function() { { field:"name", name:"Host name", - minWidth:110, + minWidth:175, + sortable : { + sortBy: 'formattedValue' + }, formatter:function(r,c,v,cd,dc) { return cellTemplateLinks({cellText:'name',name:'name',statusBubble:true,rowData:dc}); }, @@ -254,11 +279,6 @@ monitorInfraComputeSummaryClass = (function() { } }, }, - { - field:"version", - name:"Version", - minWidth:110 - }, { field:"status", name:"Status", @@ -276,6 +296,29 @@ monitorInfraComputeSummaryClass = (function() { } }, }, + { + field:"vnCnt", + name:"Networks", + minWidth:70 + }, + { + field:"instCnt", + name:"Instances", + minWidth:70 + }, + { + field:"intfCnt", + name:"Interfaces", + formatter:function(r,c,v,cd,dc){ + return contrail.format("{0} Total{1}",dc['intfCnt'],dc['errorIntfCntText']); + }, + minWidth:70 + }, + { + field:"version", + name:"Version", + minWidth:110 + }, { field:"cpu", name:"CPU (%)", @@ -288,35 +331,17 @@ monitorInfraComputeSummaryClass = (function() { return d['cpu']; }, exportConfig: { - allow: true, - advFormatter: function(dc) { - return dc.cpu; - } - }, + allow: true, + advFormatter: function(dc) { + return dc.cpu; + } + }, }, { field:"memory", name:"Memory", minWidth:110 - }, - { - field:"vnCnt", - name:"Networks", - minWidth:100 - }, - { - field:"instCnt", - name:"Instances", - minWidth:100 - }, - { - field:"intfCnt", - name:"Interfaces", - formatter:function(r,c,v,cd,dc){ - return contrail.format("{0} Total{1}",dc['intfCnt'],dc['errorIntfCntText']); - }, - minWidth:150 - }, + } ], } }); diff --git a/webroot/monitor/tenant-network/common/ui/js/tenant_monitor_utils.js b/webroot/monitor/tenant-network/common/ui/js/tenant_monitor_utils.js index 9f54f87e7..86020f145 100644 --- a/webroot/monitor/tenant-network/common/ui/js/tenant_monitor_utils.js +++ b/webroot/monitor/tenant-network/common/ui/js/tenant_monitor_utils.js @@ -1226,11 +1226,10 @@ function portSummaryRenderer() { portData = tenantNetworkMonitorUtils.parsePortDistribution(portData,$.extend({startTime:portDistributionParams['startTime'],endTime:portDistributionParams['endTime'], bandwidthField:'bytes',flowCntField:'flowCnt',portField:'port',startPort:startPort,endPort:endPort},{portType:obj['portType']})); - var retObj = {d:[{key:'Source Port',values:portData}], - forceX:[startPort,endPort],xLblFormat:d3.format(''),yDataType:'bytes',fqName:obj['fqName'], - yLbl:'Bandwidth',link:{hashParams:{q:{view:'list',type:'project',fqName:obj['fqName'],context:'domain'}}}, - chartOptions:{tooltipFn:tenantNetworkMonitor.portTooltipFn},title:'Port Distribution',xLbl:'Port' - } + var retObj = {d:[{key:'Source Port',values:portData}],fqName:obj['fqName'], + link:{hashParams:{q:{view:'list',type:'project',fqName:obj['fqName'],context:'domain'}}}, + chartOptions:{tooltipFn:tenantNetworkMonitor.portTooltipFn,forceX:[startPort,endPort],xLblFormat:d3.format(''), + yDataType:'bytes',yLbl:'Bandwidth',xLbl:'Port'},title:'Port Distribution'}; return retObj; } }]; diff --git a/webroot/monitor/tenant-network/common/ui/views/tenant_monitor_common.view b/webroot/monitor/tenant-network/common/ui/views/tenant_monitor_common.view index a39201981..0c926fa1c 100644 --- a/webroot/monitor/tenant-network/common/ui/views/tenant_monitor_common.view +++ b/webroot/monitor/tenant-network/common/ui/views/tenant_monitor_common.view @@ -7,45 +7,6 @@ - -