Description
The Hedge VMM type in hedge.go is currently a stub. All lifecycle methods return hedge not implemented yet:
go
func (h *Hedge) Ok() error { return fmt.Errorf("hedge not implemented yet") }
func (h *Hedge) Signal(_ int, _ unix.Signal) error { return fmt.Errorf("hedge not implemented yet") }
func (h *Hedge) Stop(_ int) error { return fmt.Errorf("hedge not implemented yet") }
func (h *Hedge) BuildExecCmd(...) ([]string, error) { return nil, fmt.Errorf("hedge not implemented yet") }
func (h *Hedge) PreExec(_ types.ExecArgs) error { return fmt.Errorf("hedge not implemented yet") }
Goal
Implement the full Hedge VMM lifecycle by integrating the existing github.com/nubificus/hedge_cli/hedge_api package into urunc, similar to how Qemu and Firecracker are implemented.
Acceptance criteria
Hedge.Ok() validates that the Hedge environment is usable.
Hedge.Stop() and Hedge.Signal() map to the correct Hedge API calls.
Hedge.BuildExecCmd() returns a valid command/argument slice to execute the unikernel under Hedge.
Hedge.PreExec() performs any required pre-execution setup.
End-to-end urunc create/start/kill/delete flows work with Hedge as the VMM.
Relevant files
hedge.go
qemu.go (reference implementation)
firecracker.go (reference implementation)
Description
The Hedge VMM type in hedge.go is currently a stub. All lifecycle methods return hedge not implemented yet:
go
func (h *Hedge) Ok() error { return fmt.Errorf("hedge not implemented yet") }
func (h *Hedge) Signal(_ int, _ unix.Signal) error { return fmt.Errorf("hedge not implemented yet") }
func (h *Hedge) Stop(_ int) error { return fmt.Errorf("hedge not implemented yet") }
func (h *Hedge) BuildExecCmd(...) ([]string, error) { return nil, fmt.Errorf("hedge not implemented yet") }
func (h *Hedge) PreExec(_ types.ExecArgs) error { return fmt.Errorf("hedge not implemented yet") }
Goal
Implement the full Hedge VMM lifecycle by integrating the existing github.com/nubificus/hedge_cli/hedge_api package into urunc, similar to how Qemu and Firecracker are implemented.
Acceptance criteria
Hedge.Ok() validates that the Hedge environment is usable.
Hedge.Stop() and Hedge.Signal() map to the correct Hedge API calls.
Hedge.BuildExecCmd() returns a valid command/argument slice to execute the unikernel under Hedge.
Hedge.PreExec() performs any required pre-execution setup.
End-to-end urunc create/start/kill/delete flows work with Hedge as the VMM.
Relevant files
hedge.go
qemu.go (reference implementation)
firecracker.go (reference implementation)