Stop relying on ad hoc rootfs handling by adding image promotion, managed work-seed fingerprint metadata, and lazy self-healing for older managed images after the first create. Rebuild guest images with baked SSH access, a guest NIC bootstrap, and default opencode services, and add the staged Void kernel/initramfs/modules workflow so void-exp uses a matching Void boot stack. Replace the opaque blocking vm.create RPC with a begin/status flow that prints live stages in the CLI while still waiting for vsock health and opencode on guest port 4096. Validate with GOCACHE=/tmp/banger-gocache go test ./... and live void-exp create/delete smoke runs.
18 lines
435 B
Go
18 lines
435 B
Go
package daemon
|
|
|
|
import (
|
|
"context"
|
|
|
|
"banger/internal/model"
|
|
"banger/internal/opencode"
|
|
)
|
|
|
|
type opencodeCapability struct{}
|
|
|
|
func (opencodeCapability) Name() string { return "opencode" }
|
|
|
|
func (opencodeCapability) PostStart(ctx context.Context, d *Daemon, vm model.VMRecord, _ model.Image) error {
|
|
return opencode.WaitReady(ctx, d.logger, vm.Runtime.VSockPath, func(stage, detail string) {
|
|
vmCreateStage(ctx, stage, detail)
|
|
})
|
|
}
|