summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--http.go6
-rw-r--r--poll.go28
2 files changed, 33 insertions, 1 deletions
diff --git a/http.go b/http.go
index 772d358..59a30be 100644
--- a/http.go
+++ b/http.go
@@ -68,7 +68,11 @@ func okHandler(w http.ResponseWriter, r *http.Request) {
return
}
if tmp == "/uptime" {
- writeFile(w, "uptime.html")
+ if clusterHealthy() {
+ fmt.Fprintln(w, "GOOD=true")
+ } else {
+ fmt.Fprintln(w, "GOOD=false")
+ }
return
}
diff --git a/poll.go b/poll.go
index e0a8a28..f9c75ab 100644
--- a/poll.go
+++ b/poll.go
@@ -63,3 +63,31 @@ func findDroplet(name string) *DropletT {
}
return nil
}
+
+func clusterHealthy() bool {
+ var good = true
+ for _, d := range me.droplets {
+ if d.State != "ON" {
+ continue
+ }
+ dur := time.Since(d.lastpoll) // Calculate the elapsed time
+ if d.CurrentState != "ON" {
+ log.Info("BAD STATE ", d.Hostname, "State =", d.State, "CurrentState =", d.CurrentState, shell.FormatDuration(dur))
+ good = false
+ } else {
+ dur := time.Since(d.lastpoll) // Calculate the elapsed time
+ if dur > time.Minute {
+ log.Info("GOOD STATE MISSING", d.Hostname, d.hname, shell.FormatDuration(dur))
+ good = false
+ d.CurrentState = "MISSING"
+ }
+ log.Info("GOOD STATE ON", d.Hostname, d.hname, shell.FormatDuration(dur))
+ }
+ }
+ if good {
+ log.Info("GOOD=true")
+ } else {
+ log.Info("GOOD=false")
+ }
+ return good
+}