From 58ff2a2412837b2e438e745ccf3ffc022d111458 Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Sat, 12 Oct 2024 13:01:31 -0500 Subject: [PATCH] state changes if droplet reboots Signed-off-by: Jeff Carr --- http.go | 6 +++++- poll.go | 28 ++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) 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 +}