diff --git a/internal/daemon/doctor.go b/internal/daemon/doctor.go index 1dfe608..055c1e0 100644 --- a/internal/daemon/doctor.go +++ b/internal/daemon/doctor.go @@ -27,17 +27,27 @@ func Doctor(ctx context.Context) (system.Report, error) { config: cfg, runner: system.NewRunner(), } - db, err := store.Open(layout.DBPath) - if err == nil { + db, storeErr := store.Open(layout.DBPath) + if storeErr == nil { defer db.Close() d.store = db } - return d.doctorReport(ctx), nil + return d.doctorReport(ctx, storeErr), nil } -func (d *Daemon) doctorReport(ctx context.Context) system.Report { +func (d *Daemon) doctorReport(ctx context.Context, storeErr error) system.Report { report := system.Report{} + if storeErr != nil { + report.AddFail( + "state store", + fmt.Sprintf("open %s: %v", d.layout.DBPath, storeErr), + "remove or restore the file if corrupt; otherwise check its permissions", + ) + } else { + report.AddPass("state store", "readable at "+d.layout.DBPath) + } + report.AddPreflight("host runtime", d.runtimeChecks(), runtimeStatus(d.config)) report.AddPreflight("core vm lifecycle", d.coreVMLifecycleChecks(), "required host tools available") report.AddPreflight("vsock guest agent", d.vsockChecks(), "vsock guest agent prerequisites available")