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

----------------------------------------------------------------------

----------------------------------------------------------------------