| Safe Haskell | None |
|---|---|
| Language | GHC2021 |
Ecluse.Composition.Executable
Description
The boot's effectful planning phase: take the cleared BootPlan and yield the
ExecutablePlan the booting role assembles its runtime from.
Every role plans through here, so a refusal only a live environment can settle is spent at one
gate whatever the role, and holding an ExecutablePlan means nothing downstream refuses to
boot. A listener that fails to bind is a runtime fault for supervision, not a refusal.
ecluse check-config makes no cloud call, so it stops at the BootPlan and never reaches here.
Synopsis
- data ExecutablePlan
- data RoleWiring
- data MirrorWiring
- data PrunerWiring
- type BuildMirrorQueue = LogEnv -> Int -> MirrorQueuePlan -> IO MirrorQueue
- type BuildCredentials = (Ecosystem -> StoreTag -> CredentialReporters) -> [((Ecosystem, CredentialTarget), StoreBackend)] -> IO (Either [BootError] CredentialProviders)
- planExecutable :: LogEnv -> TracingPort -> ResolveAdapter -> BuildMirrorQueue -> BuildCredentials -> StoreBuilds -> BootPlan -> IO ([Advisory], Either [BootError] ExecutablePlan)
Documentation
data ExecutablePlan Source #
The boot's post-gating artefact: the cleared plan, and the wiring only a live environment
could settle. planExecutable is its one producer, so a role cannot assemble an unvetted one.
data RoleWiring Source #
What each role's arm settled. A role starts from its own arm, so wiring one role's boot planned cannot reach another role's runtime.
Constructors
| MirrorPipelineWiring MirrorWiring |
|
| StorePrunerWiring PrunerWiring |
|
| PilotWiring ExportLoopPlan |
|
data MirrorWiring Source #
What a mirror-pipeline role's arm settled, and all Ecluse.Service assembles its runtime from.
data PrunerWiring Source #
What the store pruner's arm settled: one sweepable mount per cleared store, and the advisory sync the sweep's rules read. Ecluse.Dredger assembles the whole role from it.
type BuildMirrorQueue = LogEnv -> Int -> MirrorQueuePlan -> IO MirrorQueue Source #
How a boot builds the selected mirror-queue backend. Injected, as the adapter resolver is, so a spec can drive this phase's refusals without reaching a cloud.
type BuildCredentials = (Ecosystem -> StoreTag -> CredentialReporters) -> [((Ecosystem, CredentialTarget), StoreBackend)] -> IO (Either [BootError] CredentialProviders) Source #
Build only credentials for the targets cleared by this boot role.
planExecutable :: LogEnv -> TracingPort -> ResolveAdapter -> BuildMirrorQueue -> BuildCredentials -> StoreBuilds -> BootPlan -> IO ([Advisory], Either [BootError] ExecutablePlan) Source #
Plan the runtime the cleared plan's role starts, or report every refusal only a live environment can settle. Each role has one arm here, and a refusal is spent once for all of them.