ctlv2: report unhealthy in cluster-health if any node is unavailable

Fixes #8061 and #7032
This commit is contained in:
Anthony Romano 2017-06-08 16:06:11 -07:00
parent 3b460506d9
commit ad0b3cfdab

View File

@ -70,7 +70,7 @@ func handleClusterHealth(c *cli.Context) error {
}
for {
health := false
healthyMembers := 0
for _, m := range ms {
if len(m.ClientURLs) == 0 {
fmt.Printf("member %s is unreachable: no available published client urls\n", m.ID)
@ -105,8 +105,8 @@ func handleClusterHealth(c *cli.Context) error {
checked = true
if result.Health == "true" || nresult.Health {
health = true
fmt.Printf("member %s is healthy: got healthy result from %s\n", m.ID, url)
healthyMembers++
} else {
fmt.Printf("member %s is unhealthy: got unhealthy result from %s\n", m.ID, url)
}
@ -116,19 +116,20 @@ func handleClusterHealth(c *cli.Context) error {
fmt.Printf("member %s is unreachable: %v are all unreachable\n", m.ID, m.ClientURLs)
}
}
if health {
switch healthyMembers {
case len(ms):
fmt.Println("cluster is healthy")
} else {
fmt.Println("cluster is unhealthy")
case 0:
fmt.Println("cluster is unavailable")
default:
fmt.Println("cluster is degraded")
}
if !forever {
if health {
if healthyMembers == len(ms) {
os.Exit(ExitSuccess)
return nil
}
os.Exit(ExitClusterNotHealthy)
return nil
}
fmt.Printf("\nnext check after 10 second...\n\n")