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 BuildCanonicalConfigPath(unit *component.Unit, basePath string) (canonicalConfigPath string, canonicalDir string, err error)
- func CloneUnitOptions(stack *component.Stack, unit *component.Unit, canonicalConfigPath string, ...) (*options.TerragruntOptions, log.Logger, error)
- func FilterDiscoveredUnits(discovered component.Components, units []*component.Unit) component.Components
- func NewRunnerPoolStack(ctx context.Context, l log.Logger, ...) (common.StackRunner, error)
- func ShouldSkipUnitWithoutTerraform(unit *component.Unit, dir string, l log.Logger) (bool, 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 BuildCanonicalConfigPath ¶ added in v0.97.0
func BuildCanonicalConfigPath( unit *component.Unit, basePath string, ) (canonicalConfigPath string, canonicalDir string, err error)
BuildCanonicalConfigPath computes the canonical config path for a unit. It handles .hcl/.json suffixes, joins an appropriate config filename when needed, converts to canonical absolute path, and updates the unit's path. Returns the canonical config path and the canonical unit directory.
func CloneUnitOptions ¶ added in v0.97.0
func CloneUnitOptions( stack *component.Stack, unit *component.Unit, canonicalConfigPath string, stackDefaultDownloadDir string, l log.Logger, ) (*options.TerragruntOptions, log.Logger, error)
CloneUnitOptions clones TerragruntOptions for a specific unit. It handles CloneWithConfigPath, per-unit DownloadDir fallback, and OriginalTerragruntConfigPath. Returns the cloned options and logger, or the original logger if stack has no options.
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.
func ShouldSkipUnitWithoutTerraform ¶ added in v0.97.0
ShouldSkipUnitWithoutTerraform checks if a unit should be skipped because it has neither a Terraform source nor any Terraform/OpenTofu files in its directory. Returns true if the unit should be skipped, false otherwise.
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.