Skip to content

Commit f0e9de5

Browse files
authored
various restart/devbox fixes (#288)
* restart init also on nil * add gops to localds via hidden flags * update-go-mod * change column name * various fixes * CR: cleanup Also distinguish restart from not-ok more correctly in tp_monitor
1 parent ec1f3b3 commit f0e9de5

File tree

22 files changed

+1166
-703
lines changed

22 files changed

+1166
-703
lines changed

go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ require (
1616
github.com/go-openapi/strfmt v0.25.0
1717
github.com/goccy/go-yaml v1.10.0
1818
github.com/golang/protobuf v1.5.4
19+
github.com/google/gops v0.3.28
1920
github.com/hashicorp/go-multierror v1.1.1
2021
github.com/jclem/sseparser v0.5.0
2122
github.com/modelcontextprotocol/go-sdk v1.1.0

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,8 @@ github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN
271271
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
272272
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
273273
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
274+
github.com/google/gops v0.3.28 h1:2Xr57tqKAmQYRAfG12E+yLcoa2Y42UJo2lOrUFL9ark=
275+
github.com/google/gops v0.3.28/go.mod h1:6f6+Nl8LcHrzJwi8+p0ii+vmBFSlB4f8cOOkTJ7sk4c=
274276
github.com/google/jsonschema-go v0.3.0 h1:6AH2TxVNtk3IlvkkhjrtbUc4S8AvO0Xii0DxIygDg+Q=
275277
github.com/google/jsonschema-go v0.3.0/go.mod h1:r5quNTdLOYEz95Ru18zA0ydNbBuYoo9tgaYcxEYhJVE=
276278
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=

internal/command/devbox/printers.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ type devboxRow struct {
1616
OS string `sdtab:"OS"`
1717
MachineID string `sdtab:"MACHINE ID,trunc"`
1818
Status string `sdtab:"STATUS"`
19-
ValidUntil string `sdtab:"VALID UNTIL"`
19+
ValidUntil string `sdtab:"EXPIRES"`
2020
}
2121

2222
// printDevboxTable prints devboxes in a table format.

internal/command/local/connect.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,9 @@ func runConnectImpl(out, errOut io.Writer, log *slog.Logger, localConfig *config
210210
"--daemon",
211211
"--root-manager",
212212
}
213+
if localConfig.GOPSAddrRoot != "" {
214+
args = append(args, "--gops-root-addr", localConfig.GOPSAddrRoot)
215+
}
213216
if localConfig.PProfAddr != "" {
214217
args = append(args, "--pprof", localConfig.PProfAddr)
215218
}
@@ -221,6 +224,9 @@ func runConnectImpl(out, errOut io.Writer, log *slog.Logger, localConfig *config
221224
"--daemon",
222225
"--sandbox-manager",
223226
)
227+
if localConfig.GOPSAddrNonRoot != "" {
228+
cmd.Args = append(cmd.Args, "--gops-non-root-addr", localConfig.GOPSAddrNonRoot)
229+
}
224230
cmd.Env = append(cmd.Env, ciConfig.Env...)
225231
}
226232
cmd.Env = append(cmd.Env,

internal/command/local/printers.go

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -341,17 +341,15 @@ func getRawDevboxSession(cfg *config.LocalStatus, devboxSession *commonapi.Devbo
341341
// Standard view
342342
type PrintableDevboxSession struct {
343343
Healthy bool `json:"healthy"`
344-
SessionReleased bool `json:"sessionReleased"`
345344
DevboxId string `json:"devboxId,omitempty"`
346345
SessionId string `json:"sessionId,omitempty"`
347346
LastErrorReason string `json:"lastErrorReason,omitempty"`
348347
}
349348

350349
result := &PrintableDevboxSession{
351-
Healthy: devboxSession.Healthy,
352-
SessionReleased: devboxSession.SessionReleased,
353-
DevboxId: devboxSession.DevboxId,
354-
SessionId: devboxSession.SessionId,
350+
Healthy: devboxSession.Healthy,
351+
DevboxId: devboxSession.DevboxId,
352+
SessionId: devboxSession.SessionId,
355353
}
356354

357355
if devboxSession.LastErrorReason != "" {
@@ -380,11 +378,7 @@ func printLocalStatus(cfg *config.LocalStatus, out io.Writer, status *sbmapi.Sta
380378
}
381379
// runtime config
382380
printer.printRuntimeConfig()
383-
// Check devbox session status
384-
if status.DevboxSession != nil && status.DevboxSession.SessionReleased {
385-
printer.printErrors(append(connectErrs, fmt.Errorf("devbox session no longer available (released by another process)")))
386-
return nil
387-
}
381+
// Check devbox session status (no longer checking for session release)
388382

389383
// print status
390384
if len(connectErrs) == 0 {
@@ -464,13 +458,13 @@ func (p *statusPrinter) printDevboxSessionStatus() {
464458
}
465459

466460
ds := p.status.DevboxSession
467-
if ds.SessionReleased {
468-
msg := "devbox session no longer available"
461+
if !ds.Healthy {
462+
msg := "devbox session unhealthy"
469463
if ds.LastErrorReason != "" {
470464
msg += fmt.Sprintf(": %s", ds.LastErrorReason)
471465
}
472466
p.printLine(p.out, 1, msg, p.red("✗"))
473-
} else if ds.Healthy {
467+
} else {
474468
msg := fmt.Sprintf("devbox session active (devbox: %s, session: %s)", ds.DevboxId, ds.SessionId)
475469
if p.cfg.Details && ds.SessionId != "" {
476470
msg = "devbox session active"
@@ -480,12 +474,6 @@ func (p *statusPrinter) printDevboxSessionStatus() {
480474
} else {
481475
p.printLine(p.out, 1, msg, p.green("✓"))
482476
}
483-
} else {
484-
msg := "devbox session unhealthy"
485-
if ds.LastErrorReason != "" {
486-
msg += fmt.Sprintf(": %s", ds.LastErrorReason)
487-
}
488-
p.printLine(p.out, 1, msg, p.red("✗"))
489477
}
490478
}
491479

internal/command/locald/locald.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,15 @@ func run(cfg *config.LocalDaemon, args []string) error {
7272
}
7373
if cfg.RootManager {
7474
args = append(args, "--root-manager")
75+
if cfg.GOPSAddrRoot != "" {
76+
args = append(args, "--gops-root-addr", cfg.GOPSAddrRoot)
77+
}
7578
} else {
7679
args = append(args, "--sandbox-manager")
7780
env = append(env, ciConfig.Env...)
81+
if cfg.GOPSAddrNonRoot != "" {
82+
args = append(args, "--gops-non-root-addr", cfg.GOPSAddrNonRoot)
83+
}
7884
}
7985
cmd := exec.Command(binary, args...)
8086
cmd.Env = env

internal/config/local.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ type Local struct {
2626

2727
// initialized from ~/.signadot/config.yaml
2828
LocalConfig *config.Config
29+
30+
// hidden
31+
GOPSAddrRoot string
32+
GOPSAddrNonRoot string
2933
}
3034

3135
func (l *Local) InitLocalConfig() error {
@@ -120,6 +124,10 @@ func (c *LocalConnect) AddFlags(cmd *cobra.Command) {
120124
cmd.Flags().Lookup("wait").NoOptDefVal = ConnectWaitConnect.String()
121125
cmd.Flags().StringVar(&c.PProfAddr, "pprof", "", "pprof listen address")
122126
cmd.Flags().MarkHidden("pprof")
127+
cmd.Flags().StringVar(&c.GOPSAddrRoot, "gops-root-addr", "", "gops root address")
128+
cmd.Flags().MarkHidden("gops-root-addr")
129+
cmd.Flags().StringVar(&c.GOPSAddrNonRoot, "gops-non-root-addr", "", "gops root address")
130+
cmd.Flags().MarkHidden("gops-non-root-addr")
123131
}
124132

125133
type ConnectWait int

internal/config/locald.go

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ type LocalDaemon struct {
3030
// Hidden Flags
3131
ConnectInvocationConfigFile string
3232
PProfAddr string
33+
GOPSAddrRoot string
34+
GOPSAddrNonRoot string
3335
}
3436

3537
func (ld *LocalDaemon) InitLocalDaemon() error {
@@ -106,13 +108,17 @@ func (ciConfig *ConnectInvocationConfig) GetLogName(isRootManager bool) string {
106108
return SandboxManagerLogFile
107109
}
108110

109-
func (c *LocalDaemon) AddFlags(cmd *cobra.Command) {
110-
cmd.Flags().BoolVar(&c.DaemonRun, "daemon", false, "run in background as daemon")
111-
cmd.Flags().BoolVar(&c.RootManager, "root-manager", false, "run the root-manager (privileged daemon)")
112-
cmd.Flags().BoolVar(&c.SandboxManager, "sandbox-manager", false, "run the sandbox-manager (unprivileged daemon)")
111+
func (ld *LocalDaemon) AddFlags(cmd *cobra.Command) {
112+
cmd.Flags().BoolVar(&ld.DaemonRun, "daemon", false, "run in background as daemon")
113+
cmd.Flags().BoolVar(&ld.RootManager, "root-manager", false, "run the root-manager (privileged daemon)")
114+
cmd.Flags().BoolVar(&ld.SandboxManager, "sandbox-manager", false, "run the sandbox-manager (unprivileged daemon)")
113115

114-
cmd.Flags().StringVar(&c.ConnectInvocationConfigFile, "ci-config-file", "", "by-pass calling signadot local connect (hidden)")
116+
cmd.Flags().StringVar(&ld.ConnectInvocationConfigFile, "ci-config-file", "", "by-pass calling signadot local connect (hidden)")
115117
cmd.Flags().MarkHidden("ci-config-file")
116-
cmd.Flags().StringVar(&c.PProfAddr, "pprof", "", "pprof listen address")
118+
cmd.Flags().StringVar(&ld.PProfAddr, "pprof", "", "pprof listen address")
117119
cmd.Flags().MarkHidden("pprof")
120+
cmd.Flags().StringVar(&ld.GOPSAddrRoot, "gops-root-addr", "", "gops root address")
121+
cmd.Flags().MarkHidden("gops-root-addr")
122+
cmd.Flags().StringVar(&ld.GOPSAddrNonRoot, "gops-non-root-addr", "", "gops root address")
123+
cmd.Flags().MarkHidden("gops-non-root-addr")
118124
}

0 commit comments

Comments
 (0)