Documentation
¶
Overview ¶
Package terraform is a generated GoMock package.
Index ¶
- Constants
- Variables
- func GetProviderEnvSecretIDs(envConfig recipes.Configuration) map[string][]string
- func Install(ctx context.Context, installer *install.Installer, tfDir string) (*tfexec.Terraform, error)
- func NewExecutor(ucpConn sdk.Connection, secretProvider *secretprovider.SecretProvider, ...) *executor
- func NewTerraform(ctx context.Context, tfRootDir, execPath string) (*tfexec.Terraform, error)
- type MockTerraformExecutor
- func (m *MockTerraformExecutor) Delete(arg0 context.Context, arg1 Options) error
- func (m *MockTerraformExecutor) Deploy(arg0 context.Context, arg1 Options) (*tfjson.State, error)
- func (m *MockTerraformExecutor) EXPECT() *MockTerraformExecutorMockRecorder
- func (m *MockTerraformExecutor) GetRecipeMetadata(arg0 context.Context, arg1 Options) (map[string]any, error)
- type MockTerraformExecutorDeleteCall
- func (c *MockTerraformExecutorDeleteCall) Do(f func(context.Context, Options) error) *MockTerraformExecutorDeleteCall
- func (c *MockTerraformExecutorDeleteCall) DoAndReturn(f func(context.Context, Options) error) *MockTerraformExecutorDeleteCall
- func (c *MockTerraformExecutorDeleteCall) Return(arg0 error) *MockTerraformExecutorDeleteCall
- type MockTerraformExecutorDeployCall
- func (c *MockTerraformExecutorDeployCall) Do(f func(context.Context, Options) (*tfjson.State, error)) *MockTerraformExecutorDeployCall
- func (c *MockTerraformExecutorDeployCall) DoAndReturn(f func(context.Context, Options) (*tfjson.State, error)) *MockTerraformExecutorDeployCall
- func (c *MockTerraformExecutorDeployCall) Return(arg0 *tfjson.State, arg1 error) *MockTerraformExecutorDeployCall
- type MockTerraformExecutorGetRecipeMetadataCall
- func (c *MockTerraformExecutorGetRecipeMetadataCall) Do(f func(context.Context, Options) (map[string]any, error)) *MockTerraformExecutorGetRecipeMetadataCall
- func (c *MockTerraformExecutorGetRecipeMetadataCall) DoAndReturn(f func(context.Context, Options) (map[string]any, error)) *MockTerraformExecutorGetRecipeMetadataCall
- func (c *MockTerraformExecutorGetRecipeMetadataCall) Return(arg0 map[string]any, arg1 error) *MockTerraformExecutorGetRecipeMetadataCall
- type MockTerraformExecutorMockRecorder
- func (mr *MockTerraformExecutorMockRecorder) Delete(arg0, arg1 any) *MockTerraformExecutorDeleteCall
- func (mr *MockTerraformExecutorMockRecorder) Deploy(arg0, arg1 any) *MockTerraformExecutorDeployCall
- func (mr *MockTerraformExecutorMockRecorder) GetRecipeMetadata(arg0, arg1 any) *MockTerraformExecutorGetRecipeMetadataCall
- type Options
- type TerraformExecutor
Constants ¶
const (
// DefaultStateLockTimeout is the default timeout for acquiring Terraform state locks
DefaultStateLockTimeout = "10m"
)
Variables ¶
var ( // ErrRecipeNameEmpty is the error when the recipe name is empty. ErrRecipeNameEmpty = errors.New("recipe name cannot be empty") )
Functions ¶
func GetProviderEnvSecretIDs ¶ added in v0.36.0
func GetProviderEnvSecretIDs(envConfig recipes.Configuration) map[string][]string
GetProviderEnvSecretIDs parses the envConfig to extract secret IDs configured in providers configuration and environment variables and returns a map of secret store IDs and corresponding slice of keys.
func Install ¶
func Install(ctx context.Context, installer *install.Installer, tfDir string) (*tfexec.Terraform, error)
Install installs Terraform using a global shared binary approach. It uses a global mutex to ensure thread-safe access to the shared Terraform binary. This approach prevents concurrent file system operations that were causing state lock errors.
func NewExecutor ¶
func NewExecutor(ucpConn sdk.Connection, secretProvider *secretprovider.SecretProvider, kubernetesClients kubernetesclientprovider.KubernetesClientProvider) *executor
NewExecutor creates a new Executor with the given UCP connection and secret provider, to execute a Terraform recipe.
Types ¶
type MockTerraformExecutor ¶
type MockTerraformExecutor struct {
// contains filtered or unexported fields
}
MockTerraformExecutor is a mock of TerraformExecutor interface.
func NewMockTerraformExecutor ¶
func NewMockTerraformExecutor(ctrl *gomock.Controller) *MockTerraformExecutor
NewMockTerraformExecutor creates a new mock instance.
func (*MockTerraformExecutor) Delete ¶
func (m *MockTerraformExecutor) Delete(arg0 context.Context, arg1 Options) error
Delete mocks base method.
func (*MockTerraformExecutor) EXPECT ¶
func (m *MockTerraformExecutor) EXPECT() *MockTerraformExecutorMockRecorder
EXPECT returns an object that allows the caller to indicate expected use.
func (*MockTerraformExecutor) GetRecipeMetadata ¶
func (m *MockTerraformExecutor) GetRecipeMetadata(arg0 context.Context, arg1 Options) (map[string]any, error)
GetRecipeMetadata mocks base method.
type MockTerraformExecutorDeleteCall ¶ added in v0.35.0
MockTerraformExecutorDeleteCall wrap *gomock.Call
func (*MockTerraformExecutorDeleteCall) Do ¶ added in v0.35.0
func (c *MockTerraformExecutorDeleteCall) Do(f func(context.Context, Options) error) *MockTerraformExecutorDeleteCall
Do rewrite *gomock.Call.Do
func (*MockTerraformExecutorDeleteCall) DoAndReturn ¶ added in v0.35.0
func (c *MockTerraformExecutorDeleteCall) DoAndReturn(f func(context.Context, Options) error) *MockTerraformExecutorDeleteCall
DoAndReturn rewrite *gomock.Call.DoAndReturn
func (*MockTerraformExecutorDeleteCall) Return ¶ added in v0.35.0
func (c *MockTerraformExecutorDeleteCall) Return(arg0 error) *MockTerraformExecutorDeleteCall
Return rewrite *gomock.Call.Return
type MockTerraformExecutorDeployCall ¶ added in v0.35.0
MockTerraformExecutorDeployCall wrap *gomock.Call
func (*MockTerraformExecutorDeployCall) Do ¶ added in v0.35.0
func (c *MockTerraformExecutorDeployCall) Do(f func(context.Context, Options) (*tfjson.State, error)) *MockTerraformExecutorDeployCall
Do rewrite *gomock.Call.Do
func (*MockTerraformExecutorDeployCall) DoAndReturn ¶ added in v0.35.0
func (c *MockTerraformExecutorDeployCall) DoAndReturn(f func(context.Context, Options) (*tfjson.State, error)) *MockTerraformExecutorDeployCall
DoAndReturn rewrite *gomock.Call.DoAndReturn
func (*MockTerraformExecutorDeployCall) Return ¶ added in v0.35.0
func (c *MockTerraformExecutorDeployCall) Return(arg0 *tfjson.State, arg1 error) *MockTerraformExecutorDeployCall
Return rewrite *gomock.Call.Return
type MockTerraformExecutorGetRecipeMetadataCall ¶ added in v0.35.0
MockTerraformExecutorGetRecipeMetadataCall wrap *gomock.Call
func (*MockTerraformExecutorGetRecipeMetadataCall) Do ¶ added in v0.35.0
func (c *MockTerraformExecutorGetRecipeMetadataCall) Do(f func(context.Context, Options) (map[string]any, error)) *MockTerraformExecutorGetRecipeMetadataCall
Do rewrite *gomock.Call.Do
func (*MockTerraformExecutorGetRecipeMetadataCall) DoAndReturn ¶ added in v0.35.0
func (c *MockTerraformExecutorGetRecipeMetadataCall) DoAndReturn(f func(context.Context, Options) (map[string]any, error)) *MockTerraformExecutorGetRecipeMetadataCall
DoAndReturn rewrite *gomock.Call.DoAndReturn
func (*MockTerraformExecutorGetRecipeMetadataCall) Return ¶ added in v0.35.0
func (c *MockTerraformExecutorGetRecipeMetadataCall) Return(arg0 map[string]any, arg1 error) *MockTerraformExecutorGetRecipeMetadataCall
Return rewrite *gomock.Call.Return
type MockTerraformExecutorMockRecorder ¶
type MockTerraformExecutorMockRecorder struct {
// contains filtered or unexported fields
}
MockTerraformExecutorMockRecorder is the mock recorder for MockTerraformExecutor.
func (*MockTerraformExecutorMockRecorder) Delete ¶
func (mr *MockTerraformExecutorMockRecorder) Delete(arg0, arg1 any) *MockTerraformExecutorDeleteCall
Delete indicates an expected call of Delete.
func (*MockTerraformExecutorMockRecorder) Deploy ¶
func (mr *MockTerraformExecutorMockRecorder) Deploy(arg0, arg1 any) *MockTerraformExecutorDeployCall
Deploy indicates an expected call of Deploy.
func (*MockTerraformExecutorMockRecorder) GetRecipeMetadata ¶
func (mr *MockTerraformExecutorMockRecorder) GetRecipeMetadata(arg0, arg1 any) *MockTerraformExecutorGetRecipeMetadataCall
GetRecipeMetadata indicates an expected call of GetRecipeMetadata.
type Options ¶
type Options struct {
// RootDir is the root directory of where Terraform is installed and executed for a specific recipe deployment/deletion request.
RootDir string
// EnvConfig is the kubernetes runtime and cloud provider configuration for the Radius Environment in which the application consuming the terraform recipe will be deployed.
EnvConfig *recipes.Configuration
// EnvRecipe is the recipe metadata associated with the Radius Environment in which the application consuming the terraform recipe will be deployed.
EnvRecipe *recipes.EnvironmentDefinition
// ResourceRecipe is recipe metadata associated with the Radius resource deploying the Terraform recipe.
ResourceRecipe *recipes.ResourceMetadata
// Secrets represents a map of secrets required for recipe execution.
// The map's key represents the secretStoreIDs while the value represents the secret data.
Secrets map[string]recipes.SecretData
// StateLockTimeout is the timeout duration for acquiring Terraform state locks.
// If not specified, Terraform's default timeout will be used.
StateLockTimeout string
}
Options represents the options required to build inputs to interact with Terraform.
type TerraformExecutor ¶
type TerraformExecutor interface {
// Deploy installs terraform and runs terraform init and apply on the terraform module referenced by the recipe using terraform-exec.
Deploy(ctx context.Context, options Options) (*tfjson.State, error)
// Delete installs terraform and runs terraform destroy on the terraform module referenced by the recipe using terraform-exec,
// and deletes the Kubernetes secret created for terraform state store.
Delete(ctx context.Context, options Options) error
// GetRecipeMetadata installs terraform and runs terraform get to retrieve information on the terraform module
GetRecipeMetadata(ctx context.Context, options Options) (map[string]any, error)
}