state changes if droplet reboots

Signed-off-by: Jeff Carr <jcarr@wit.com>
This commit is contained in:
Jeff Carr 2024-10-12 13:01:31 -05:00
parent e94b4d6626
commit 58ff2a2412
2 changed files with 33 additions and 1 deletions

View File

@ -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
}

28
poll.go
View File

@ -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
}