terraform

package
v0.8.1 Latest Latest
Warning

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

Go to latest
Published: Dec 12, 2025 License: MPL-2.0 Imports: 20 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ArchiveModuleResolver

type ArchiveModuleResolver struct {
	*BaseModuleResolver
}

ArchiveModuleResolver handles terraform modules from local archive files

func NewArchiveModuleResolver

func NewArchiveModuleResolver(rt *runtime.Runtime, blueprintHandler blueprint.BlueprintHandler) *ArchiveModuleResolver

NewArchiveModuleResolver creates a new archive module resolver with the provided dependencies.

func (*ArchiveModuleResolver) ProcessModules

func (h *ArchiveModuleResolver) ProcessModules() error

ProcessModules processes all terraform components that use file:// sources by extracting modules from local archives and generating appropriate module shims. It identifies components with resolved file:// source URLs, extracts the required modules, and creates the necessary terraform configuration files.

type BaseModuleResolver

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

BaseModuleResolver provides common functionality for all module resolvers

func NewBaseModuleResolver

func NewBaseModuleResolver(rt *runtime.Runtime, blueprintHandler blueprint.BlueprintHandler, opts ...*BaseModuleResolver) *BaseModuleResolver

NewBaseModuleResolver creates a new base module resolver with the provided dependencies. If overrides are provided, any non-nil component in the override BaseModuleResolver will be used instead of creating a default.

func (*BaseModuleResolver) GenerateTfvars

func (h *BaseModuleResolver) GenerateTfvars(overwrite bool) error

GenerateTfvars creates Terraform configuration files, including tfvars files, for all blueprint components. It processes template data keyed by "terraform/<module_path>", generating tfvars files at contexts/<context>/terraform/<module_path>.tfvars. For each entry in the input data, it skips keys not prefixed with "terraform/" and skips components not present in the blueprint. For all components in the blueprint, it ensures a tfvars file is generated if not already handled by the input data. The method uses the blueprint handler to retrieve TerraformComponents and determines the variables.tf location based on component source (remote or local). Module resolution is handled by pkg/terraform.

type CompositeModuleResolver

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

CompositeModuleResolver handles terraform modules by delegating to specialized resolvers

func NewCompositeModuleResolver

func NewCompositeModuleResolver(rt *runtime.Runtime, blueprintHandler blueprint.BlueprintHandler, artifactBuilder artifact.Artifact) *CompositeModuleResolver

NewCompositeModuleResolver creates a new composite module resolver with all specialized resolvers.

func (*CompositeModuleResolver) GenerateTfvars

func (h *CompositeModuleResolver) GenerateTfvars(overwrite bool) error

GenerateTfvars generates tfvars files for all terraform components. It uses the standard resolver's GenerateTfvars method since all resolvers share the same base implementation.

func (*CompositeModuleResolver) ProcessModules

func (h *CompositeModuleResolver) ProcessModules() error

ProcessModules processes all terraform modules by delegating to the appropriate specialized resolvers. It calls ProcessModules on each resolver in order: OCI, Archive, then Standard. Returns an error if any resolver fails.

type MockModuleResolver

type MockModuleResolver struct {
	ProcessModulesFunc func() error
	GenerateTfvarsFunc func(overwrite bool) error
}

MockModuleResolver is a mock implementation of the ModuleResolver interface

func NewMockModuleResolver

func NewMockModuleResolver() *MockModuleResolver

NewMockModuleResolver creates a new MockModuleResolver instance

func (*MockModuleResolver) GenerateTfvars

func (m *MockModuleResolver) GenerateTfvars(overwrite bool) error

GenerateTfvars calls the mock GenerateTfvarsFunc if set, otherwise returns nil

func (*MockModuleResolver) ProcessModules

func (m *MockModuleResolver) ProcessModules() error

ProcessModules calls the mock ProcessModulesFunc if set, otherwise returns nil

type ModuleResolver

type ModuleResolver interface {
	ProcessModules() error
	GenerateTfvars(overwrite bool) error
}

ModuleResolver processes terraform module sources and generates appropriate module configurations

type OCIModuleResolver

type OCIModuleResolver struct {
	*BaseModuleResolver
	// contains filtered or unexported fields
}

OCIModuleResolver handles terraform modules from OCI artifacts

func NewOCIModuleResolver

func NewOCIModuleResolver(rt *runtime.Runtime, blueprintHandler blueprint.BlueprintHandler, artifactBuilder artifact.Artifact) *OCIModuleResolver

NewOCIModuleResolver creates a new OCI module resolver with the provided dependencies.

func (*OCIModuleResolver) ProcessModules

func (h *OCIModuleResolver) ProcessModules() error

ProcessModules processes all terraform components that use OCI sources by extracting modules from OCI artifacts and generating appropriate module shims. It identifies components with resolved OCI source URLs, extracts the required modules, and creates the necessary terraform configuration files.

type RealTarReader

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

RealTarReader is the real implementation of TarReader

func (*RealTarReader) Next

func (r *RealTarReader) Next() (*tar.Header, error)

Next returns the next header in the tar archive

func (*RealTarReader) Read

func (r *RealTarReader) Read(p []byte) (int, error)

Read reads data from the current tar entry

type Shims

type Shims struct {
	MkdirAll       func(path string, perm os.FileMode) error
	WriteFile      func(filename string, data []byte, perm os.FileMode) error
	ReadFile       func(filename string) ([]byte, error)
	Stat           func(name string) (os.FileInfo, error)
	Chdir          func(dir string) error
	FilepathRel    func(basepath, targpath string) (string, error)
	JsonUnmarshal  func(data []byte, v any) error
	NewBytesReader func(b []byte) *bytes.Reader
	NewTarReader   func(r io.Reader) TarReader
	EOFError       func() error
	TypeDir        func() byte
	Create         func(name string) (*os.File, error)
	Copy           func(dst io.Writer, src io.Reader) (int64, error)
	Chmod          func(name string, mode os.FileMode) error
	Setenv         func(key, value string) error
	ReadDir        func(name string) ([]os.DirEntry, error)
	RemoveAll      func(path string) error
	FilepathAbs    func(path string) (string, error)
	FilepathBase   func(path string) string
}

Shims provides mockable wrappers around system and runtime functions

func NewShims

func NewShims() *Shims

NewShims creates a new Shims instance with default implementations

type StandardModuleResolver

type StandardModuleResolver struct {
	*BaseModuleResolver
	// contains filtered or unexported fields
}

StandardModuleResolver handles standard terraform module sources (git, local paths, etc.)

func NewStandardModuleResolver

func NewStandardModuleResolver(rt *runtime.Runtime, blueprintHandler blueprint.BlueprintHandler) *StandardModuleResolver

NewStandardModuleResolver creates a new standard module resolver with the provided dependencies. If overrides are provided, any non-nil component in the override StandardModuleResolver will be used instead of creating a default.

func (*StandardModuleResolver) ProcessModules

func (h *StandardModuleResolver) ProcessModules() error

ProcessModules processes all standard terraform modules from the blueprint. It iterates over each terraform component, determines if the resolver should handle the source, creates the module directory, writes shim files (main.tf, variables.tf, outputs.tf), initializes the module with terraform, and determines the correct module path for shimming. Errors are returned if any step fails, ensuring that only valid and initialized modules are processed.

type TarReader

type TarReader interface {
	Next() (*tar.Header, error)
	Read([]byte) (int, error)
}

TarReader provides an interface for tar archive reading operations

type TerraformInitOutput

type TerraformInitOutput struct {
	Type    string `json:"@type"`
	Message string `json:"@message"`
}

TerraformInitOutput represents the JSON output structure from terraform init

type VariableInfo

type VariableInfo struct {
	Name        string
	Description string
	Default     any
	Sensitive   bool
}

VariableInfo holds metadata for a single Terraform variable

Jump to

Keyboard shortcuts

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