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:
2026-04-11 21:19:05 +02:00
parent 1815675fb6
commit 74448cf6d0
6 changed files with 68 additions and 23 deletions

View File

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