//go:build linux
package microvm
import (
"context"
"fmt"
"log/slog"
)
type Runner interface {
// check the host has what this backend needs for spec.
Validate(spec ImageSpec, enableKVM bool) error
Start(ctx context.Context, cfg VMConfig, volumePaths map[string]string, logger *slog.Logger) (VMHandle, error)
}
func runnerFor(runnerType string) (Runner, error) {
switch runnerType {
case "qemu", "":
return qemuRunner{}, nil
case "firecracker":
return nil, fmt.Errorf("runner type %q not implemented yet", runnerType)
default:
return nil, fmt.Errorf("unsupported runner type %q", runnerType)
}
}