provider

package
v0.32.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 6, 2026 License: MIT Imports: 5 Imported by: 0

Documentation

Overview

Package provider defines the VMProvider interface that abstracts away the underlying virtualization backend (Podman Machine, Docker Desktop, OrbStack, etc.) so that devx networking and provisioning can run on top of whatever hypervisor the developer already has.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type DockerProvider

type DockerProvider struct{}

DockerProvider implements VMProvider using Docker Desktop / OrbStack. OrbStack is automatically used when it is installed, since it replaces the `docker` CLI transparently.

func (*DockerProvider) Init

func (d *DockerProvider) Init(name string) error

func (*DockerProvider) Inspect

func (d *DockerProvider) Inspect(_ string) (*MachineInfo, error)

func (*DockerProvider) IsRunning

func (d *DockerProvider) IsRunning(_ string) bool

func (*DockerProvider) Name

func (d *DockerProvider) Name() string

func (*DockerProvider) Remove

func (d *DockerProvider) Remove(name string) error

func (*DockerProvider) Resize added in v0.6.0

func (d *DockerProvider) Resize(_ string, _, _ int) error

func (*DockerProvider) SSH

func (d *DockerProvider) SSH(machineName, command string) (string, error)

func (*DockerProvider) SetDefault

func (d *DockerProvider) SetDefault(_ string) error

func (*DockerProvider) Sleep added in v0.6.0

func (d *DockerProvider) Sleep(_ string) error

func (*DockerProvider) Start

func (d *DockerProvider) Start(_ string) error

func (*DockerProvider) StopAll

func (d *DockerProvider) StopAll() error

type MachineInfo

type MachineInfo struct {
	Name  string
	State string
}

MachineInfo is the backend-agnostic representation of a VM.

type PodmanProvider

type PodmanProvider struct{}

PodmanProvider implements VMProvider using Podman Machine.

func (*PodmanProvider) Init

func (p *PodmanProvider) Init(name string) error

func (*PodmanProvider) Inspect

func (p *PodmanProvider) Inspect(name string) (*MachineInfo, error)

func (*PodmanProvider) IsRunning

func (p *PodmanProvider) IsRunning(name string) bool

func (*PodmanProvider) Name

func (p *PodmanProvider) Name() string

func (*PodmanProvider) Remove

func (p *PodmanProvider) Remove(name string) error

func (*PodmanProvider) Resize added in v0.6.0

func (p *PodmanProvider) Resize(name string, cpus int, memoryMB int) error

func (*PodmanProvider) SSH

func (p *PodmanProvider) SSH(machineName, command string) (string, error)

func (*PodmanProvider) SetDefault

func (p *PodmanProvider) SetDefault(name string) error

func (*PodmanProvider) Sleep added in v0.6.0

func (p *PodmanProvider) Sleep(name string) error

func (*PodmanProvider) Start

func (p *PodmanProvider) Start(name string) error

func (*PodmanProvider) StopAll

func (p *PodmanProvider) StopAll() error

type VMProvider

type VMProvider interface {
	// Name returns the human-readable provider name (e.g. "podman", "docker").
	Name() string

	// Init provisions a new VM with the given name.
	Init(name string) error

	// Start starts a named VM.
	Start(name string) error

	// StopAll stops all running VMs managed by this provider.
	StopAll() error

	// Remove force-removes a VM by name.
	Remove(name string) error

	// Sleep suspends the VM to save memory/battery.
	Sleep(name string) error

	// Resize modifies the VM's hardware limits (cpus, memory).
	Resize(name string, cpus int, memoryMB int) error

	// SetDefault sets the active connection context to the named VM.
	SetDefault(name string) error

	// SSH executes a shell command inside the named VM and returns stdout.
	SSH(machineName, command string) (string, error)

	// IsRunning checks if the named VM is in the "running" state.
	IsRunning(name string) bool

	// Inspect returns structured info about a machine.
	Inspect(name string) (*MachineInfo, error)
}

VMProvider is the contract every backend must fulfil.

func Get

func Get(name string) (VMProvider, error)

Get returns a VMProvider for the given name. Supported values: "podman" (default), "docker", "orbstack".

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL