Help us shape the future of Go! Take the 2026 Go Developer Survey

runtime

package
v0.4.15 Latest Latest
Warning

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

Go to latest
Published: Sep 25, 2026 License: Apache-2.0 Imports: 20 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DefaultPostgresPort = 5432
	DefaultOpenBaoPort  = 8200
)

Variables

View Source
var ErrResourceOwnership = errors.New("runtime resource ownership does not match the application project")
View Source
var ErrRuntimeNotFound = errors.New("container runtime orchestration not found")

Functions

func DataDir added in v0.4.2

func DataDir(stateDir string) (string, error)

DataDir resolves the BaseHarbor data root that owns runtime-global metadata. Explicit state-directory overrides remain self-contained. Without an override, metadata is stored beside runtime/ so creating it cannot change legacy/global runtime selection.

func EnsureServiceAccess added in v0.4.15

func EnsureServiceAccess(ctx context.Context, issuer serviceaccess.Issuer, files Files) error

func IsPortBindingConflict

func IsPortBindingConflict(err error) bool

IsPortBindingConflict reports whether a Docker Compose or Podman runtime failure is a host-port allocation conflict. Runtime engines phrase the same condition differently, so keep the classifier deliberately narrow but multi-engine.

func QuadletAvailable added in v0.4.15

func QuadletAvailable(ctx context.Context) bool

QuadletAvailable reports whether this host can run rootless Podman Quadlet units.

func RenderComposeProjectFilesJSON added in v0.4.15

func RenderComposeProjectFilesJSON(composePaths []string, environment map[string]string) (string, error)

func RequireCapabilities added in v0.4.0

func RequireCapabilities(provider Provider, required ...RuntimeCapability) error

RequireCapabilities validates runtime requirements before orchestration starts. Providers must satisfy every requested capability; BaseHarbor never silently downgrades runtime behavior because a provider lacks a feature.

func StateDir added in v0.4.2

func StateDir(stateDir string) (string, error)

StateDir resolves the authoritative BaseHarbor runtime state directory without mutating it.

func WriteQuadletProject added in v0.4.15

func WriteQuadletProject(dir string, project QuadletProject) error

Types

type Compose

type Compose struct {
	// contains filtered or unexported fields
}

Compose provides the small lifecycle surface BaseHarbor needs from a container runtime. Application code should not shell out to Docker/Podman directly.

func DetectCompose

func DetectCompose(ctx context.Context) (Compose, error)

DetectCompose remains the compatibility entry point for existing v0.3 callers. Provider selection itself is centralized in DetectProvider so new runtime implementations do not require application-contract changes.

func (Compose) BuildProjectFilesSelectedProgress added in v0.4.15

func (c Compose) BuildProjectFilesSelectedProgress(ctx context.Context, project, workdir string, environment map[string]string, services []string, onProgress func(string), composeFiles ...string) error

func (Compose) Capabilities added in v0.4.0

func (Compose) Capabilities() ProviderCapabilities

func (Compose) Config

func (c Compose) Config(ctx context.Context, composeFile, envFile string) error

func (Compose) ConfigJSONProjectFilesEnv

func (c Compose) ConfigJSONProjectFilesEnv(ctx context.Context, project, workdir string, environment map[string]string, composeFiles ...string) (string, error)

func (Compose) ConfigProject

func (c Compose) ConfigProject(ctx context.Context, project, composeFile, envFile string) error

func (Compose) ConfigProjectFiles

func (c Compose) ConfigProjectFiles(ctx context.Context, project, workdir string, composeFiles ...string) error

func (Compose) ConfigProjectFilesEnv

func (c Compose) ConfigProjectFilesEnv(ctx context.Context, project, workdir string, environment map[string]string, composeFiles ...string) error

func (Compose) ConnectManagedNetwork added in v0.4.8

func (c Compose) ConnectManagedNetwork(ctx context.Context, network, container, alias string) error

func (Compose) ContainerExposedTCPPorts added in v0.4.8

func (c Compose) ContainerExposedTCPPorts(ctx context.Context, container string) ([]int, error)

func (Compose) ContainerHealthStatus added in v0.4.8

func (c Compose) ContainerHealthStatus(ctx context.Context, container string) (string, error)

func (Compose) ContainerNetworks added in v0.4.8

func (c Compose) ContainerNetworks(ctx context.Context, container string) ([]string, error)

func (Compose) DestroyOwnedProjectResources added in v0.4.11

func (c Compose) DestroyOwnedProjectResources(ctx context.Context, project string, resources []ProjectResource) error

func (Compose) DestroyProject

func (c Compose) DestroyProject(ctx context.Context, project, composeFile, envFile string) error

func (Compose) DestroyProjectRemoveOrphans added in v0.4.4

func (c Compose) DestroyProjectRemoveOrphans(ctx context.Context, project, composeFile, envFile string) error

func (Compose) DiagnosticsProject added in v0.4.9

func (c Compose) DiagnosticsProject(ctx context.Context, project, composeFile, envFile string) string

DiagnosticsProject captures stopped/restarting containers and recent logs before a fail-closed lifecycle rollback removes provider resources.

func (Compose) DisconnectManagedNetwork added in v0.4.8

func (c Compose) DisconnectManagedNetwork(ctx context.Context, network, container string) error

func (Compose) Down

func (c Compose) Down(ctx context.Context, composeFile, envFile string) error

func (Compose) DownProject

func (c Compose) DownProject(ctx context.Context, project, composeFile, envFile string) error

func (Compose) DownProjectFiles

func (c Compose) DownProjectFiles(ctx context.Context, project, workdir string, composeFiles ...string) error

func (Compose) DownProjectFilesEnv

func (c Compose) DownProjectFilesEnv(ctx context.Context, project, workdir string, environment map[string]string, composeFiles ...string) error

func (Compose) DownProjectRemoveOrphans added in v0.4.4

func (c Compose) DownProjectRemoveOrphans(ctx context.Context, project, composeFile, envFile string) error

func (Compose) Engine added in v0.4.14

func (c Compose) Engine() string

func (Compose) EnsureManagedNetwork added in v0.4.8

func (c Compose) EnsureManagedNetwork(ctx context.Context, name string) error

func (Compose) ExecProject

func (c Compose) ExecProject(ctx context.Context, project, composeFile, envFile, service string, args ...string) (string, error)

func (Compose) ExecProjectFiles

func (c Compose) ExecProjectFiles(ctx context.Context, project, workdir, service string, composeFiles []string, args ...string) (string, error)

func (Compose) ExecProjectFilesInput added in v0.4.15

func (c Compose) ExecProjectFilesInput(ctx context.Context, project, workdir, service string, composeFiles []string, input []byte, args ...string) (string, error)

func (Compose) ExecProjectInput

func (c Compose) ExecProjectInput(ctx context.Context, project, composeFile, envFile string, input []byte, service string, args ...string) (string, error)

ExecProjectInput executes a command inside a Compose service while supplying stdin without placing that input in the host process argument list. It is intended for sensitive operator flows such as OpenBao unseal/authentication.

func (Compose) InspectProjectResource

func (c Compose) InspectProjectResource(ctx context.Context, project string, resource ProjectResource) (bool, error)

InspectProjectResource verifies an exact runtime resource name before a destructive operation. A resource with the expected name but a different Compose project label is an ownership conflict, never an implicit match.

func (Compose) InspectProjectResources added in v0.4.15

func (c Compose) InspectProjectResources(ctx context.Context, project string, resources []ProjectResource) ([]ProjectResource, error)

InspectProjectResources verifies runtime resource existence and ownership in batches by kind. This keeps ownership fail-closed while avoiding repeated list/inspect round-trips on Podman.

func (Compose) Kind added in v0.4.0

func (c Compose) Kind() ProviderKind

func (Compose) ListComposeContainers added in v0.4.8

func (c Compose) ListComposeContainers(ctx context.Context) ([]ComposeContainer, error)

func (Compose) LogsProject added in v0.4.9

func (c Compose) LogsProject(ctx context.Context, project, composeFile, envFile string, services ...string) (string, error)

func (Compose) NetworkProjectOwner added in v0.4.8

func (c Compose) NetworkProjectOwner(ctx context.Context, network string) (string, error)

func (Compose) ProjectServiceImageIdentity added in v0.4.15

func (c Compose) ProjectServiceImageIdentity(ctx context.Context, project, service string) (ImageIdentity, error)

func (Compose) PullImage added in v0.4.15

func (c Compose) PullImage(ctx context.Context, image string) error

func (Compose) RemoveManagedNetwork added in v0.4.8

func (c Compose) RemoveManagedNetwork(ctx context.Context, name string) error

func (Compose) RunProjectFilesEnv added in v0.3.0

func (c Compose) RunProjectFilesEnv(ctx context.Context, project, workdir string, environment map[string]string, stdin io.Reader, stdout, stderr io.Writer, composeFiles []string, args ...string) error

RunProjectFilesEnv runs a workload command with caller-owned streams. Docker uses Compose; Podman resolves the same workload through Quadlet-owned containers without falling back to podman compose.

func (Compose) RunningServicesProject

func (c Compose) RunningServicesProject(ctx context.Context, project, _, _ string) ([]string, error)

func (Compose) RunningServicesProjectFiles

func (c Compose) RunningServicesProjectFiles(ctx context.Context, project, workdir string, composeFiles ...string) ([]string, error)

func (Compose) RunningServicesProjectFilesEnv

func (c Compose) RunningServicesProjectFilesEnv(ctx context.Context, project, workdir string, environment map[string]string, composeFiles ...string) ([]string, error)

func (Compose) ServiceStatesProjectFilesEnv added in v0.3.0

func (c Compose) ServiceStatesProjectFilesEnv(ctx context.Context, project, workdir string, environment map[string]string, composeFiles ...string) ([]ServiceState, error)

ServiceStatesProjectFilesEnv returns Compose service state without exposing generated container names to application code. Modern Compose implementations expose JSON state including container health and published ports. Older compatible implementations fall back to the portable running-service query; in that case Health and Publishers remain empty rather than inventing state.

func (Compose) ServicesProjectFiles

func (c Compose) ServicesProjectFiles(ctx context.Context, project, workdir string, composeFiles ...string) ([]string, error)

func (Compose) ServicesProjectFilesEnv

func (c Compose) ServicesProjectFilesEnv(ctx context.Context, project, workdir string, environment map[string]string, composeFiles ...string) ([]string, error)

func (Compose) Status

func (c Compose) Status(ctx context.Context, composeFile, envFile string) (string, error)

func (Compose) StatusProject

func (c Compose) StatusProject(ctx context.Context, project, composeFile, envFile string) (string, error)

func (Compose) StatusProjectFiles

func (c Compose) StatusProjectFiles(ctx context.Context, project, workdir string, composeFiles ...string) (string, error)

func (Compose) StopProject added in v0.4.8

func (c Compose) StopProject(ctx context.Context, project, composeFile, envFile string) error

func (Compose) StopProjectFilesSelected

func (c Compose) StopProjectFilesSelected(ctx context.Context, project, workdir string, environment map[string]string, services []string, composeFiles ...string) error

func (Compose) Up

func (c Compose) Up(ctx context.Context, composeFile, envFile string) error

func (Compose) UpProject

func (c Compose) UpProject(ctx context.Context, project, composeFile, envFile string) error

func (Compose) UpProjectFiles

func (c Compose) UpProjectFiles(ctx context.Context, project, workdir string, composeFiles ...string) error

func (Compose) UpProjectFilesSelected

func (c Compose) UpProjectFilesSelected(ctx context.Context, project, workdir string, environment map[string]string, services []string, composeFiles ...string) error

func (Compose) UpProjectFilesSelectedForceRecreateNoBuild added in v0.4.15

func (c Compose) UpProjectFilesSelectedForceRecreateNoBuild(ctx context.Context, project, workdir string, environment map[string]string, services []string, composeFiles ...string) error

func (Compose) UpProjectFilesSelectedNoBuildProgress added in v0.4.15

func (c Compose) UpProjectFilesSelectedNoBuildProgress(ctx context.Context, project, workdir string, environment map[string]string, services []string, onProgress func(string), composeFiles ...string) error

func (Compose) UpProjectFilesSelectedProgress added in v0.4.11

func (c Compose) UpProjectFilesSelectedProgress(ctx context.Context, project, workdir string, environment map[string]string, services []string, onProgress func(string), composeFiles ...string) error

func (Compose) UpProjectProgress added in v0.4.11

func (c Compose) UpProjectProgress(ctx context.Context, project, composeFile, envFile string, onProgress func(string)) error

type ComposeContainer added in v0.4.8

type ComposeContainer struct {
	Name    string
	Project string
	Service string
	Running bool
	Health  string
}

type Config

type Config struct {
	PostgresDB       string
	PostgresUser     string
	PostgresPassword string
	PostgresPort     int
	OpenBaoPort      int
}

func LoadConfig

func LoadConfig(envPath string) (Config, error)

type Files

type Files struct {
	Compose string
	Env     string
	Project string
}

func EnsureFiles

func EnsureFiles(stateDir string) (Files, error)

func EnsureFilesForProject added in v0.4.15

func EnsureFilesForProject(stateDir, project string, ports Ports) (Files, error)

func EnsureFilesWithPorts

func EnsureFilesWithPorts(stateDir string, ports Ports) (Files, error)

func ExistingFiles

func ExistingFiles(stateDir string) (Files, error)

func ExistingFilesForProject added in v0.4.15

func ExistingFilesForProject(stateDir, project string) (Files, error)

type ImageIdentity added in v0.4.15

type ImageIdentity struct {
	Reference string
	ImageID   string
	Digest    string
}

type Ports

type Ports struct {
	Postgres int
	OpenBao  int
}

type ProjectResource

type ProjectResource struct {
	Kind string
	Name string
}

type Provider added in v0.4.0

type Provider interface {
	Kind() ProviderKind
	Capabilities() ProviderCapabilities
}

Provider is the minimal runtime-provider seam. It deliberately exposes only provider identity and runtime capabilities at this stage; provider-specific lifecycle inputs stay behind the concrete implementation until a portable operation has a demonstrated second implementation.

func DetectProvider added in v0.4.0

func DetectProvider(ctx context.Context) (Provider, error)

DetectProvider preserves the v0.3/v0.4 Compose-default compatibility path. Deployment-aware callers should use DetectProviderForKind with the explicit provider stored in protected deployment state.

func DetectProviderForKind added in v0.4.0

func DetectProviderForKind(ctx context.Context, kind ProviderKind) (Provider, error)

DetectProviderForKind resolves the explicitly selected deployment runtime. Provider selection belongs to deployment/environment state and must never be inferred from the portable application contract.

type ProviderCapabilities added in v0.4.0

type ProviderCapabilities struct {
	WorkloadLifecycle bool
	ServiceExec       bool
	PublishedPorts    bool
	ResourceOwnership bool
}

ProviderCapabilities describes runtime behavior that orchestration may rely on. Capability providers such as PostgreSQL, Valkey or object storage are a separate axis and must not be encoded here.

func (ProviderCapabilities) Supports added in v0.4.0

func (c ProviderCapabilities) Supports(capability RuntimeCapability) bool

type ProviderKind added in v0.4.0

type ProviderKind string

ProviderKind identifies the runtime implementation selected for application workloads. It is deployment configuration, not part of the portable application contract.

const (
	// ProviderCompose is retained only as the legacy auto-detect compatibility
	// value. New target-owned runtime selections use concrete provider identities.
	ProviderCompose    ProviderKind = "compose"
	ProviderDocker     ProviderKind = "docker"
	ProviderPodman     ProviderKind = "podman"
	ProviderKubernetes ProviderKind = "kubernetes"
	ProviderOpenShift  ProviderKind = "openshift"
)

func ParseProviderKind added in v0.4.0

func ParseProviderKind(value string) (ProviderKind, error)

type PublishedPort added in v0.3.0

type PublishedPort struct {
	URL           string
	TargetPort    int
	PublishedPort int
	Protocol      string
}

PublishedPort is the provider-facing portion of a Compose publisher that is useful for local operational readiness. It deliberately contains no BaseHarbor-specific ingress model; it mirrors existing Compose runtime state.

type QuadletProject added in v0.4.15

type QuadletProject struct {
	Project      string
	Files        map[string]string
	ServiceUnits map[string]string
	Containers   map[string]string
}

func RenderComposeProjectFilesQuadlets added in v0.4.15

func RenderComposeProjectFilesQuadlets(composePaths []string, envFile, project string, selectedServices ...string) (QuadletProject, error)

func RenderComposeProjectFilesQuadletsEnv added in v0.4.15

func RenderComposeProjectFilesQuadletsEnv(composePaths []string, envFile string, environment map[string]string, project string, selectedServices ...string) (QuadletProject, error)

func RenderComposeProjectQuadlets added in v0.4.15

func RenderComposeProjectQuadlets(composePath, envFile, project string, selectedServices ...string) (QuadletProject, error)

type RuntimeCapability added in v0.4.0

type RuntimeCapability string

RuntimeCapability names portable runtime behavior that orchestration may require from a provider. These capabilities describe the runtime substrate, not application capabilities such as PostgreSQL or object storage.

const (
	CapabilityWorkloadLifecycle RuntimeCapability = "workload-lifecycle"
	CapabilityServiceExec       RuntimeCapability = "service-exec"
	CapabilityPublishedPorts    RuntimeCapability = "published-ports"
	CapabilityResourceOwnership RuntimeCapability = "resource-ownership"
)

type ServiceState added in v0.3.0

type ServiceState struct {
	Service    string
	State      string
	Health     string
	Publishers []PublishedPort
}

ServiceState is the provider-facing runtime state BaseHarbor needs for truthful workload readiness. Health is empty when the service has no healthcheck or the Compose implementation cannot report one.

func (ServiceState) Ready added in v0.3.0

func (s ServiceState) Ready() bool

Ready reports whether the service is running and, when a health status is available, has reached a healthy terminal state.

Jump to

Keyboard shortcuts

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