Documentation
¶
Index ¶
- Constants
- Variables
- func DataDir(stateDir string) (string, error)
- func IsPortBindingConflict(err error) bool
- func RequireCapabilities(provider Provider, required ...RuntimeCapability) error
- func StateDir(stateDir string) (string, error)
- type Compose
- func (Compose) Capabilities() ProviderCapabilities
- func (c Compose) Config(ctx context.Context, composeFile, envFile string) error
- func (c Compose) ConfigJSONProjectFilesEnv(ctx context.Context, project, workdir string, environment map[string]string, ...) (string, error)
- func (c Compose) ConfigProject(ctx context.Context, project, composeFile, envFile string) error
- func (c Compose) ConfigProjectFiles(ctx context.Context, project, workdir string, composeFiles ...string) error
- func (c Compose) ConfigProjectFilesEnv(ctx context.Context, project, workdir string, environment map[string]string, ...) error
- func (c Compose) DestroyProject(ctx context.Context, project, composeFile, envFile string) error
- func (c Compose) Down(ctx context.Context, composeFile, envFile string) error
- func (c Compose) DownProject(ctx context.Context, project, composeFile, envFile string) error
- func (c Compose) DownProjectFiles(ctx context.Context, project, workdir string, composeFiles ...string) error
- func (c Compose) DownProjectFilesEnv(ctx context.Context, project, workdir string, environment map[string]string, ...) error
- func (c Compose) ExecProject(ctx context.Context, project, composeFile, envFile, service string, ...) (string, error)
- func (c Compose) ExecProjectFiles(ctx context.Context, project, workdir, service string, composeFiles []string, ...) (string, error)
- func (c Compose) ExecProjectInput(ctx context.Context, project, composeFile, envFile string, input []byte, ...) (string, error)
- func (c Compose) InspectProjectResource(ctx context.Context, project string, resource ProjectResource) (bool, error)
- func (Compose) Kind() ProviderKind
- func (c Compose) RunProjectFilesEnv(ctx context.Context, project, workdir string, environment map[string]string, ...) error
- func (c Compose) RunningServicesProject(ctx context.Context, project, composeFile, envFile string) ([]string, error)
- func (c Compose) RunningServicesProjectFiles(ctx context.Context, project, workdir string, composeFiles ...string) ([]string, error)
- func (c Compose) RunningServicesProjectFilesEnv(ctx context.Context, project, workdir string, environment map[string]string, ...) ([]string, error)
- func (c Compose) ServiceStatesProjectFilesEnv(ctx context.Context, project, workdir string, environment map[string]string, ...) ([]ServiceState, error)
- func (c Compose) ServicesProjectFiles(ctx context.Context, project, workdir string, composeFiles ...string) ([]string, error)
- func (c Compose) ServicesProjectFilesEnv(ctx context.Context, project, workdir string, environment map[string]string, ...) ([]string, error)
- func (c Compose) Status(ctx context.Context, composeFile, envFile string) (string, error)
- func (c Compose) StatusProject(ctx context.Context, project, composeFile, envFile string) (string, error)
- func (c Compose) StatusProjectFiles(ctx context.Context, project, workdir string, composeFiles ...string) (string, error)
- func (c Compose) StopProjectFilesSelected(ctx context.Context, project, workdir string, environment map[string]string, ...) error
- func (c Compose) Up(ctx context.Context, composeFile, envFile string) error
- func (c Compose) UpProject(ctx context.Context, project, composeFile, envFile string) error
- func (c Compose) UpProjectFiles(ctx context.Context, project, workdir string, composeFiles ...string) error
- func (c Compose) UpProjectFilesSelected(ctx context.Context, project, workdir string, environment map[string]string, ...) error
- type Config
- type Files
- type Ports
- type ProjectResource
- type Provider
- type ProviderCapabilities
- type ProviderKind
- type PublishedPort
- type RuntimeCapability
- type ServiceState
Constants ¶
const ( DefaultPostgresPort = 5432 DefaultOpenBaoPort = 8200 )
Variables ¶
var ErrResourceOwnership = errors.New("runtime resource ownership does not match the application project")
var ErrRuntimeNotFound = errors.New("docker compose or podman compose not found")
Functions ¶
func DataDir ¶ added in v0.4.2
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 ¶
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.
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 ¶
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) ConfigJSONProjectFilesEnv ¶
func (Compose) ConfigProject ¶
func (Compose) ConfigProjectFiles ¶
func (Compose) ConfigProjectFilesEnv ¶
func (Compose) DestroyProject ¶
func (Compose) DownProject ¶
func (Compose) DownProjectFiles ¶
func (Compose) DownProjectFilesEnv ¶
func (Compose) ExecProject ¶
func (Compose) ExecProjectFiles ¶
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 (Compose) RunningServicesProjectFiles ¶
func (Compose) RunningServicesProjectFilesEnv ¶
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 (Compose) ServicesProjectFilesEnv ¶
func (Compose) StatusProject ¶
func (Compose) StatusProjectFiles ¶
func (Compose) StopProjectFilesSelected ¶
func (Compose) UpProjectFiles ¶
type Config ¶
type Config struct {
PostgresDB string
PostgresUser string
PostgresPassword string
PostgresPort int
OpenBaoPort int
}
func LoadConfig ¶
type ProjectResource ¶
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
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
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.