Documentation
¶
Overview ¶
Package platformdeploy contains the StackKit boundary for PaaS delivery. OpenTofu owns platform installation; StackKit-owned/default L3 applications are PaaS-intended, while customer-installed applications outside the manifest are state-unmanaged by StackKit.
Fallback executor per ADR-0045 §6: the in-house Komodo, Coolify and Dokploy HTTP adapters are retained until each platform's OpenTofu provider target has real-host parity; retirement is a P4 slice per platform.
Index ¶
- Constants
- Variables
- func CoolifyProviderRecipeDigest(recipe string) (string, error)
- func GenerateKomodoStackResource(manifest AppManifest) ([]byte, error)
- func HasOwnerHostDeployment(workspace, project string) (bool, error)
- func HostDeploymentManager(state HostDeployment) string
- func IsDegraded(err error) bool
- func IsStackKitOwnedApp(app AppManifest) bool
- func RemoveOwnerHostDeployment(workspace, project string, expected HostDeployment) error
- func RequireComposeWorkloadOwner(workspace, project string) error
- func RequireHostDeploymentManager(state HostDeployment, manager string) error
- func RequiresBootstrapEvidence(platform string) bool
- func SaveOwnerHostDeployment(workspace, project string, state HostDeployment) error
- func ValidateBootstrapEvidence(platform string, evidence BootstrapEvidence) error
- func ValidateRuntipiTerminalIntent(i RuntipiTerminalIntent) error
- func ValidateRuntipiTerminalQualification(q RuntipiTerminalQualification) error
- func ValidateRuntipiTerminalResult(out RuntipiTerminalOperation, q RuntipiTerminalQualification, ...) (bool, error)
- type Adapter
- type AppManifest
- type BootstrapCapability
- type BootstrapCapabilityEvidence
- type BootstrapCapabilityProvider
- type BootstrapEvidence
- type BootstrapManifest
- type BundleManifest
- type BundleResult
- type ComponentFailure
- type CoolifyAdapter
- func (a *CoolifyAdapter) ApplicationComponents(ctx context.Context, ref DeploymentRef) ([]CoolifyApplicationComponent, error)
- func (a *CoolifyAdapter) ApplyCompose(ctx context.Context, manifest AppManifest) (DeploymentRef, error)
- func (a *CoolifyAdapter) BootstrapCapabilities() []BootstrapCapability
- func (a *CoolifyAdapter) BootstrapProviderName() string
- func (a *CoolifyAdapter) ControlApplication(ctx context.Context, ref DeploymentRef, componentUUID, action string) error
- func (a *CoolifyAdapter) ControlServiceComponent(ctx context.Context, ref DeploymentRef, componentUUID, action string) error
- func (a *CoolifyAdapter) CreateProject(ctx context.Context, name string) (string, error)
- func (a *CoolifyAdapter) Delete(ctx context.Context, ref DeploymentRef) error
- func (a *CoolifyAdapter) DeleteServiceKeepingData(ctx context.Context, ref DeploymentRef) error
- func (a *CoolifyAdapter) Deploy(ctx context.Context, ref DeploymentRef) (string, error)
- func (a *CoolifyAdapter) ObserveDeployment(ctx context.Context, ref DeploymentRef) (DeploymentRef, error)
- func (a *CoolifyAdapter) ObserveDeployments(ctx context.Context, refs []DeploymentRef) ([]DeploymentRef, error)
- func (a *CoolifyAdapter) ProjectHasServices(ctx context.Context, id string) (bool, error)
- func (a *CoolifyAdapter) Projects(ctx context.Context) ([]CoolifyProject, error)
- func (a *CoolifyAdapter) Redeploy(ctx context.Context, ref DeploymentRef) (string, error)
- func (a *CoolifyAdapter) RequireProviderService(ctx context.Context, ref DeploymentRef, heldRecipeDigest string, ...) error
- func (a *CoolifyAdapter) ServiceAbsent(ctx context.Context, ref DeploymentRef) (bool, error)
- func (a *CoolifyAdapter) ServiceComponents(ctx context.Context, ref DeploymentRef) ([]CoolifyApplicationComponent, error)
- func (a *CoolifyAdapter) Status(ctx context.Context, ref DeploymentRef) error
- func (a *CoolifyAdapter) UpdateCompose(ctx context.Context, ref DeploymentRef, manifest AppManifest) (DeploymentRef, error)
- func (a *CoolifyAdapter) UpsertCompose(ctx context.Context, manifest AppManifest) (DeploymentRef, error)
- func (a *CoolifyAdapter) ValidateApplicationControl(ctx context.Context, ref DeploymentRef, componentUUID, action string) error
- func (a *CoolifyAdapter) WaitReady(ctx context.Context) error
- type CoolifyApplicationComponent
- type CoolifyProject
- type DefaultSSHRunner
- type DegradedError
- type DemoDataManifest
- type DeploymentBatchObserver
- type DeploymentIdentityUncertainError
- type DeploymentObserver
- type DeploymentRef
- type DokployAdapter
- func (a *DokployAdapter) ApplyCompose(ctx context.Context, manifest AppManifest) (DeploymentRef, error)
- func (a *DokployAdapter) BootstrapCapabilities() []BootstrapCapability
- func (a *DokployAdapter) BootstrapProviderName() string
- func (a *DokployAdapter) Delete(ctx context.Context, ref DeploymentRef, deleteVolumes bool) error
- func (a *DokployAdapter) Deploy(ctx context.Context, ref DeploymentRef) error
- func (a *DokployAdapter) LatestProviderDeployment(ctx context.Context, ref DeploymentRef) (DokployProviderDeployment, error)
- func (a *DokployAdapter) RequireProviderCompose(ctx context.Context, ref DeploymentRef) (DokployProviderCompose, error)
- func (a *DokployAdapter) RequireProviderEnvironment(ctx context.Context, projectID string) error
- func (a *DokployAdapter) Status(ctx context.Context, ref DeploymentRef) error
- func (a *DokployAdapter) UpdateCompose(ctx context.Context, ref DeploymentRef, manifest AppManifest) (DeploymentRef, error)
- func (a *DokployAdapter) UpsertCompose(ctx context.Context, manifest AppManifest) (DeploymentRef, error)
- type DokployBootstrapConfig
- type DokployProviderCompose
- type DokployProviderDeployment
- type FallbackManifest
- type HTTPConfig
- type HostDeployment
- type HostManagerHandover
- type HostManagerPlanBinding
- type KomodoAdapter
- func (a *KomodoAdapter) ApplyCompose(ctx context.Context, manifest AppManifest) (DeploymentRef, error)
- func (a *KomodoAdapter) BootstrapCapabilities() []BootstrapCapability
- func (a *KomodoAdapter) BootstrapProviderName() string
- func (a *KomodoAdapter) ControlStack(ctx context.Context, ref DeploymentRef, action string, services []string) (KomodoStackControlResult, error)
- func (a *KomodoAdapter) CreateHostStackForHandover(ctx context.Context, project, directory, operation string) (DeploymentRef, error)
- func (a *KomodoAdapter) Deploy(ctx context.Context, ref DeploymentRef) (string, error)
- func (a *KomodoAdapter) DestroyProviderHostStack(ctx context.Context, ref DeploymentRef, directory string) error
- func (a *KomodoAdapter) FindHostStackForHandover(ctx context.Context, project, directory, operation string) (DeploymentRef, error)
- func (a *KomodoAdapter) HostStackAttachment(ctx context.Context, ref DeploymentRef, directory string) (string, error)
- func (a *KomodoAdapter) HostStackHandoverAttachment(ctx context.Context, ref DeploymentRef, directory, operation string) (string, error)
- func (a *KomodoAdapter) HostStackNameAvailable(ctx context.Context, project string) error
- func (a *KomodoAdapter) ObserveDeployment(ctx context.Context, ref DeploymentRef) (DeploymentRef, error)
- func (a *KomodoAdapter) ReadStackLogs(ctx context.Context, ref DeploymentRef, services []string, tail int) ([]byte, error)
- func (a *KomodoAdapter) RequireAbsentProviderStack(ctx context.Context, project string) error
- func (a *KomodoAdapter) RequireProviderHostStack(ctx context.Context, ref DeploymentRef, directory string) error
- func (a *KomodoAdapter) RequireProviderHostStackDown(ctx context.Context, ref DeploymentRef, directory string) error
- func (a *KomodoAdapter) RequireProviderStackIDAbsent(ctx context.Context, id string) error
- func (a *KomodoAdapter) RequireUnattachedHandoverTarget(ctx context.Context, project, directory, operation, externalID string) error
- func (a *KomodoAdapter) SetHostStackAttachment(ctx context.Context, ref DeploymentRef, directory string, attached bool) error
- func (a *KomodoAdapter) Status(ctx context.Context, ref DeploymentRef) error
- func (a *KomodoAdapter) UpsertStack(ctx context.Context, manifest AppManifest) (DeploymentRef, error)
- type KomodoStackControlResult
- type LocalComposeAdapter
- type LocalComposeOption
- type NodeBootstrap
- type NodePlatformTarget
- type NodePrepareResult
- type ReadinessChecker
- type RuntipiAdapter
- func (a *RuntipiAdapter) ActivateCompose(ctx context.Context, ref DeploymentRef, manifest AppManifest) (RuntipiBackupObservation, error)
- func (a *RuntipiAdapter) App(ctx context.Context, ref DeploymentRef) (RuntipiAppObservation, error)
- func (a *RuntipiAdapter) ApplyCompose(ctx context.Context, manifest AppManifest) (DeploymentRef, error)
- func (a *RuntipiAdapter) ComposeMatches(ctx context.Context, ref DeploymentRef, manifest AppManifest) (bool, error)
- func (a *RuntipiAdapter) Control(ctx context.Context, ref DeploymentRef, action string) error
- func (a *RuntipiAdapter) Install(ctx context.Context, ref DeploymentRef, localSubdomain string) error
- func (a *RuntipiAdapter) Login(ctx context.Context, username, password string) error
- func (a *RuntipiAdapter) ObserveDeployment(ctx context.Context, ref DeploymentRef) (DeploymentRef, error)
- func (a *RuntipiAdapter) OpenTerminalGroup(ctx context.Context, urn, group string, intent RuntipiTerminalIntent) error
- func (a *RuntipiAdapter) Register(ctx context.Context, username, password string) error
- func (a *RuntipiAdapter) SubmitTerminalOperation(ctx context.Context, urn, group, id string, body RuntipiTerminalSubmission) (RuntipiTerminalOperation, error)
- func (a *RuntipiAdapter) TerminalCapability(ctx context.Context, q RuntipiTerminalQualification) (RuntipiTerminalCapability, error)
- func (a *RuntipiAdapter) TerminalOperation(ctx context.Context, urn, group, id string) (RuntipiTerminalOperation, error)
- func (a *RuntipiAdapter) Uninstall(ctx context.Context, ref DeploymentRef, removeBackups bool) error
- func (a *RuntipiAdapter) UpdateCompose(ctx context.Context, ref DeploymentRef, manifest AppManifest) error
- func (a *RuntipiAdapter) UserContext(ctx context.Context) (RuntipiUserContext, error)
- func (a *RuntipiAdapter) WaitForAppStatus(ctx context.Context, ref DeploymentRef, expected ...string) (RuntipiAppObservation, error)
- type RuntipiAppObservation
- type RuntipiBackupObservation
- type RuntipiTerminalCapability
- type RuntipiTerminalIntent
- type RuntipiTerminalOperation
- type RuntipiTerminalOutcome
- type RuntipiTerminalQualification
- type RuntipiTerminalSubmission
- type RuntipiUserContext
- type SSHBootstrap
- type SSHRunner
- type SetupDropManifest
- type SetupPoliciesManifest
- type SupplementalNodeTarget
- type SystemAppManifest
Constants ¶
const ( // AppManagementManaged means StackKit observed a PaaS deployment identity. AppManagementManaged = "managed" // AppManagementHandoff means StackKit recorded customer app handoff metadata only. AppManagementHandoff = "handoff" // AppManagementUnmanaged means StackKit has manifest metadata but no PaaS identity. AppManagementUnmanaged = "unmanaged" // AppManagementFallback means StackKit deployed the app through the explicit // standalone Compose fallback instead of a PaaS adapter. AppManagementFallback = "fallback" // AppOwnershipStackKit means StackKit owns the app lifecycle and must // prefer delivery through the selected PaaS adapter when configured. AppOwnershipStackKit = "stackkit" // AppOwnershipCustomer means StackKit records handoff metadata only; the // selected PaaS/Admin product owns deployment and lifecycle. AppOwnershipCustomer = "customer" // SetupPolicyManual keeps first-run setup in the application UI. SetupPolicyManual = "manual" // SetupPolicyOnDemand allows StackKit to run setup drops only after an explicit request. SetupPolicyOnDemand = "on_demand" // SetupPolicyAutomatic allows StackKit to run setup drops during rollout. SetupPolicyAutomatic = "automatic" )
const RuntipiTerminalAPI = "runtipi.app-control/v1"
PROVISIONAL: this is the private native terminal capability, NOT stock Runtipi 4.10.2. Expected source/image/principal originate in retained node qualification; this package supplies no catalog default or credential store.
Variables ¶
var ErrNativeKomodoCustodyBinding = errors.New("native Komodo custody differs from the owner node")
var ErrRuntipiTerminalFailed = errors.New("Runtipi terminal negative result is not actuation success")
var ErrRuntipiTerminalUnresolved = errors.New("original Runtipi operation is unresolved; inspect it without redispatch")
Functions ¶
func CoolifyProviderRecipeDigest ¶ added in v0.54.10
CoolifyProviderRecipeDigest binds the complete recipe, including its labels, without retaining upstream contents in signed public deployment custody.
func GenerateKomodoStackResource ¶
func GenerateKomodoStackResource(manifest AppManifest) ([]byte, error)
GenerateKomodoStackResource creates the bounded PoC artifact for Komodo Resource Sync. It intentionally does not make Komodo the default adapter.
func HasOwnerHostDeployment ¶ added in v0.53.1
HasOwnerHostDeployment distinguishes absent native custody from invalid custody. Only the former may use a historical deployment-state projection.
func HostDeploymentManager ¶ added in v0.53.4
func HostDeploymentManager(state HostDeployment) string
func IsDegraded ¶
func IsStackKitOwnedApp ¶
func IsStackKitOwnedApp(app AppManifest) bool
IsStackKitOwnedApp reports whether this L3 app belongs to the StackKit-owned product surface. If no PaaS adapter is configured, callers may record it as unmanaged state rather than deploying it.
func RemoveOwnerHostDeployment ¶
func RemoveOwnerHostDeployment(workspace, project string, expected HostDeployment) error
RemoveOwnerHostDeployment retires the exact signed record a completed workload removal read; a changed or replaced record is never removed.
func RequireComposeWorkloadOwner ¶ added in v0.53.4
RequireComposeWorkloadOwner guards every direct Compose mutation, including service control under a retained plan. A platform claim is authoritative even when that older plan still selects Compose; malformed custody never falls back.
func RequireHostDeploymentManager ¶ added in v0.53.4
func RequireHostDeploymentManager(state HostDeployment, manager string) error
func SaveOwnerHostDeployment ¶ added in v0.53.1
func SaveOwnerHostDeployment(workspace, project string, state HostDeployment) error
func ValidateBootstrapEvidence ¶
func ValidateBootstrapEvidence(platform string, evidence BootstrapEvidence) error
func ValidateRuntipiTerminalIntent ¶ added in v0.54.10
func ValidateRuntipiTerminalIntent(i RuntipiTerminalIntent) error
func ValidateRuntipiTerminalQualification ¶ added in v0.54.10
func ValidateRuntipiTerminalQualification(q RuntipiTerminalQualification) error
func ValidateRuntipiTerminalResult ¶ added in v0.54.10
func ValidateRuntipiTerminalResult(out RuntipiTerminalOperation, q RuntipiTerminalQualification, urn, group, id string, appID int, body RuntipiTerminalSubmission) (bool, error)
Types ¶
type Adapter ¶
type Adapter interface {
ApplyCompose(ctx context.Context, manifest AppManifest) (DeploymentRef, error)
}
Adapter is implemented by concrete platform API clients.
type AppManifest ¶
type AppManifest struct {
ServiceKey string `json:"serviceKey,omitempty"`
Name string `json:"name"`
Kind string `json:"kind,omitempty"`
Ownership string `json:"ownership,omitempty"`
Platform string `json:"platform"`
ManagedBy string `json:"managedBy"`
Image string `json:"image,omitempty"`
Port int `json:"port,omitempty"`
Host string `json:"host,omitempty"`
URL string `json:"url,omitempty"`
RouteURL string `json:"routeUrl,omitempty"`
Auth string `json:"auth,omitempty"`
HealthPath string `json:"healthPath,omitempty"`
ComposePath string `json:"composePath"`
ComposeYAML string `json:"composeYAML,omitempty"`
// HostDirectory selects Komodo's files-on-host mode for an already
// prepared, owner-private project. ComposePath is relative to this directory;
// the API mutation contains no environment or secret-file contents.
HostDirectory string `json:"hostDirectory,omitempty"`
IgnoredServices []string `json:"ignoredServices,omitempty"`
Env map[string]string `json:"env,omitempty"`
Secrets map[string]string `json:"secrets,omitempty"`
SetupPolicy string `json:"setupPolicy,omitempty"`
SetupDrops []SetupDropManifest `json:"setupDrops,omitempty"`
}
AppManifest describes one generated compose bundle for PaaS delivery or customer-app handoff.
func (*AppManifest) UnmarshalJSON ¶
func (m *AppManifest) UnmarshalJSON(data []byte) error
UnmarshalJSON accepts Terraform jsonencode output where object type coercion can stringify numeric ports inside mixed concat(...) app manifest lists.
type BootstrapCapability ¶
type BootstrapCapability string
const ( BootstrapCapabilityProxyRouting BootstrapCapability = "proxy-routing" BootstrapCapabilityAPIAccess BootstrapCapability = "api-access" BootstrapCapabilityTeamManagement BootstrapCapability = "team-management" BootstrapCapabilityBackups BootstrapCapability = "backups" BootstrapCapabilitySecrets BootstrapCapability = "secrets" BootstrapCapabilityHealthchecks BootstrapCapability = "healthchecks" BootstrapCapabilityServiceHandoff BootstrapCapability = "service-handoff" )
type BootstrapCapabilityEvidence ¶
type BootstrapCapabilityEvidence struct {
Capability BootstrapCapability `json:"capability"`
Status string `json:"status"`
Evidence []string `json:"evidence,omitempty"`
ReasonCode string `json:"reasonCode,omitempty"`
Guidance string `json:"guidance,omitempty"`
}
type BootstrapCapabilityProvider ¶
type BootstrapCapabilityProvider interface {
BootstrapProviderName() string
BootstrapCapabilities() []BootstrapCapability
}
BootstrapCapabilityProvider declares the platform-specific first-run areas the adapter must harden before it can be treated as beta-supported.
type BootstrapEvidence ¶
type BootstrapEvidence struct {
Provider string `json:"provider,omitempty"`
Mode string `json:"mode,omitempty"`
Capabilities []BootstrapCapabilityEvidence `json:"capabilities,omitempty"`
}
BootstrapEvidence is written by generated platform bootstraps to make the selected PaaS setup auditable by release gates and scenario evidence.
type BootstrapManifest ¶
type BootstrapManifest struct {
Mode string `json:"mode,omitempty"`
DemoData DemoDataManifest `json:"demoData,omitempty"`
SetupPolicies SetupPoliciesManifest `json:"setupPolicies,omitempty"`
}
BootstrapManifest records the generated first-run setup contract for the selected platform and StackKit-owned default apps.
type BundleManifest ¶
type BundleManifest struct {
Version string `json:"version"`
Platform string `json:"platform"`
Fallback FallbackManifest `json:"fallback,omitempty"`
Bootstrap BootstrapManifest `json:"bootstrap,omitempty"`
SystemApps []SystemAppManifest `json:"systemApps,omitempty"`
Apps []AppManifest `json:"apps"`
}
BundleManifest is the generated handoff from StackKit generation to the selected PaaS.
func LoadBundleManifest ¶
func LoadBundleManifest(path string) (BundleManifest, error)
func StandaloneFallbackBundle ¶
func StandaloneFallbackBundle(bundle BundleManifest, failures []ComponentFailure) BundleManifest
StandaloneFallbackBundle selects only components that have no committed platform identity. It is safe to execute after a preferred adapter failed.
type BundleResult ¶
type BundleResult struct {
Refs []DeploymentRef `json:"refs,omitempty" yaml:"refs,omitempty"`
Failures []ComponentFailure `json:"failures,omitempty" yaml:"failures,omitempty"`
}
BundleResult preserves every successful deployment reference alongside application-scoped failures. Callers can finish the independent graph, persist a degraded state, and retry only components that still need work.
func ApplyBundleResilient ¶
func ApplyBundleResilient(ctx context.Context, adapter Adapter, bundle BundleManifest) (BundleResult, error)
ApplyBundleResilient executes every independent StackKit-owned application and preserves partial success. Adapter/application failures become component results; cancellation remains a fatal orchestration boundary.
func (BundleResult) Degraded ¶
func (r BundleResult) Degraded() bool
type ComponentFailure ¶
type ComponentFailure struct {
AppName string `json:"appName" yaml:"appName"`
Platform string `json:"platform" yaml:"platform"`
Stage string `json:"stage" yaml:"stage"`
Message string `json:"message" yaml:"message"`
IdentityCommitted bool `json:"identityCommitted" yaml:"identityCommitted"`
Retryable bool `json:"retryable" yaml:"retryable"`
}
ComponentFailure records one application-scoped rollout failure. A failure with IdentityCommitted=false may be retried through another registered adapter without risking two platform-owned deployment identities.
type CoolifyAdapter ¶
type CoolifyAdapter struct {
// contains filtered or unexported fields
}
CoolifyAdapter deploys generated compose bundles through Coolify's API. Coolify authenticates with bearer tokens.
func NewCoolifyAdapter ¶
func NewCoolifyAdapter(cfg HTTPConfig) *CoolifyAdapter
func (*CoolifyAdapter) ApplicationComponents ¶ added in v0.53.8
func (a *CoolifyAdapter) ApplicationComponents(ctx context.Context, ref DeploymentRef) ([]CoolifyApplicationComponent, error)
func (*CoolifyAdapter) ApplyCompose ¶
func (a *CoolifyAdapter) ApplyCompose(ctx context.Context, manifest AppManifest) (DeploymentRef, error)
func (*CoolifyAdapter) BootstrapCapabilities ¶
func (a *CoolifyAdapter) BootstrapCapabilities() []BootstrapCapability
func (*CoolifyAdapter) BootstrapProviderName ¶
func (a *CoolifyAdapter) BootstrapProviderName() string
func (*CoolifyAdapter) ControlApplication ¶ added in v0.53.8
func (a *CoolifyAdapter) ControlApplication(ctx context.Context, ref DeploymentRef, componentUUID, action string) error
ControlApplication uses the manager's component controls. Stop retains the container, and Start does not request forced recreation or an image update.
func (*CoolifyAdapter) ControlServiceComponent ¶ added in v0.54.10
func (a *CoolifyAdapter) ControlServiceComponent(ctx context.Context, ref DeploymentRef, componentUUID, action string) error
ControlServiceComponent stops or starts one component of the retained service through the manager. Coolify lists database containers (for example Immich's postgres) under the service's databases, not its applications, so the control path follows the component's actual kind.
func (*CoolifyAdapter) CreateProject ¶ added in v0.53.8
func (*CoolifyAdapter) Delete ¶
func (a *CoolifyAdapter) Delete(ctx context.Context, ref DeploymentRef) error
func (*CoolifyAdapter) DeleteServiceKeepingData ¶
func (a *CoolifyAdapter) DeleteServiceKeepingData(ctx context.Context, ref DeploymentRef) error
DeleteServiceKeepingData deletes one service and its stored configuration. Coolify keeps its volumes, networks and unrelated Docker resources; the caller owns the data disposition of the volumes it created.
func (*CoolifyAdapter) Deploy ¶
func (a *CoolifyAdapter) Deploy(ctx context.Context, ref DeploymentRef) (string, error)
func (*CoolifyAdapter) ObserveDeployment ¶
func (a *CoolifyAdapter) ObserveDeployment(ctx context.Context, ref DeploymentRef) (DeploymentRef, error)
func (*CoolifyAdapter) ObserveDeployments ¶
func (a *CoolifyAdapter) ObserveDeployments(ctx context.Context, refs []DeploymentRef) ([]DeploymentRef, error)
func (*CoolifyAdapter) ProjectHasServices ¶ added in v0.53.8
ProjectHasServices resolves only a retained project identity. It detects uncertain service creation before another mutation can duplicate a workload.
func (*CoolifyAdapter) Projects ¶ added in v0.53.8
func (a *CoolifyAdapter) Projects(ctx context.Context) ([]CoolifyProject, error)
func (*CoolifyAdapter) Redeploy ¶ added in v0.53.8
func (a *CoolifyAdapter) Redeploy(ctx context.Context, ref DeploymentRef) (string, error)
Redeploy updates an established service without issuing Start to a running service.
func (*CoolifyAdapter) RequireProviderService ¶ added in v0.54.10
func (a *CoolifyAdapter) RequireProviderService(ctx context.Context, ref DeploymentRef, heldRecipeDigest string, expectedRecipes ...string) error
RequireProviderService checks the held ID independently before provider refresh/import. Its name alone never authorizes adoption or replacement.
func (*CoolifyAdapter) ServiceAbsent ¶
func (a *CoolifyAdapter) ServiceAbsent(ctx context.Context, ref DeploymentRef) (bool, error)
ServiceAbsent is true only when the exact service id positively returns 404; transport or authorization failures never read as absence.
func (*CoolifyAdapter) ServiceComponents ¶ added in v0.53.13
func (a *CoolifyAdapter) ServiceComponents(ctx context.Context, ref DeploymentRef) ([]CoolifyApplicationComponent, error)
ServiceComponents includes database components for an existing signed curated graph. Store-only filesystem admission belongs to its own selector.
func (*CoolifyAdapter) Status ¶
func (a *CoolifyAdapter) Status(ctx context.Context, ref DeploymentRef) error
func (*CoolifyAdapter) UpdateCompose ¶ added in v0.53.8
func (a *CoolifyAdapter) UpdateCompose(ctx context.Context, ref DeploymentRef, manifest AppManifest) (DeploymentRef, error)
UpdateCompose repairs an existing service through its retained deployment reference. Placement belongs to creation; the service PATCH contract rejects project, environment and server fields and must not create another identity.
func (*CoolifyAdapter) UpsertCompose ¶
func (a *CoolifyAdapter) UpsertCompose(ctx context.Context, manifest AppManifest) (DeploymentRef, error)
func (*CoolifyAdapter) ValidateApplicationControl ¶ added in v0.53.13
func (a *CoolifyAdapter) ValidateApplicationControl(ctx context.Context, ref DeploymentRef, componentUUID, action string) error
ValidateApplicationControl is shared by API control and the node-private completion-bound transport. Neither may act on another service's component.
type CoolifyApplicationComponent ¶ added in v0.53.8
type CoolifyApplicationComponent struct {
UUID string `json:"uuid"`
Name string `json:"name"`
Status string `json:"status"`
}
CoolifyApplicationComponent is a component inside one retained service.
func SelectCoolifyServiceComponent ¶ added in v0.53.13
func SelectCoolifyServiceComponent(components []CoolifyApplicationComponent, name string) (CoolifyApplicationComponent, error)
type CoolifyProject ¶ added in v0.53.8
type DefaultSSHRunner ¶
type DefaultSSHRunner struct{}
func (DefaultSSHRunner) Run ¶
func (DefaultSSHRunner) Run(ctx context.Context, target SSHBootstrap, script string) ([]byte, error)
type DegradedError ¶
type DegradedError struct {
Failures []ComponentFailure
}
DegradedError is a terminal, usable rollout result rather than a lost deployment. It deliberately carries component failures without discarding successful references.
func (*DegradedError) Error ¶
func (e *DegradedError) Error() string
type DemoDataManifest ¶
type DemoDataManifest struct {
Enabled bool `json:"enabled,omitempty"`
}
type DeploymentBatchObserver ¶
type DeploymentBatchObserver interface {
ObserveDeployments(ctx context.Context, refs []DeploymentRef) ([]DeploymentRef, error)
}
DeploymentBatchObserver is implemented by adapters that can observe several started deployments under one shared time budget.
type DeploymentIdentityUncertainError ¶ added in v0.54.1
type DeploymentIdentityUncertainError struct {
Err error
}
DeploymentIdentityUncertainError means a platform mutation may already own the workload. Reconcile it before retrying or selecting another manager.
func (*DeploymentIdentityUncertainError) Error ¶ added in v0.54.1
func (e *DeploymentIdentityUncertainError) Error() string
func (*DeploymentIdentityUncertainError) Unwrap ¶ added in v0.54.1
func (e *DeploymentIdentityUncertainError) Unwrap() error
type DeploymentObserver ¶
type DeploymentObserver interface {
ObserveDeployment(ctx context.Context, ref DeploymentRef) (DeploymentRef, error)
}
DeploymentObserver is implemented by adapters that can verify platform-side start state after the deploy API accepted a compose bundle.
type DeploymentRef ¶
type DeploymentRef struct {
Platform string `json:"platform" yaml:"platform"`
AppName string `json:"appName" yaml:"appName"`
ExternalID string `json:"externalId" yaml:"externalId"`
DeploymentID string `json:"deploymentId,omitempty" yaml:"deploymentId,omitempty"`
ObservedStatus string `json:"observedStatus,omitempty" yaml:"observedStatus,omitempty"`
ObservedAt time.Time `json:"observedAt,omitempty" yaml:"observedAt,omitempty"`
LastDeployed time.Time `json:"lastDeployed,omitempty" yaml:"lastDeployed,omitempty"`
ServiceNames []string `json:"-" yaml:"-"`
ComposeYAML string `json:"-" yaml:"-"`
ComposePath string `json:"-" yaml:"-"`
}
DeploymentRef records the external platform identity for a StackKit app.
func ApplyBundle ¶
func ApplyBundle(ctx context.Context, adapter Adapter, bundle BundleManifest) ([]DeploymentRef, error)
ApplyBundle applies StackKit-owned systemApps and StackKit-owned/default L3 apps through the supplied PaaS adapter. Customer-owned apps in Apps are handoff metadata and are intentionally not deployed by StackKit.
type DokployAdapter ¶
type DokployAdapter struct {
// contains filtered or unexported fields
}
DokployAdapter deploys generated compose bundles through Dokploy's Compose API. Dokploy authenticates with the x-api-key header.
func NewDokployAdapter ¶
func NewDokployAdapter(cfg HTTPConfig) *DokployAdapter
func (*DokployAdapter) ApplyCompose ¶
func (a *DokployAdapter) ApplyCompose(ctx context.Context, manifest AppManifest) (DeploymentRef, error)
func (*DokployAdapter) BootstrapCapabilities ¶
func (a *DokployAdapter) BootstrapCapabilities() []BootstrapCapability
func (*DokployAdapter) BootstrapProviderName ¶
func (a *DokployAdapter) BootstrapProviderName() string
func (*DokployAdapter) Delete ¶
func (a *DokployAdapter) Delete(ctx context.Context, ref DeploymentRef, deleteVolumes bool) error
func (*DokployAdapter) Deploy ¶
func (a *DokployAdapter) Deploy(ctx context.Context, ref DeploymentRef) error
func (*DokployAdapter) LatestProviderDeployment ¶ added in v0.54.10
func (a *DokployAdapter) LatestProviderDeployment(ctx context.Context, ref DeploymentRef) (DokployProviderDeployment, error)
LatestProviderDeployment deliberately fails closed. The provider's waiter tolerates an unavailable history endpoint and can accept an older done status, so independent acceptance must retain the actual successful run ID.
func (*DokployAdapter) RequireProviderCompose ¶ added in v0.54.10
func (a *DokployAdapter) RequireProviderCompose(ctx context.Context, ref DeploymentRef) (DokployProviderCompose, error)
RequireProviderCompose is read-only. It never creates, adopts by name, deploys or removes a service. The existing adapter remains the API owner.
func (*DokployAdapter) RequireProviderEnvironment ¶ added in v0.54.10
func (a *DokployAdapter) RequireProviderEnvironment(ctx context.Context, projectID string) error
RequireProviderEnvironment authenticates the bootstrap key and checks the exact parent relationship before importing any workload. Names never select a project or environment. An empty serverId means Dokploy's own host.
func (*DokployAdapter) Status ¶
func (a *DokployAdapter) Status(ctx context.Context, ref DeploymentRef) error
Status validates placement and the last recorded deployment state only. A newly queued Deploy can retain a previous done state until its worker starts; nil does not certify the latest queued apply, application health or data access.
func (*DokployAdapter) UpdateCompose ¶ added in v0.54.1
func (a *DokployAdapter) UpdateCompose(ctx context.Context, ref DeploymentRef, manifest AppManifest) (DeploymentRef, error)
UpdateCompose changes only an explicitly recorded deployment. A matching display name or a create conflict never authorizes adopting another service.
func (*DokployAdapter) UpsertCompose ¶
func (a *DokployAdapter) UpsertCompose(ctx context.Context, manifest AppManifest) (DeploymentRef, error)
UpsertCompose retains the historical entry point for a new deployment. Reconciliation of an existing deployment must use UpdateCompose with custody's composeId: Dokploy randomizes appName, so repeated creation is not an upsert.
type DokployBootstrapConfig ¶ added in v0.54.10
type DokployBootstrapConfig struct {
Platform string `json:"platform"`
Endpoint string `json:"endpoint,omitempty"`
BaseURL string `json:"baseUrl,omitempty"`
Token string `json:"token,omitempty"`
APIKey string `json:"apiKey,omitempty"`
ProjectID string `json:"projectId"`
EnvironmentID string `json:"environmentId"`
ServerID string `json:"serverId,omitempty"`
}
DokployBootstrapConfig is the existing qpb.6 bootstrap's private output. It carries no invented server identifier: empty ServerID means the local Dokploy host, as in the upstream API and provider.
func LoadOwnerDokployBootstrapConfig ¶ added in v0.54.10
func LoadOwnerDokployBootstrapConfig(workspace string) (DokployBootstrapConfig, error)
LoadOwnerDokployBootstrapConfig reads only the legacy bootstrap authority, never environment variables, a supplied key, a generated file or another platform's configuration. Reading it does not declare bootstrap readiness.
func (DokployBootstrapConfig) HTTPConfig ¶ added in v0.54.10
func (c DokployBootstrapConfig) HTTPConfig() (HTTPConfig, error)
type DokployProviderCompose ¶ added in v0.54.10
type DokployProviderCompose struct {
ComposeID string `json:"composeId"`
Name string `json:"name"`
AppName string `json:"appName"`
EnvironmentID string `json:"environmentId"`
ServerID string `json:"serverId"`
Status string `json:"composeStatus"`
ComposeType string `json:"composeType"`
SourceType string `json:"sourceType"`
ComposeFile string `json:"composeFile"`
Description string `json:"description"`
Env string `json:"env"`
Command string `json:"command"`
AutoDeploy bool `json:"autoDeploy"`
Randomize bool `json:"randomize"`
IsolatedDeployment bool `json:"isolatedDeployment"`
IsolatedDeploymentsVolume bool `json:"isolatedDeploymentsVolume"`
Domains []json.RawMessage `json:"domains"`
Mounts []json.RawMessage `json:"mounts"`
ServiceNetworks []json.RawMessage `json:"serviceNetworks"`
}
DokployProviderCompose retains the API's physical identity. AppName is the randomized Docker project name, not the display name in DeploymentRef.
type DokployProviderDeployment ¶ added in v0.54.10
type FallbackManifest ¶
type FallbackManifest struct {
Enabled bool `json:"enabled,omitempty"`
Mode string `json:"mode,omitempty"`
}
FallbackManifest records whether the generated bundle is intentionally targeting the standalone Compose fallback instead of a PaaS API.
type HTTPConfig ¶
type HTTPConfig struct {
BaseURL string
Token string
APIKey string
Secret string
Client *http.Client
// Optional platform-specific placement values. Dokploy needs EnvironmentID
// to create compose apps; Coolify usually needs project/server/environment or
// destination identifiers. Komodo uses ServerID to attach compose stacks.
EnvironmentID string
ServerID string
ProjectUUID string
EnvironmentUUID string
DestinationUUID string
LegacyDockerComposeAPI bool
DisableDockerRuntimeObserve bool
DockerEnv []string
WaitForReadiness bool
}
HTTPConfig configures HTTP-backed platform adapters.
func LoadOwnerKomodoConfig ¶
func LoadOwnerKomodoConfig(workspace string) (HTTPConfig, error)
LoadOwnerKomodoConfig reads the exact owner-custodied platform configuration through a held workspace root. It is intended for mutation boundaries that must not fall back to environment or generated configuration.
func LoadOwnerKomodoConfigForServer ¶ added in v0.53.9
func LoadOwnerKomodoConfigForServer(ctx context.Context, workspace, serverID string) (HTTPConfig, error)
LoadOwnerKomodoConfigForServer never reinterprets a retained workload as a claim on another Core. Native and retained-default credentials keep their existing custody owners; the recorded server selects the exact one.
func LoadOwnerNativeKomodoConfig ¶ added in v0.53.9
func LoadOwnerNativeKomodoConfig(ctx context.Context, workspace string) (HTTPConfig, error)
LoadOwnerNativeKomodoConfig consumes only the existing native bootstrap custody and its exact private Core container. It creates no credentials and does not replace the default controller used by retained workloads.
type HostDeployment ¶ added in v0.53.1
type HostDeployment struct {
APIVersion string `json:"apiVersion"`
WorkloadRef string `json:"workloadRef"`
InstanceRef string `json:"instanceRef"`
ArtifactDigest string `json:"artifactDigest"`
SiteRef string `json:"siteRef"`
NodeRef string `json:"nodeRef"`
ServerID string `json:"serverId"`
EnvironmentID string `json:"environmentId,omitempty"`
RuntimeProject string `json:"runtimeProject,omitempty"`
RecipeDigest string `json:"recipeDigest,omitempty"`
// ActivationSourceIDs witnesses the runtime before an asynchronous restart.
// It is present only while that exact Coolify activation is unsettled.
ActivationSourceIDs map[string]string `json:"activationSourceIds,omitempty"`
Deployment DeploymentRef `json:"deployment"`
Manager string `json:"manager,omitempty"`
Handover *HostManagerHandover `json:"handover,omitempty"`
PlanBinding *HostManagerPlanBinding `json:"planBinding,omitempty"`
Signature *localevidence.OwnerPolicyStateSignature `json:"signature,omitempty"`
}
HostDeployment is the node's custody of the platform identity for the same generated Compose project. It contains no credential or application data.
func LoadOwnerHostDeployment ¶ added in v0.53.1
func LoadOwnerHostDeployment(workspace, project string) (HostDeployment, error)
type HostManagerHandover ¶ added in v0.53.4
type HostManagerHandover struct {
AttachmentState string `json:"attachmentState,omitempty"`
SourceDetachState string `json:"sourceDetachState,omitempty"`
ID string `json:"id"`
From string `json:"from"`
To string `json:"to"`
Status string `json:"status"`
RecipeDigest string `json:"recipeDigest"`
RuntimeDigest string `json:"runtimeDigest"`
SourceServerID string `json:"sourceServerId,omitempty"`
SourceExternalID string `json:"sourceExternalId,omitempty"`
TargetServerID string `json:"targetServerId,omitempty"`
TargetExternalID string `json:"targetExternalId,omitempty"`
TargetPlanHash string `json:"targetPlanHash,omitempty"`
TargetCreateState string `json:"targetCreateState,omitempty"`
CoreProtocol string `json:"coreProtocol,omitempty"`
}
HostManagerHandover retains an interrupted transfer in the existing node custody. Neither manager may act until the exact transfer is completed.
type HostManagerPlanBinding ¶ added in v0.53.4
type HostManagerPlanBinding struct {
SourceDigest string `json:"sourceDigest,omitempty"`
VolumeNames map[string]string `json:"volumeNames,omitempty"`
PlanHash string `json:"planHash"`
ApplyResultHash string `json:"applyResultHash"`
ServiceContractHash string `json:"serviceContractHash"`
ServiceKey string `json:"serviceKey"`
RuntimeRef string `json:"runtimeRef"`
SourceAdapter string `json:"sourceAdapter"`
ArtifactDigest string `json:"artifactDigest"`
}
HostManagerPlanBinding authorizes control of the same applied workload after a manager transfer. It is signed as part of the existing node custody.
type KomodoAdapter ¶
type KomodoAdapter struct {
// contains filtered or unexported fields
}
KomodoAdapter deploys generated compose bundles through Komodo's Stack API. Komodo authenticates with x-api-key and x-api-secret headers.
func NewKomodoAdapter ¶
func NewKomodoAdapter(cfg HTTPConfig) *KomodoAdapter
func (*KomodoAdapter) ApplyCompose ¶
func (a *KomodoAdapter) ApplyCompose(ctx context.Context, manifest AppManifest) (DeploymentRef, error)
func (*KomodoAdapter) BootstrapCapabilities ¶
func (a *KomodoAdapter) BootstrapCapabilities() []BootstrapCapability
func (*KomodoAdapter) BootstrapProviderName ¶
func (a *KomodoAdapter) BootstrapProviderName() string
func (*KomodoAdapter) ControlStack ¶
func (a *KomodoAdapter) ControlStack(ctx context.Context, ref DeploymentRef, action string, services []string) (KomodoStackControlResult, error)
ControlStack dispatches one bounded service action through Komodo's Stack authority and waits for the returned update to complete.
func (*KomodoAdapter) CreateHostStackForHandover ¶ added in v0.53.9
func (a *KomodoAdapter) CreateHostStackForHandover(ctx context.Context, project, directory, operation string) (DeploymentRef, error)
CreateHostStackForHandover is attempted once after the source is detached. It configures an existing host recipe without executing or copying it. An uncertain response is recovered with FindHostStackForHandover, never another CreateStack or an implicit UpdateStack.
func (*KomodoAdapter) Deploy ¶
func (a *KomodoAdapter) Deploy(ctx context.Context, ref DeploymentRef) (string, error)
func (*KomodoAdapter) DestroyProviderHostStack ¶ added in v0.54.10
func (a *KomodoAdapter) DestroyProviderHostStack(ctx context.Context, ref DeploymentRef, directory string) error
DestroyProviderHostStack removes containers through the same Komodo API. Komodo v2.3.3 DestroyStack invokes compose down without --volumes. It has no volume deletion option. Provider DeleteStack then removes the configuration.
func (*KomodoAdapter) FindHostStackForHandover ¶ added in v0.53.9
func (a *KomodoAdapter) FindHostStackForHandover(ctx context.Context, project, directory, operation string) (DeploymentRef, error)
FindHostStackForHandover is read-only recovery of the exact private recipe after a journaled creation. It does not create, update, deploy or delete.
func (*KomodoAdapter) HostStackAttachment ¶ added in v0.53.4
func (a *KomodoAdapter) HostStackAttachment(ctx context.Context, ref DeploymentRef, directory string) (string, error)
func (*KomodoAdapter) HostStackHandoverAttachment ¶ added in v0.53.9
func (a *KomodoAdapter) HostStackHandoverAttachment(ctx context.Context, ref DeploymentRef, directory, operation string) (string, error)
func (*KomodoAdapter) HostStackNameAvailable ¶ added in v0.53.9
func (a *KomodoAdapter) HostStackNameAvailable(ctx context.Context, project string) error
HostStackNameAvailable observes the target Core before a signed transfer starts. A pre-existing resource cannot be adopted by a new handover.
func (*KomodoAdapter) ObserveDeployment ¶
func (a *KomodoAdapter) ObserveDeployment(ctx context.Context, ref DeploymentRef) (DeploymentRef, error)
func (*KomodoAdapter) ReadStackLogs ¶
func (a *KomodoAdapter) ReadStackLogs(ctx context.Context, ref DeploymentRef, services []string, tail int) ([]byte, error)
ReadStackLogs retrieves one bounded, non-following log tail. Redaction and durable evidence remain the caller's owner-bound responsibility.
func (*KomodoAdapter) RequireAbsentProviderStack ¶ added in v0.54.10
func (a *KomodoAdapter) RequireAbsentProviderStack(ctx context.Context, project string) error
RequireAbsentProviderStack is read-only. New provider ownership never adopts a pre-existing name. Even a secret-bearing stack response stays in memory.
func (*KomodoAdapter) RequireProviderHostStack ¶ added in v0.54.10
func (a *KomodoAdapter) RequireProviderHostStack(ctx context.Context, ref DeploymentRef, directory string) error
RequireProviderHostStack checks the ID independently of provider Read, which in v0.12.0 can adopt a replacement by name. It also refuses remote material that the provider would otherwise copy into state on refresh or import.
func (*KomodoAdapter) RequireProviderHostStackDown ¶ added in v0.54.10
func (a *KomodoAdapter) RequireProviderHostStackDown(ctx context.Context, ref DeploymentRef, directory string) error
RequireProviderHostStackDown is read-only and shares the existing API client. A signed old completion cannot authorize deleting a restarted configuration.
func (*KomodoAdapter) RequireProviderStackIDAbsent ¶ added in v0.54.10
func (a *KomodoAdapter) RequireProviderStackIDAbsent(ctx context.Context, id string) error
RequireProviderStackIDAbsent admits a replacement only after a successful exact-ID request positively returns 404. Transport/authorization failures and name lookups never establish absence.
func (*KomodoAdapter) RequireUnattachedHandoverTarget ¶ added in v0.53.9
func (a *KomodoAdapter) RequireUnattachedHandoverTarget(ctx context.Context, project, directory, operation, externalID string) error
RequireUnattachedHandoverTarget proves absence, or the exact operation's detached resource, before source restoration. Full resources cover aliases that refer to the same physical project under a different resource name.
func (*KomodoAdapter) SetHostStackAttachment ¶ added in v0.53.4
func (a *KomodoAdapter) SetHostStackAttachment(ctx context.Context, ref DeploymentRef, directory string, attached bool) error
SetHostStackAttachment changes only the server attachment of an existing exact host project. Komodo 2.3.3 UpdateStack does not execute Compose; unlike DeleteStack this retains the running project and its API identity.
func (*KomodoAdapter) Status ¶
func (a *KomodoAdapter) Status(ctx context.Context, ref DeploymentRef) error
func (*KomodoAdapter) UpsertStack ¶
func (a *KomodoAdapter) UpsertStack(ctx context.Context, manifest AppManifest) (DeploymentRef, error)
type LocalComposeAdapter ¶
type LocalComposeAdapter struct {
// contains filtered or unexported fields
}
LocalComposeAdapter deploys generated compose bundles directly on the node.
func NewLocalComposeAdapter ¶
func NewLocalComposeAdapter(workDir string, opts ...LocalComposeOption) *LocalComposeAdapter
NewLocalComposeAdapter returns an adapter for local, no-PaaS compose rollout.
func (*LocalComposeAdapter) ApplyCompose ¶
func (a *LocalComposeAdapter) ApplyCompose(ctx context.Context, manifest AppManifest) (DeploymentRef, error)
ApplyCompose runs docker compose up for one generated compose bundle.
func (*LocalComposeAdapter) ObserveDeployment ¶
func (a *LocalComposeAdapter) ObserveDeployment(ctx context.Context, ref DeploymentRef) (DeploymentRef, error)
ObserveDeployment verifies the generated Compose project instead of treating a successful `up -d` process exit as runtime evidence.
type LocalComposeOption ¶
type LocalComposeOption func(*LocalComposeAdapter)
LocalComposeOption configures the local Docker Compose adapter.
func WithLocalComposeEnv ¶
func WithLocalComposeEnv(env []string) LocalComposeOption
WithLocalComposeEnv binds Compose to the same target transport used by the resolved runtime (for example a remote DOCKER_HOST from an enrolled agent).
func WithLocalComposeRunner ¶
func WithLocalComposeRunner(runner localComposeRunner) LocalComposeOption
WithLocalComposeRunner injects the command runner used by tests.
type NodeBootstrap ¶
type NodeBootstrap struct {
KomodoCoreAddress string
KomodoOnboardingKey string
SSH *SSHBootstrap
}
type NodePlatformTarget ¶
type NodePrepareResult ¶
type NodePrepareResult struct {
NodeName string
Role string
Platform string
Status string
Detail string
Services []string
ServerID string
DestinationUUID string
EnvironmentID string
ProjectUUID string
EnvironmentUUID string
PrivateKeyUUID string
}
func PrepareSupplementalNodeTargets ¶
func PrepareSupplementalNodeTargets(ctx context.Context, platform string, nodes []SupplementalNodeTarget, cfg HTTPConfig, runner SSHRunner) ([]NodePrepareResult, error)
type ReadinessChecker ¶
ReadinessChecker is implemented by adapters whose API can be installed but not yet ready immediately after platform bootstrap.
type RuntipiAdapter ¶ added in v0.54.4
type RuntipiAdapter struct {
// contains filtered or unexported fields
}
RuntipiAdapter uses the upstream v4 custom-app and app-lifecycle APIs. The caller supplies credentials from the installed node, never a hosted account. Creating the adapter does not install Runtipi or claim runtime compatibility.
func NewRuntipiAdapter ¶ added in v0.54.4
func NewRuntipiAdapter(cfg HTTPConfig) *RuntipiAdapter
func (*RuntipiAdapter) ActivateCompose ¶ added in v0.54.10
func (a *RuntipiAdapter) ActivateCompose(ctx context.Context, ref DeploymentRef, manifest AppManifest) (RuntipiBackupObservation, error)
ActivateCompose follows the retained pin's custom-app edit/start path, never its app-store update command. The caller retains pending intent until its own running-image/configuration/data observations pass. The upstream archive covers Runtipi's app directories, not node-owned external Docker volumes; those keep the existing Kopia custody and restore obligations.
func (*RuntipiAdapter) App ¶ added in v0.54.4
func (a *RuntipiAdapter) App(ctx context.Context, ref DeploymentRef) (RuntipiAppObservation, error)
func (*RuntipiAdapter) ApplyCompose ¶ added in v0.54.4
func (a *RuntipiAdapter) ApplyCompose(ctx context.Context, manifest AppManifest) (DeploymentRef, error)
ApplyCompose creates one custom app. It deliberately refuses an existing name: updating an installed app requires the retained DeploymentRef via UpdateCompose.
func (*RuntipiAdapter) ComposeMatches ¶ added in v0.54.10
func (a *RuntipiAdapter) ComposeMatches(ctx context.Context, ref DeploymentRef, manifest AppManifest) (bool, error)
ComposeMatches reads the installed editable recipe, not an app-store source and not DeploymentRef.ComposeYAML, which is deliberately absent from custody JSON. This also detects recipe-format changes at an unchanged artifact pin.
func (*RuntipiAdapter) Control ¶ added in v0.54.4
func (a *RuntipiAdapter) Control(ctx context.Context, ref DeploymentRef, action string) error
Control submits one upstream lifecycle operation. The caller must persist app identity before install; a successful queue submission is not readiness.
func (*RuntipiAdapter) Install ¶ added in v0.54.4
func (a *RuntipiAdapter) Install(ctx context.Context, ref DeploymentRef, localSubdomain string) error
Install keeps ports and public exposure closed. A local subdomain asks the upstream router to own local ingress; an empty subdomain preserves the compiler-bound Kit router labels without creating a competing route.
func (*RuntipiAdapter) Login ¶ added in v0.54.4
func (a *RuntipiAdapter) Login(ctx context.Context, username, password string) error
func (*RuntipiAdapter) ObserveDeployment ¶ added in v0.54.4
func (a *RuntipiAdapter) ObserveDeployment(ctx context.Context, ref DeploymentRef) (DeploymentRef, error)
func (*RuntipiAdapter) OpenTerminalGroup ¶ added in v0.54.10
func (a *RuntipiAdapter) OpenTerminalGroup(ctx context.Context, urn, group string, intent RuntipiTerminalIntent) error
func (*RuntipiAdapter) Register ¶ added in v0.54.4
func (a *RuntipiAdapter) Register(ctx context.Context, username, password string) error
Register creates the upstream's sole operator. A registration failure is not retried as account creation; the installation owner reconciles by logging in with the retained node credential before deciding whether registration is new.
func (*RuntipiAdapter) SubmitTerminalOperation ¶ added in v0.54.10
func (a *RuntipiAdapter) SubmitTerminalOperation(ctx context.Context, urn, group, id string, body RuntipiTerminalSubmission) (RuntipiTerminalOperation, error)
func (*RuntipiAdapter) TerminalCapability ¶ added in v0.54.10
func (a *RuntipiAdapter) TerminalCapability(ctx context.Context, q RuntipiTerminalQualification) (RuntipiTerminalCapability, error)
func (*RuntipiAdapter) TerminalOperation ¶ added in v0.54.10
func (a *RuntipiAdapter) TerminalOperation(ctx context.Context, urn, group, id string) (RuntipiTerminalOperation, error)
func (*RuntipiAdapter) Uninstall ¶ added in v0.54.4
func (a *RuntipiAdapter) Uninstall(ctx context.Context, ref DeploymentRef, removeBackups bool) error
Uninstall retains upstream backups unless the installed lifecycle explicitly authorizes their deletion. Node-owned external volumes retain their custody.
func (*RuntipiAdapter) UpdateCompose ¶ added in v0.54.4
func (a *RuntipiAdapter) UpdateCompose(ctx context.Context, ref DeploymentRef, manifest AppManifest) error
func (*RuntipiAdapter) UserContext ¶ added in v0.54.4
func (a *RuntipiAdapter) UserContext(ctx context.Context) (RuntipiUserContext, error)
func (*RuntipiAdapter) WaitForAppStatus ¶ added in v0.54.10
func (a *RuntipiAdapter) WaitForAppStatus(ctx context.Context, ref DeploymentRef, expected ...string) (RuntipiAppObservation, error)
WaitForAppStatus observes the asynchronous v4 lifecycle without resubmitting commands. A terminal status establishes no application health, image, data or update-success claim; those remain the node workload observer's responsibility.
type RuntipiAppObservation ¶ added in v0.54.4
type RuntipiAppObservation struct {
Info struct {
URN string `json:"urn"`
} `json:"info"`
App *struct {
Status string `json:"status"`
} `json:"app"`
Metadata struct {
HasCustomConfig *bool `json:"hasCustomConfig"`
} `json:"metadata"`
}
RuntipiAppObservation is platform readback, not a substitute for the node's image, application-readiness and persistent-data observations.
func (RuntipiAppObservation) Status ¶ added in v0.54.10
func (o RuntipiAppObservation) Status() string
Status uses only this API readback. Catalog info without an installed app row must never inherit a retained DeploymentRef's earlier running status.
type RuntipiBackupObservation ¶ added in v0.54.10
type RuntipiTerminalCapability ¶ added in v0.54.10
type RuntipiTerminalIntent ¶ added in v0.54.10
type RuntipiTerminalIntent struct {
APIVersion string `json:"apiVersion"`
ManagerID string `json:"managerId"`
SourceDigest string `json:"sourceDigest"`
InstallationDigest string `json:"installationDigest"`
BindingDigest string `json:"bindingDigest"`
JournalOperationID string `json:"journalOperationId"`
RecipeDigest string `json:"recipeDigest"`
EffectiveInputDigest string `json:"effectiveInputDigest"`
}
type RuntipiTerminalOperation ¶ added in v0.54.10
type RuntipiTerminalOperation struct {
RuntipiTerminalSubmission
AppURN string `json:"appUrn"`
AppID int `json:"appId"`
PrincipalID int `json:"principalId"`
GroupID string `json:"groupId"`
OperationID string `json:"operationId"`
RequestID string `json:"requestId"`
RequestDigest string `json:"requestDigest"`
WitnessDigest string `json:"witnessDigest"`
Terminal bool `json:"terminal"`
RuntipiTerminalOutcome
Proof *struct {
Kind string `json:"kind"`
Phase string `json:"phase"`
Cancellation string `json:"cancellation"`
} `json:"proof"`
Resolution *struct {
WitnessDigest string `json:"witnessDigest"`
Outcome RuntipiTerminalOutcome `json:"outcome"`
} `json:"resolution"`
}
type RuntipiTerminalOutcome ¶ added in v0.54.10
type RuntipiTerminalQualification ¶ added in v0.54.10
type RuntipiTerminalQualification struct {
ManagerID string `json:"managerId"`
SourceDigest string `json:"sourceDigest"`
ManagerContainerID string `json:"managerContainerId"`
ManagerImage string `json:"managerImage"`
PrincipalID int `json:"principalId"`
HelperDigest string `json:"helperDigest"`
// Issued through the existing encrypted node installation custody only
// after exact attached-stdin/EOF/handle recovery qualification. Engine
// version admission alone does not qualify this new credential channel.
NodeExecutable string `json:"nodeExecutable"`
InputTransport string `json:"inputTransport"`
InputTransportReceiptDigest string `json:"inputTransportReceiptDigest"`
}
type RuntipiTerminalSubmission ¶ added in v0.54.10
type RuntipiTerminalSubmission struct {
RuntipiTerminalIntent
PredecessorOperationID *string `json:"predecessorOperationId"`
Action string `json:"action"`
Effect string `json:"effect"`
}
type RuntipiUserContext ¶ added in v0.54.4
type SSHBootstrap ¶
type SetupDropManifest ¶
type SetupDropManifest struct {
Name string `json:"name"`
Version string `json:"version,omitempty"`
Runner string `json:"runner,omitempty"`
Description string `json:"description,omitempty"`
RollbackNotes []string `json:"rollbackNotes,omitempty"`
Command []string `json:"command,omitempty"`
Env map[string]string `json:"env,omitempty"`
Secrets map[string]string `json:"secrets,omitempty"`
}
SetupDropManifest describes an initial-configuration unit that can be run separately from the application deployment.
type SetupPoliciesManifest ¶
type SupplementalNodeTarget ¶
type SupplementalNodeTarget struct {
Name string
Role string
IP string
Host string
Services []string
Platform NodePlatformTarget
Bootstrap *NodeBootstrap
}
SupplementalNodeTarget describes an additional node that should be attached to the selected platform before StackKit-owned apps are deployed.
type SystemAppManifest ¶
type SystemAppManifest struct {
AppManifest
Role string `json:"role,omitempty"`
}
SystemAppManifest describes a StackKit-owned control-plane application that StackKit may deploy through the selected platform adapter.
func (*SystemAppManifest) UnmarshalJSON ¶
func (m *SystemAppManifest) UnmarshalJSON(data []byte) error
Source Files
¶
- bundle.go
- coolify.go
- coolify_component.go
- coolify_provider.go
- deploy_diagnostics.go
- doc.go
- dokploy.go
- dokploy_provider.go
- dokploy_provider_config.go
- host_deployment.go
- http.go
- komodo.go
- komodo_core_handover.go
- komodo_handover.go
- komodo_provider_lifecycle.go
- local_compose.go
- native_komodo_config.go
- node_prepare.go
- owner_config.go
- runtipi.go
- runtipi_terminal.go
- types.go