Guard pause/resume against disabled backends; clean up CLI errors
- PauseBackend and ResumeBackend return an error (not bool) when the
backend is disabled, preventing an inconsistent state where the
health state says "paused" but enabled=false.
- DisableBackend and EnableBackend now log uniform backend-transition
lines with from/to instead of separate backend-disable/backend-enable
messages.
- CLI errors strip gRPC boilerplate ("rpc error: code = ... desc = ")
and display the server message in red (when color is enabled). Both
the interactive shell and one-shot mode use the same formatError path.
This commit is contained in:
@@ -2,8 +2,11 @@
|
||||
|
||||
package main
|
||||
|
||||
import "strings"
|
||||
|
||||
const (
|
||||
ansiBlue = "\x1b[34m"
|
||||
ansiRed = "\x1b[31m"
|
||||
ansiReset = "\x1b[0m"
|
||||
)
|
||||
|
||||
@@ -20,3 +23,19 @@ func label(s string) string {
|
||||
}
|
||||
return ansiBlue + s + ansiReset
|
||||
}
|
||||
|
||||
// formatError returns a user-friendly error string. gRPC status errors are
|
||||
// unwrapped to show only the server's message (no "rpc error: code = ..."
|
||||
// boilerplate). The result is wrapped in red ANSI when color is enabled.
|
||||
func formatError(err error) string {
|
||||
msg := err.Error()
|
||||
// google.golang.org/grpc/status errors format as:
|
||||
// rpc error: code = <Code> desc = <message>
|
||||
if i := strings.Index(msg, " desc = "); i >= 0 {
|
||||
msg = msg[i+len(" desc = "):]
|
||||
}
|
||||
if colorEnabled {
|
||||
return ansiRed + msg + ansiReset
|
||||
}
|
||||
return msg
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ import (
|
||||
|
||||
func main() {
|
||||
if err := run(); err != nil {
|
||||
fmt.Fprintf(os.Stderr, "error: %v\n", err)
|
||||
fmt.Fprintf(os.Stderr, "%s\n", formatError(err))
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@ func runShell(ctx context.Context, client grpcapi.MaglevClient) error {
|
||||
if errors.Is(err, errQuit) {
|
||||
return nil
|
||||
}
|
||||
fmt.Fprintf(rl.Stderr(), "error: %v\n", err)
|
||||
fmt.Fprintf(rl.Stderr(), "%s\n", formatError(err))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user