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

runtime

package
v0.4.3 Latest Latest
Warning

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

Go to latest
Published: Sep 18, 2026 License: Apache-2.0 Imports: 16 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("docker compose or podman compose 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 IsPortBindingConflict

func IsPortBindingConflict(err error) bool

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

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.

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) 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) DestroyProject

func (c Compose) DestroyProject(ctx context.Context, project, composeFile, envFile 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) 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) 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) Kind added in v0.4.0

func (Compose) Kind() ProviderKind

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 Compose project command with caller-owned streams. It is used for interactive developer actions such as logs and workload shells without exposing container names to the caller.

func (Compose) RunningServicesProject

func (c Compose) RunningServicesProject(ctx context.Context, project, composeFile, envFile 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) 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

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
}

func EnsureFiles

func EnsureFiles(stateDir string) (Files, error)

func EnsureFilesWithPorts

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

func ExistingFiles

func ExistingFiles(stateDir string) (Files, error)

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 ProviderKind = "compose"
)

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 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