Documentation
¶
Overview ¶
Package runnerpool provides a runner implementation based on a pool pattern for executing multiple units concurrently.
Index ¶
- func Build(ctx context.Context, l log.Logger, ...) (common.StackRunner, error)
- func FilterDiscoveredUnits(discovered component.Components, units []*component.Unit) component.Components
- func NewRunnerPoolStack(ctx context.Context, l log.Logger, ...) (common.StackRunner, error)
- type Controller
- type ControllerOption
- type Runner
- func (r *Runner) GetStack() *component.Stack
- func (r *Runner) JSONUnitDeployOrder(_ string) (string, error)
- func (r *Runner) ListStackDependentUnits() map[string][]string
- func (r *Runner) LogUnitDeployOrder(l log.Logger, terraformCommand string) error
- func (r *Runner) Run(ctx context.Context, l log.Logger, opts *options.TerragruntOptions) error
- func (r *Runner) SetReport(rpt *report.Report)
- func (r *Runner) WithOptions(opts ...common.Option) *Runner
- type UnitRunner
- type UnitWriter
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Build ¶
func Build( ctx context.Context, l log.Logger, terragruntOptions *options.TerragruntOptions, opts ...common.Option, ) (common.StackRunner, error)
Build stack runner using discovery and queueing mechanisms.
func FilterDiscoveredUnits ¶ added in v0.89.0
func FilterDiscoveredUnits(discovered component.Components, units []*component.Unit) component.Components
FilterDiscoveredUnits removes configs for units flagged as excluded and prunes dependencies that point to excluded units. This keeps the execution queue and any user-facing listings free from units not intended to run.
Inputs:
- discovered: raw discovery results (paths and dependency edges)
- units: resolved units (slice), where exclude rules have already been applied
Behavior:
- A config is included only if there's a corresponding unit and its FlagExcluded is false.
- For each included config, its Dependencies list is filtered to only include included configs.
- The function returns a new slice with shallow-copied entries so the original discovery results remain unchanged.
func NewRunnerPoolStack ¶
func NewRunnerPoolStack( ctx context.Context, l log.Logger, terragruntOptions *options.TerragruntOptions, discovered component.Components, opts ...common.Option, ) (common.StackRunner, error)
NewRunnerPoolStack creates a new stack from discovered units.
Types ¶
type Controller ¶ added in v0.83.2
type Controller struct {
// contains filtered or unexported fields
}
Controller orchestrates concurrent execution over a DAG.
func NewController ¶ added in v0.83.2
func NewController(q *queue.Queue, units []*component.Unit, opts ...ControllerOption) *Controller
NewController creates a new Controller with the given options and a pre-built queue.
type ControllerOption ¶ added in v0.83.2
type ControllerOption func(*Controller)
ControllerOption is a function that modifies a Controller.
func WithMaxConcurrency ¶
func WithMaxConcurrency(concurrency int) ControllerOption
WithMaxConcurrency sets the concurrency for the Controller.
func WithRunner ¶
func WithRunner(runner UnitRunner) ControllerOption
WithRunner sets the UnitRunner for the Controller.
type Runner ¶
Runner implements the Stack interface for runner pool execution.
func (*Runner) JSONUnitDeployOrder ¶
JSONUnitDeployOrder returns the order of units to be processed for a given Terraform command in JSON format.
func (*Runner) ListStackDependentUnits ¶
ListStackDependentUnits returns a map of units and their dependent units in the stack.
func (*Runner) LogUnitDeployOrder ¶
LogUnitDeployOrder logs the order of units to be processed for a given Terraform command.
func (*Runner) Run ¶
Run executes the stack according to TerragruntOptions and returns the first error (or a joined error) once execution is finished.
type UnitRunner ¶ added in v0.83.2
UnitRunner defines a function type that executes a Unit within a given context and returns an error.
type UnitWriter ¶ added in v0.94.0
type UnitWriter struct {
// contains filtered or unexported fields
}
UnitWriter buffers output for a single unit and flushes incrementally during execution. This prevents interleaved output when multiple units run in parallel while ensuring output appears in real-time during execution, not just at completion.
func NewUnitWriter ¶ added in v0.94.0
func NewUnitWriter(out io.Writer) *UnitWriter
NewUnitWriter returns a new UnitWriter instance.
func (*UnitWriter) Flush ¶ added in v0.94.0
func (writer *UnitWriter) Flush() error
Flush flushes all buffered data to the output writer.
func (*UnitWriter) ParentWriter ¶ added in v0.94.0
func (writer *UnitWriter) ParentWriter() io.Writer
ParentWriter returns the underlying output writer that this UnitWriter wraps.