terraform

package
v0.7.0 Latest Latest
Warning

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

Go to latest
Published: Oct 17, 2022 License: Apache-2.0 Imports: 24 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ApplyResult

type ApplyResult struct {
	State *json.StateV4
}

ApplyResult contains the state after the apply operation.

type CallbackFn

type CallbackFn func(error, context.Context) error

CallbackFn is the type of accepted function that can be called after an async operation is completed.

type FileProducer

type FileProducer struct {
	Resource resource.Terraformed
	Setup    Setup
	Dir      string
	Config   *config.Resource
	// contains filtered or unexported fields
}

FileProducer exist to serve as cache for the data that is costly to produce every time like parameters and observation maps.

func NewFileProducer

func NewFileProducer(ctx context.Context, client resource.SecretClient, dir string, tr resource.Terraformed, ts Setup, cfg *config.Resource, opts ...FileProducerOption) (*FileProducer, error)

NewFileProducer returns a new FileProducer.

func (*FileProducer) EnsureTFState

func (fp *FileProducer) EnsureTFState(ctx context.Context) error

EnsureTFState writes the Terraform state that should exist in the filesystem to start any Terraform operation.

func (*FileProducer) WriteMainTF

func (fp *FileProducer) WriteMainTF() error

WriteMainTF writes the content main configuration file that has the desired state configuration for Terraform.

type FileProducerOption

type FileProducerOption func(*FileProducer)

FileProducerOption allows you to configure FileProducer

func WithFileSystem

func WithFileSystem(fs afero.Fs) FileProducerOption

WithFileSystem configures the filesystem to use. Used mostly for testing.

type NoOpProviderRunner

type NoOpProviderRunner struct{}

NoOpProviderRunner is a no-op ProviderRunner

func NewNoOpProviderRunner

func NewNoOpProviderRunner() NoOpProviderRunner

NewNoOpProviderRunner constructs a new NoOpProviderRunner

func (NoOpProviderRunner) Start

func (NoOpProviderRunner) Start() (string, error)

Start takes no action

type Operation

type Operation struct {
	Type string
	// contains filtered or unexported fields
}

Operation is the representation of a single Terraform CLI operation.

func (*Operation) EndTime

func (o *Operation) EndTime() *time.Time

EndTime returns the end time of the current operation.

func (*Operation) Flush

func (o *Operation) Flush()

Flush cleans the operation information.

func (*Operation) IsEnded

func (o *Operation) IsEnded() bool

IsEnded returns whether the operation has ended, regardless of its result.

func (*Operation) IsRunning

func (o *Operation) IsRunning() bool

IsRunning returns whether there is an ongoing operation.

func (*Operation) MarkEnd

func (o *Operation) MarkEnd()

MarkEnd marks the operation as ended.

func (*Operation) MarkStart

func (o *Operation) MarkStart(t string)

MarkStart marks the operation as started.

func (*Operation) StartTime

func (o *Operation) StartTime() *time.Time

StartTime returns the start time of the current operation.

type PlanResult

type PlanResult struct {
	Exists   bool
	UpToDate bool
}

PlanResult returns a summary of comparison between desired and current state of the resource.

type ProviderConfiguration

type ProviderConfiguration map[string]any

ProviderConfiguration holds the setup configuration body

type ProviderRequirement

type ProviderRequirement struct {
	// Source of the provider. An example value is "hashicorp/aws".
	Source string

	// Version of the provider. An example value is "4.0"
	Version string
}

ProviderRequirement holds values for the Terraform HCL setup requirements

type ProviderRunner

type ProviderRunner interface {
	Start() (string, error)
}

ProviderRunner is the interface for running Terraform native provider processes in the shared gRPC server mode

type RefreshResult

type RefreshResult struct {
	Exists       bool
	IsApplying   bool
	IsDestroying bool
	State        *json.StateV4
}

RefreshResult contains information about the current state of the resource.

type Setup

type Setup struct {
	// Version is the version of Terraform that this workspace would require as
	// minimum.
	Version string

	// Requirement contains the provider requirements of the workspace to work,
	// which is mostly the version and source of the provider.
	Requirement ProviderRequirement

	// Configuration contains the provider configuration parameters of the given
	// Terraform provider, such as access token.
	Configuration ProviderConfiguration

	// ClientMetadata contains arbitrary metadata that the provider would like
	// to pass but not available as part of Terraform's provider configuration.
	// For example, AWS account id is needed for certain ID calculations but is
	// not part of the Terraform AWS Provider configuration, so it could be
	// made available only by this map.
	ClientMetadata map[string]string
}

Setup holds values for the Terraform version and setup requirements and configuration body

func (Setup) Map

func (s Setup) Map() map[string]any

Map returns the Setup object in map form. The initial reason was so that we don't import the terraform package in places where GetIDFn is overridden because it can cause circular dependency.

type SetupFn

type SetupFn func(ctx context.Context, client client.Client, mg xpresource.Managed) (Setup, error)

SetupFn is a function that returns Terraform setup which contains provider requirement, configuration and Terraform version.

type SharedGRPCRunnerOption

type SharedGRPCRunnerOption func(runner *SharedProvider)

SharedGRPCRunnerOption lets you configure the shared gRPC runner.

func WithNativeProviderArgs

func WithNativeProviderArgs(args ...string) SharedGRPCRunnerOption

WithNativeProviderArgs are the arguments to be passed to the native provider

func WithNativeProviderExecutor

func WithNativeProviderExecutor(e exec.Interface) SharedGRPCRunnerOption

WithNativeProviderExecutor sets the process executor to be used

func WithProtocolVersion

func WithProtocolVersion(protocolVersion int) SharedGRPCRunnerOption

WithProtocolVersion sets the gRPC protocol version in use between the Terraform CLI and the native provider.

type SharedProvider

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

SharedProvider runs the configured native provider plugin using the supplied command-line args

func NewSharedProvider

func NewSharedProvider(l logging.Logger, nativeProviderPath, nativeProviderName string, opts ...SharedGRPCRunnerOption) *SharedProvider

NewSharedProvider instantiates a SharedProvider with an OS executor using the supplied logger

func (*SharedProvider) Start

func (sr *SharedProvider) Start() (string, error)

Start starts a shared gRPC server if not already running A logger, native provider's path and command-line arguments to be passed to it must have been properly configured. Returns any errors encountered and the reattachment configuration for the native provider.

type StoreCleaner

type StoreCleaner interface {
	Remove(obj xpresource.Object) error
}

StoreCleaner is the interface that the workspace finalizer needs to work with.

type Workspace

type Workspace struct {
	// LastOperation contains information about the last operation performed.
	LastOperation *Operation
	// contains filtered or unexported fields
}

Workspace runs Terraform operations in its directory and holds the information about their statuses.

func NewWorkspace

func NewWorkspace(dir string, opts ...WorkspaceOption) *Workspace

NewWorkspace returns a new Workspace object that operates in the given directory.

func (*Workspace) Apply

func (w *Workspace) Apply(ctx context.Context) (ApplyResult, error)

Apply makes a blocking terraform apply call.

func (*Workspace) ApplyAsync

func (w *Workspace) ApplyAsync(callback CallbackFn) error

ApplyAsync makes a terraform apply call without blocking and calls the given function once that apply call finishes.

func (*Workspace) Destroy

func (w *Workspace) Destroy(ctx context.Context) error

Destroy makes a blocking terraform destroy call.

func (*Workspace) DestroyAsync

func (w *Workspace) DestroyAsync(callback CallbackFn) error

DestroyAsync makes a non-blocking terraform destroy call. It doesn't accept a callback because destroy operations are not time sensitive as ApplyAsync where you might need to store the server-side computed information as soon as possible.

func (*Workspace) Plan

func (w *Workspace) Plan(ctx context.Context) (PlanResult, error)

Plan makes a blocking terraform plan call.

func (*Workspace) Refresh

func (w *Workspace) Refresh(ctx context.Context) (RefreshResult, error)

Refresh makes a blocking terraform apply -refresh-only call where only the state file is changed with the current state of the resource.

type WorkspaceFinalizer

type WorkspaceFinalizer struct {
	xpresource.Finalizer
	Store StoreCleaner
}

WorkspaceFinalizer removes the workspace from the workspace store and only then calls RemoveFinalizer of the underlying Finalizer.

func NewWorkspaceFinalizer

func NewWorkspaceFinalizer(ws StoreCleaner, af xpresource.Finalizer) *WorkspaceFinalizer

NewWorkspaceFinalizer returns a new WorkspaceFinalizer.

func (*WorkspaceFinalizer) AddFinalizer

func (wf *WorkspaceFinalizer) AddFinalizer(ctx context.Context, obj xpresource.Object) error

AddFinalizer to the supplied Managed resource.

func (*WorkspaceFinalizer) RemoveFinalizer

func (wf *WorkspaceFinalizer) RemoveFinalizer(ctx context.Context, obj xpresource.Object) error

RemoveFinalizer removes the workspace from workspace store before removing the finalizer.

type WorkspaceOption

type WorkspaceOption func(*Workspace)

WorkspaceOption allows you to configure Workspace objects.

func WithAferoFs

func WithAferoFs(fs afero.Fs) WorkspaceOption

WithAferoFs lets you set the fs of WorkspaceStore.

func WithExecutor

func WithExecutor(e k8sExec.Interface) WorkspaceOption

WithExecutor sets the executor of Workspace.

func WithFilterFn

func WithFilterFn(filterFn func(string) string) WorkspaceOption

func WithLastOperation

func WithLastOperation(lo *Operation) WorkspaceOption

WithLastOperation sets the Last Operation of Workspace.

func WithLogger

func WithLogger(l logging.Logger) WorkspaceOption

WithLogger sets the logger of Workspace.

type WorkspaceStore

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

WorkspaceStore allows you to manage multiple Terraform workspaces.

func NewWorkspaceStore

func NewWorkspaceStore(l logging.Logger, opts ...WorkspaceStoreOption) *WorkspaceStore

NewWorkspaceStore returns a new WorkspaceStore.

func (*WorkspaceStore) Remove

func (ws *WorkspaceStore) Remove(obj xpresource.Object) error

Remove deletes the workspace directory from the filesystem and erases its record from the store.

func (*WorkspaceStore) Workspace

Workspace makes sure the Terraform workspace for the given resource is ready to be used and returns the Workspace object configured to work in that workspace folder in the filesystem.

type WorkspaceStoreOption

type WorkspaceStoreOption func(*WorkspaceStore)

WorkspaceStoreOption lets you configure the workspace store.

func WithFs

func WithFs(fs afero.Fs) WorkspaceStoreOption

WithFs lets you set the fs of WorkspaceStore. Used mostly for testing.

func WithProviderRunner

func WithProviderRunner(pr ProviderRunner) WorkspaceStoreOption

WithProviderRunner sets the ProviderRunner to be used.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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