summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2024-10-12 13:01:31 -0500
committerJeff Carr <[email protected]>2024-10-12 13:01:31 -0500
commit58ff2a2412837b2e438e745ccf3ffc022d111458 (patch)
tree460cb4e1f46b30db3dd4e17dec8fb4e2a23e8fd4
parente94b4d6626fafb20da118eb8b17e661928c2b5da (diff)
state changes if droplet reboots
Signed-off-by: Jeff Carr <[email protected]>
-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
+}