runtime

package
v0.22.3-pre.20230110 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 10, 2023 License: Apache-2.0 Imports: 16 Imported by: 0

Documentation

Overview

Package runtime holds code for actually running commands vs. preparing and constructing.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetPlanFilename

func GetPlanFilename(workspace string, projName string) string

GetPlanFilename returns the filename (not the path) of the generated tf plan given a workspace and project name.

func IsRemotePlan

func IsRemotePlan(planContents []byte) bool

isRemotePlan returns true if planContents are from a plan that was generated using TFE remote operations.

func MustConstraint

func MustConstraint(constraint string) version.Constraints

MustConstraint returns a constraint. It panics on error.

func ProjectNameFromPlanfile

func ProjectNameFromPlanfile(workspace string, filename string) (string, error)

ProjectNameFromPlanfile returns the project name that a planfile with name filename is for. If filename is for a project without a name then it will return an empty string. workspace is the workspace this project is in.

func StripRefreshingFromPlanOutput

func StripRefreshingFromPlanOutput(output string, tfVersion *version.Version) string

Types

type ApplyStepRunner

type ApplyStepRunner struct {
	TerraformExecutor   TerraformExec
	DefaultTFVersion    *version.Version
	CommitStatusUpdater StatusUpdater
	AsyncTFExec         AsyncTFExec
}

ApplyStepRunner runs `terraform apply`.

func (*ApplyStepRunner) Run

func (a *ApplyStepRunner) Run(ctx command.ProjectContext, extraArgs []string, path string, envs map[string]string) (string, error)

type AsyncTFExec

type AsyncTFExec interface {
	// RunCommandAsync runs terraform with args. It immediately returns an
	// input and output channel. Callers can use the output channel to
	// get the realtime output from the command.
	// Callers can use the input channel to pass stdin input to the command.
	// If any error is passed on the out channel, there will be no
	// further output (so callers are free to exit).
	RunCommandAsync(ctx command.ProjectContext, path string, args []string, envs map[string]string, v *version.Version, workspace string) (chan<- string, <-chan runtimemodels.Line)
}

AsyncTFExec brings the interface from TerraformClient into this package without causing circular imports. It's split from TerraformExec because due to a bug in pegomock with channels, we can't generate a mock for it so we hand-write it for this specific method.

type DefaultPostWorkflowHookRunner added in v0.18.2

type DefaultPostWorkflowHookRunner struct {
	OutputHandler jobs.ProjectCommandOutputHandler
}

func (DefaultPostWorkflowHookRunner) Run added in v0.18.2

type DefaultPreWorkflowHookRunner

type DefaultPreWorkflowHookRunner struct {
	OutputHandler jobs.ProjectCommandOutputHandler
}

func (DefaultPreWorkflowHookRunner) Run

type EnvStepRunner

type EnvStepRunner struct {
	RunStepRunner *RunStepRunner
}

EnvStepRunner set environment variables.

func (*EnvStepRunner) Run

func (r *EnvStepRunner) Run(ctx command.ProjectContext, command string, value string, path string, envs map[string]string) (string, error)

Run runs the env step command. value is the value for the environment variable. If set this is returned as the value. Otherwise command is run and its output is the value returned.

type Executor

type Executor interface {
	Run(ctx command.ProjectContext, executablePath string, envs map[string]string, workdir string, extraArgs []string) (string, error)
}

Executor runs an executable with provided environment variables and arguments and returns stdout

type ExecutorVersionEnsurer

type ExecutorVersionEnsurer interface {
	EnsureExecutorVersion(log logging.SimpleLogging, v *version.Version) (string, error)
}

ExecutorVersionEnsurer ensures a given version exists and outputs a path to the executable

type ImportStepRunner added in v0.22.0

type ImportStepRunner struct {
	TerraformExecutor TerraformExec
	DefaultTFVersion  *version.Version
}

func (*ImportStepRunner) Run added in v0.22.0

func (p *ImportStepRunner) Run(ctx command.ProjectContext, extraArgs []string, path string, envs map[string]string) (string, error)

type InitStepRunner

type InitStepRunner struct {
	TerraformExecutor TerraformExec
	DefaultTFVersion  *version.Version
}

InitStep runs `terraform init`.

func (*InitStepRunner) Run

func (i *InitStepRunner) Run(ctx command.ProjectContext, extraArgs []string, path string, envs map[string]string) (string, error)

type MinimumVersionStepRunnerDelegate

type MinimumVersionStepRunnerDelegate struct {
	// contains filtered or unexported fields
}

MinimumVersionStepRunnerDelegate ensures that a given step runner can't run unless the command version being used is greater than a provided minimum

func (*MinimumVersionStepRunnerDelegate) Run

func (r *MinimumVersionStepRunnerDelegate) Run(ctx command.ProjectContext, extraArgs []string, path string, envs map[string]string) (string, error)

type MultiEnvStepRunner added in v0.19.4

type MultiEnvStepRunner struct {
	RunStepRunner *RunStepRunner
}

EnvStepRunner set environment variables.

func (*MultiEnvStepRunner) Run added in v0.19.4

func (r *MultiEnvStepRunner) Run(ctx command.ProjectContext, command string, path string, envs map[string]string) (string, error)

Run runs the multienv step command. The command must return a json string containing the array of name-value pairs that are being added as extra environment variables

type NullRunner

type NullRunner struct{}

NullRunner is a runner that isn't configured for a given plan type but outputs nothing

func (NullRunner) Run

func (p NullRunner) Run(ctx command.ProjectContext, extraArgs []string, path string, envs map[string]string) (string, error)

type PlanStepRunner

type PlanStepRunner struct {
	TerraformExecutor   TerraformExec
	DefaultTFVersion    *version.Version
	CommitStatusUpdater StatusUpdater
	AsyncTFExec         AsyncTFExec
}

func (*PlanStepRunner) Run

func (p *PlanStepRunner) Run(ctx command.ProjectContext, extraArgs []string, path string, envs map[string]string) (string, error)

type PlanTypeStepRunnerDelegate

type PlanTypeStepRunnerDelegate struct {
	// contains filtered or unexported fields
}

PlanTypeStepRunnerDelegate delegates based on the type of plan, ie. remote backend which doesn't support certain functions

func (*PlanTypeStepRunnerDelegate) Run

func (p *PlanTypeStepRunnerDelegate) Run(ctx command.ProjectContext, extraArgs []string, path string, envs map[string]string) (string, error)

type PolicyCheckStepRunner

type PolicyCheckStepRunner struct {
	// contains filtered or unexported fields
}

PolicyCheckStepRunner runs a policy check command given a ctx

func (*PolicyCheckStepRunner) Run

func (p *PolicyCheckStepRunner) Run(ctx command.ProjectContext, extraArgs []string, path string, envs map[string]string) (string, error)

Run ensures a given version for the executable, builds the args from the project context and then runs executable returning the result

type PostWorkflowHookRunner added in v0.18.2

type PostWorkflowHookRunner interface {
	Run(ctx models.WorkflowHookCommandContext, command string, path string) (string, string, error)
}

type PreWorkflowHookRunner

type PreWorkflowHookRunner interface {
	Run(ctx models.WorkflowHookCommandContext, command string, path string) (string, string, error)
}

type PullApprovedChecker

type PullApprovedChecker interface {
	PullIsApproved(baseRepo models.Repo, pull models.PullRequest) (models.ApprovalStatus, error)
}

type RemoteBackendUnsupportedRunner

type RemoteBackendUnsupportedRunner struct{}

RemoteBackendUnsupportedRunner is a runner that is responsible for outputting that the remote backend is unsupported

func (RemoteBackendUnsupportedRunner) Run

func (p RemoteBackendUnsupportedRunner) Run(ctx command.ProjectContext, extraArgs []string, path string, envs map[string]string) (string, error)

type RunStepRunner

type RunStepRunner struct {
	TerraformExecutor TerraformExec
	DefaultTFVersion  *version.Version
	// TerraformBinDir is the directory where Atlantis downloads Terraform binaries.
	TerraformBinDir         string
	ProjectCmdOutputHandler jobs.ProjectCommandOutputHandler
}

RunStepRunner runs custom commands.

func (*RunStepRunner) Run

func (r *RunStepRunner) Run(ctx command.ProjectContext, command string, path string, envs map[string]string, streamOutput bool) (string, error)

type Runner

type Runner interface {
	Run(ctx command.ProjectContext, extraArgs []string, path string, envs map[string]string) (string, error)
}

Runner mirrors events.StepRunner as a way to bring it into this package

func NewMinimumVersionStepRunnerDelegate

func NewMinimumVersionStepRunnerDelegate(minimumVersionStr string, defaultVersion *version.Version, delegate Runner) (Runner, error)

func NewPlanTypeStepRunnerDelegate

func NewPlanTypeStepRunnerDelegate(defaultRunner Runner, remotePlanRunner Runner) Runner

func NewPolicyCheckStepRunner

func NewPolicyCheckStepRunner(defaultTfVersion *version.Version, executorWorkflow VersionedExecutorWorkflow) (Runner, error)

NewPolicyCheckStepRunner creates a new step runner from an executor workflow

func NewShowStepRunner

func NewShowStepRunner(executor TerraformExec, defaultTFVersion *version.Version) (Runner, error)

type ShowStepRunner

type ShowStepRunner struct {
	TerraformExecutor TerraformExec
	DefaultTFVersion  *version.Version
}

ShowStepRunner runs terraform show on an existing plan file and outputs it to a json file

func (*ShowStepRunner) Run

func (p *ShowStepRunner) Run(ctx command.ProjectContext, extraArgs []string, path string, envs map[string]string) (string, error)

type StatusUpdater

type StatusUpdater interface {
	UpdateProject(ctx command.ProjectContext, cmdName command.Name, status models.CommitStatus, url string) error
}

StatusUpdater brings the interface from CommitStatusUpdater into this package without causing circular imports.

type TerraformExec

type TerraformExec interface {
	RunCommandWithVersion(ctx command.ProjectContext, path string, args []string, envs map[string]string, v *version.Version, workspace string) (string, error)
	EnsureVersion(log logging.SimpleLogging, v *version.Version) error
}

TerraformExec brings the interface from TerraformClient into this package without causing circular imports.

type VersionStepRunner

type VersionStepRunner struct {
	TerraformExecutor TerraformExec
	DefaultTFVersion  *version.Version
}

VersionStepRunner runs a version command given a ctx

func (*VersionStepRunner) Run

func (v *VersionStepRunner) Run(ctx command.ProjectContext, extraArgs []string, path string, envs map[string]string) (string, error)

Run ensures a given version for the executable, builds the args from the project context and then runs executable returning the result

type VersionedExecutorWorkflow

type VersionedExecutorWorkflow interface {
	ExecutorVersionEnsurer
	Executor
}

VersionedExecutorWorkflow defines a versioned execution for a given project context

Directories

Path Synopsis
mocks/matchers
Code generated by pegomock.
Code generated by pegomock.
matchers
Code generated by pegomock.
Code generated by pegomock.
mocks/matchers
Code generated by pegomock.
Code generated by pegomock.
mocks/matchers
Code generated by pegomock.
Code generated by pegomock.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL