You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficcontrol.apache.org by el...@apache.org on 2017/03/30 19:48:06 UTC
[1/2] incubator-trafficcontrol git commit: Fix TM2 GUI non-reported
cache states
Repository: incubator-trafficcontrol
Updated Branches:
refs/heads/master e82b68f5e -> d5580c339
Fix TM2 GUI non-reported cache states
Project: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/commit/ad9b3da1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/tree/ad9b3da1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/diff/ad9b3da1
Branch: refs/heads/master
Commit: ad9b3da1f14208c6fc991f54ab38d2f2673ed802
Parents: e82b68f
Author: Robert Butts <ro...@gmail.com>
Authored: Mon Mar 13 13:19:51 2017 -0600
Committer: Jeff Elsloo <je...@cable.comcast.com>
Committed: Thu Mar 30 13:47:42 2017 -0600
----------------------------------------------------------------------
.../traffic_monitor/datareq/cachestate.go | 96 ++++++++++++--------
.../traffic_monitor/datareq/datareq.go | 2 +-
.../traffic_monitor/static/index.html | 15 ++-
3 files changed, 71 insertions(+), 42 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/ad9b3da1/traffic_monitor_golang/traffic_monitor/datareq/cachestate.go
----------------------------------------------------------------------
diff --git a/traffic_monitor_golang/traffic_monitor/datareq/cachestate.go b/traffic_monitor_golang/traffic_monitor/datareq/cachestate.go
index 750305f..0f9130d 100644
--- a/traffic_monitor_golang/traffic_monitor/datareq/cachestate.go
+++ b/traffic_monitor_golang/traffic_monitor/datareq/cachestate.go
@@ -32,6 +32,7 @@ import (
"github.com/apache/incubator-trafficcontrol/traffic_monitor_golang/traffic_monitor/peer"
"github.com/apache/incubator-trafficcontrol/traffic_monitor_golang/traffic_monitor/threadsafe"
todata "github.com/apache/incubator-trafficcontrol/traffic_monitor_golang/traffic_monitor/trafficopsdata"
+ to "github.com/apache/incubator-trafficcontrol/traffic_ops/client"
)
// CacheStatus contains summary stat data about the given cache.
@@ -56,8 +57,19 @@ type CacheStatus struct {
ConnectionCount *int64 `json:"connection_count,omitempty"`
}
-func srvAPICacheStates(toData todata.TODataThreadsafe, statInfoHistory threadsafe.ResultInfoHistory, statResultHistory threadsafe.ResultStatHistory, healthHistory threadsafe.ResultHistory, lastHealthDurations threadsafe.DurationMap, localStates peer.CRStatesThreadsafe, lastStats threadsafe.LastStats, localCacheStatus threadsafe.CacheAvailableStatus, statMaxKbpses threadsafe.CacheKbpses) ([]byte, error) {
- return json.Marshal(createCacheStatuses(toData.Get().ServerTypes, statInfoHistory.Get(), statResultHistory.Get(), healthHistory.Get(), lastHealthDurations.Get(), localStates.Get().Caches, lastStats.Get(), localCacheStatus, statMaxKbpses))
+func srvAPICacheStates(
+ toData todata.TODataThreadsafe,
+ statInfoHistory threadsafe.ResultInfoHistory,
+ statResultHistory threadsafe.ResultStatHistory,
+ healthHistory threadsafe.ResultHistory,
+ lastHealthDurations threadsafe.DurationMap,
+ localStates peer.CRStatesThreadsafe,
+ lastStats threadsafe.LastStats,
+ localCacheStatus threadsafe.CacheAvailableStatus,
+ statMaxKbpses threadsafe.CacheKbpses,
+ monitorConfig threadsafe.TrafficMonitorConfigMap,
+) ([]byte, error) {
+ return json.Marshal(createCacheStatuses(toData.Get().ServerTypes, statInfoHistory.Get(), statResultHistory.Get(), healthHistory.Get(), lastHealthDurations.Get(), localStates.Get().Caches, lastStats.Get(), localCacheStatus, statMaxKbpses, monitorConfig.Get().TrafficServer))
}
func createCacheStatuses(
@@ -70,28 +82,33 @@ func createCacheStatuses(
lastStats dsdata.LastStats,
localCacheStatusThreadsafe threadsafe.CacheAvailableStatus,
statMaxKbpses threadsafe.CacheKbpses,
+ servers map[string]to.TrafficServer,
) map[enum.CacheName]CacheStatus {
conns := createCacheConnections(statResultHistory)
statii := map[enum.CacheName]CacheStatus{}
localCacheStatus := localCacheStatusThreadsafe.Get().Copy() // TODO test whether copy is necessary
maxKbpses := statMaxKbpses.Get()
- for cacheName, cacheType := range cacheTypes {
- infoHistory, ok := statInfoHistory[cacheName]
- if !ok {
- log.Infof("createCacheStatuses stat info history missing cache %s\n", cacheName)
- continue
+ for cacheNameStr, serverInfo := range servers {
+ cacheName := enum.CacheName(cacheNameStr)
+ status, statusPoller := cacheStatusAndPoller(cacheName, serverInfo, localCacheStatus)
+
+ cacheTypeStr := ""
+ if cacheType, ok := cacheTypes[cacheName]; !ok {
+ log.Infof("Error getting cache type for %v: not in types\n", cacheName)
+ } else {
+ cacheTypeStr = string(cacheType)
}
- if len(infoHistory) < 1 {
+ loadAverage := 0.0
+ if infoHistory, ok := statInfoHistory[cacheName]; !ok {
+ log.Infof("createCacheStatuses stat info history missing cache %s\n", cacheName)
+ } else if len(infoHistory) < 1 {
log.Infof("createCacheStatuses stat info history empty for cache %s\n", cacheName)
- continue
+ } else {
+ loadAverage = infoHistory[0].Vitals.LoadAvg
}
- log.Debugf("createCacheStatuses NOT empty for cache %s\n", cacheName)
-
- loadAverage := &infoHistory[0].Vitals.LoadAvg
-
healthQueryTime, err := latestQueryTimeMS(cacheName, lastHealthDurations)
if err != nil {
log.Infof("Error getting cache %v health query time: %v\n", cacheName, err)
@@ -141,31 +158,9 @@ func createCacheStatuses(
connections = &connectionsVal
}
- var status *string
- var statusPoller *string
- statusVal, ok := localCacheStatus[cacheName]
- if !ok {
- log.Infof("cache not in statuses %s\n", cacheName)
- } else {
- statusString := statusVal.Status + " - "
-
- // this should match the event string, use as the default if possible
- if statusVal.Why != "" {
- statusString = statusVal.Why
- } else if statusVal.Available {
- statusString += "available"
- } else {
- statusString += fmt.Sprintf("unavailable (%s)", statusVal.Why)
- }
-
- status = &statusString
- statusPoller = &statusVal.Poller
- }
-
- cacheTypeStr := string(cacheType)
statii[cacheName] = CacheStatus{
Type: &cacheTypeStr,
- LoadAverage: loadAverage,
+ LoadAverage: &loadAverage,
QueryTimeMilliseconds: &healthQueryTime,
StatTimeMilliseconds: &statTime,
HealthTimeMilliseconds: &healthTime,
@@ -174,13 +169,38 @@ func createCacheStatuses(
BandwidthKbps: kbps,
BandwidthCapacityKbps: maxKbps,
ConnectionCount: connections,
- Status: status,
- StatusPoller: statusPoller,
+ Status: &status,
+ StatusPoller: &statusPoller,
}
}
return statii
}
+func cacheStatusAndPoller(server enum.CacheName, serverInfo to.TrafficServer, localCacheStatus cache.AvailableStatuses) (string, string) {
+ switch status := enum.CacheStatusFromString(serverInfo.Status); status {
+ case enum.CacheStatusAdminDown:
+ fallthrough
+ case enum.CacheStatusOnline:
+ fallthrough
+ case enum.CacheStatusOffline:
+ return status.String(), ""
+ }
+
+ statusVal, ok := localCacheStatus[server]
+ if !ok {
+ log.Infof("cache not in statuses %s\n", server)
+ return "ERROR - not in statuses", ""
+ }
+
+ if statusVal.Why != "" {
+ return statusVal.Why, statusVal.Poller
+ }
+ if statusVal.Available {
+ return fmt.Sprintf("%s - available", statusVal.Status), statusVal.Poller
+ }
+ return fmt.Sprintf("%s - unavailable", statusVal.Status), statusVal.Poller
+}
+
func createCacheConnections(statResultHistory cache.ResultStatHistory) map[enum.CacheName]int64 {
conns := map[enum.CacheName]int64{}
for server, history := range statResultHistory {
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/ad9b3da1/traffic_monitor_golang/traffic_monitor/datareq/datareq.go
----------------------------------------------------------------------
diff --git a/traffic_monitor_golang/traffic_monitor/datareq/datareq.go b/traffic_monitor_golang/traffic_monitor/datareq/datareq.go
index 05c50d8..a5862b4 100644
--- a/traffic_monitor_golang/traffic_monitor/datareq/datareq.go
+++ b/traffic_monitor_golang/traffic_monitor/datareq/datareq.go
@@ -111,7 +111,7 @@ func MakeDispatchMap(
return srvAPITrafficOpsURI(opsConfig)
}, ContentTypeJSON)),
"/api/cache-statuses": wrap(WrapErr(errorCount, func() ([]byte, error) {
- return srvAPICacheStates(toData, statInfoHistory, statResultHistory, healthHistory, lastHealthDurations, localStates, lastStats, localCacheStatus, statMaxKbpses)
+ return srvAPICacheStates(toData, statInfoHistory, statResultHistory, healthHistory, lastHealthDurations, localStates, lastStats, localCacheStatus, statMaxKbpses, monitorConfig)
}, ContentTypeJSON)),
"/api/bandwidth-kbps": wrap(WrapBytes(func() []byte {
return srvAPIBandwidthKbps(toData, lastStats)
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/ad9b3da1/traffic_monitor_golang/traffic_monitor/static/index.html
----------------------------------------------------------------------
diff --git a/traffic_monitor_golang/traffic_monitor/static/index.html b/traffic_monitor_golang/traffic_monitor/static/index.html
index f0a9651..7ca7788 100644
--- a/traffic_monitor_golang/traffic_monitor/static/index.html
+++ b/traffic_monitor_golang/traffic_monitor/static/index.html
@@ -252,10 +252,11 @@ under the License.
ajax("/api/cache-statuses", function(r) {
var jdata = JSON.parse(r);
var servers = Object.keys(jdata); //debug
+ var table = document.getElementById("cache-states");
for (i = 0; i < servers.length; i++) {
var server = servers[i];
if (!document.getElementById("cache-states-" + server)) {
- var row = document.getElementById("cache-states").insertRow(1); //document.createElement("tr");
+ var row = table.insertRow(1); //document.createElement("tr");
row.classList.add("stripes");
row.id = "cache-states-" + server
row.insertCell(0).id = row.id + "-server";
@@ -288,11 +289,11 @@ under the License.
if (jdata[server].hasOwnProperty("status")) {
document.getElementById("cache-states-" + server + "-status").textContent = jdata[server].status;
var row = document.getElementById("cache-states-" + server);
- if (jdata[server].status.indexOf("ADMIN_DOWN") != -1) {
+ if (jdata[server].status.indexOf("ADMIN_DOWN") != -1 || jdata[server].status.indexOf("OFFLINE") != -1) {
row.classList.add("warning");
row.classList.remove("error");
row.classList.remove("stripes");
- } else if (jdata[server].status.indexOf(" available") == -1) {
+ } else if (jdata[server].status.indexOf(" available") == -1 && jdata[server].status.indexOf("ONLINE") != 0) {
row.classList.add("error");
row.classList.remove("warning");
row.classList.remove("stripes");
@@ -333,6 +334,14 @@ under the License.
document.getElementById("cache-states-" + server + "-connection-count").textContent = "N/A";
}
}
+
+ for (var i = 0, row; row = table.rows[i]; i++) {
+ var server = row.id.replace(/^cache-states-/, '');
+ if(!(server in jdata)) {
+ table.deleteRow(i);
+ }
+ }
+
})
}
[2/2] incubator-trafficcontrol git commit: This closes #352.
Posted by el...@apache.org.
This closes #352.
Project: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/commit/d5580c33
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/tree/d5580c33
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/diff/d5580c33
Branch: refs/heads/master
Commit: d5580c339cd27d139167a57f27440f41595813b8
Parents: ad9b3da
Author: Jeff Elsloo <je...@cable.comcast.com>
Authored: Thu Mar 30 13:47:56 2017 -0600
Committer: Jeff Elsloo <je...@cable.comcast.com>
Committed: Thu Mar 30 13:47:56 2017 -0600
----------------------------------------------------------------------
----------------------------------------------------------------------