mirror of
https://github.com/tailscale/tailscale.git
synced 2025-04-16 19:51:41 +00:00
cmd/tailscale: make status show health check problems
Fixes #2775 RELNOTE=tailscale status now shows health check problems Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
parent
73f177e4d5
commit
4549d3151c
@ -122,10 +122,18 @@ func runStatus(ctx context.Context, args []string) error {
|
|||||||
case ipn.NeedsMachineAuth.String():
|
case ipn.NeedsMachineAuth.String():
|
||||||
fmt.Println("Machine is not yet authorized by tailnet admin.")
|
fmt.Println("Machine is not yet authorized by tailnet admin.")
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
case ipn.Running.String():
|
case ipn.Running.String(), ipn.Starting.String():
|
||||||
// Run below.
|
// Run below.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if len(st.Health) > 0 {
|
||||||
|
fmt.Printf("# Health check:\n")
|
||||||
|
for _, m := range st.Health {
|
||||||
|
fmt.Printf("# - %s\n", m)
|
||||||
|
}
|
||||||
|
fmt.Println()
|
||||||
|
}
|
||||||
|
|
||||||
var buf bytes.Buffer
|
var buf bytes.Buffer
|
||||||
f := func(format string, a ...interface{}) { fmt.Fprintf(&buf, format, a...) }
|
f := func(format string, a ...interface{}) { fmt.Fprintf(&buf, format, a...) }
|
||||||
printPS := func(ps *ipnstate.PeerStatus) {
|
printPS := func(ps *ipnstate.PeerStatus) {
|
||||||
|
@ -9,6 +9,7 @@ package health
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"os"
|
||||||
"sort"
|
"sort"
|
||||||
"sync"
|
"sync"
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
@ -265,6 +266,8 @@ func OverallError() error {
|
|||||||
return overallErrorLocked()
|
return overallErrorLocked()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var fakeErrForTesting = os.Getenv("TS_DEBUG_FAKE_HEALTH_ERROR")
|
||||||
|
|
||||||
func overallErrorLocked() error {
|
func overallErrorLocked() error {
|
||||||
if !anyInterfaceUp {
|
if !anyInterfaceUp {
|
||||||
return errors.New("network down")
|
return errors.New("network down")
|
||||||
@ -315,6 +318,9 @@ func overallErrorLocked() error {
|
|||||||
for regionID, problem := range derpRegionHealthProblem {
|
for regionID, problem := range derpRegionHealthProblem {
|
||||||
errs = append(errs, fmt.Errorf("derp%d: %v", regionID, problem))
|
errs = append(errs, fmt.Errorf("derp%d: %v", regionID, problem))
|
||||||
}
|
}
|
||||||
|
if e := fakeErrForTesting; len(errs) == 0 && e != "" {
|
||||||
|
return errors.New(e)
|
||||||
|
}
|
||||||
sort.Slice(errs, func(i, j int) bool {
|
sort.Slice(errs, func(i, j int) bool {
|
||||||
// Not super efficient (stringifying these in a sort), but probably max 2 or 3 items.
|
// Not super efficient (stringifying these in a sort), but probably max 2 or 3 items.
|
||||||
return errs[i].Error() < errs[j].Error()
|
return errs[i].Error() < errs[j].Error()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user