variable

package
v0.1.15 Latest Latest
Warning

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

Go to latest
Published: Oct 27, 2023 License: MPL-2.0 Imports: 31 Imported by: 0

Documentation

Overview

Package variable manages terraform workspace variables

Index

Constants

View Source
const (
	// https://developer.hashicorp.com/terraform/cloud-docs/workspaces/variables/managing-variables#character-limits
	VariableDescriptionMaxChars = 512
	VariableKeyMaxChars         = 128
	VariableValueMaxKB          = 256 // 256*1024 bytes
)

Variables

View Source
var (
	ErrVariableDescriptionMaxExceeded = fmt.Errorf("maximum variable description size (%d chars) exceeded", VariableDescriptionMaxChars)
	ErrVariableKeyMaxExceeded         = fmt.Errorf("maximum variable key size (%d chars) exceeded", VariableKeyMaxChars)
	ErrVariableValueMaxExceeded       = fmt.Errorf("maximum variable value size of %d KB exceeded", VariableValueMaxKB)
	ErrVariableConflict               = errors.New("variable conflicts with another variable with the same name and type")
)

Functions

func NewService

func NewService(opts Options) *service

func WriteTerraformVars

func WriteTerraformVars(dir string, vars []*Variable) error

WriteTerraformVars writes workspace variables to a file named terraform.tfvars located in the given path. If the file already exists it'll be appended to.

Types

type Client

type Client struct {
	internal.JSONAPIClient
}

func (*Client) ListEffectiveVariables added in v0.1.9

func (c *Client) ListEffectiveVariables(ctx context.Context, runID string) ([]*Variable, error)

type CreateVariableOptions

type CreateVariableOptions struct {
	Key         *string
	Value       *string
	Description *string
	Category    *VariableCategory
	Sensitive   *bool
	HCL         *bool
	// contains filtered or unexported fields
}

type CreateVariableSetOptions added in v0.1.9

type CreateVariableSetOptions struct {
	Name        string
	Description string
	Global      bool
	Workspaces  []string // workspace IDs
}

type Options

type Options struct {
	WorkspaceAuthorizer internal.Authorizer
	WorkspaceService    workspace.Service

	*sql.DB
	*tfeapi.Responder
	html.Renderer
	logr.Logger
	run.RunService
}

type Service

type Service interface {
	// ListEffectiveVariables lists the effective variables for a run, i.e.
	// merging variable sets, workspace variables, and run variables, and
	// removing those that are overridden according to precedence rules.
	ListEffectiveVariables(ctx context.Context, runID string) ([]*Variable, error)

	CreateWorkspaceVariable(ctx context.Context, workspaceID string, opts CreateVariableOptions) (*Variable, error)
	UpdateWorkspaceVariable(ctx context.Context, variableID string, opts UpdateVariableOptions) (*WorkspaceVariable, error)
	ListWorkspaceVariables(ctx context.Context, workspaceID string) ([]*Variable, error)
	GetWorkspaceVariable(ctx context.Context, variableID string) (*WorkspaceVariable, error)
	DeleteWorkspaceVariable(ctx context.Context, variableID string) (*WorkspaceVariable, error)
	// contains filtered or unexported methods
}

type UpdateVariableOptions

type UpdateVariableOptions struct {
	Key         *string
	Value       *string
	Description *string
	Category    *VariableCategory
	Sensitive   *bool
	HCL         *bool
	// contains filtered or unexported fields
}

type UpdateVariableSetOptions added in v0.1.9

type UpdateVariableSetOptions struct {
	Name        *string
	Description *string
	Global      *bool
	Workspaces  []string // workspace IDs
}

type Variable

type Variable struct {
	ID          string           `jsonapi:"primary,variables"`
	Key         string           `jsonapi:"attribute" json:"key"`
	Value       string           `jsonapi:"attribute" json:"value"`
	Description string           `jsonapi:"attribute" json:"description"`
	Category    VariableCategory `jsonapi:"attribute" json:"category"`
	Sensitive   bool             `jsonapi:"attribute" json:"sensitive"`
	HCL         bool             `jsonapi:"attribute" json:"hcl"`

	// OTF doesn't use this internally but the go-tfe integration tests
	// expect it to be a random value that changes on every update.
	VersionID string
}

func (*Variable) LogValue

func (v *Variable) LogValue() slog.Value

func (*Variable) Matches added in v0.1.9

func (v *Variable) Matches(vars []*Variable) bool

Matches determines whether variable is contained in vars, i.e. shares the same ID.

type VariableCategory

type VariableCategory string

VariableCategory is the category of variable

const (
	CategoryTerraform VariableCategory = "terraform"
	CategoryEnv       VariableCategory = "env"
)

func VariableCategoryPtr

func VariableCategoryPtr(v VariableCategory) *VariableCategory

VariableCategoryPtr returns a pointer to the given category type.

type VariableService

type VariableService = Service

type VariableSet added in v0.1.9

type VariableSet struct {
	ID           string
	Name         string
	Description  string
	Global       bool
	Workspaces   []string // workspace IDs
	Organization string   // org name
	Variables    []*Variable
}

VariableSet is a set of variables

func (*VariableSet) LogValue added in v0.1.9

func (s *VariableSet) LogValue() slog.Value

type WorkspaceVariable added in v0.1.9

type WorkspaceVariable struct {
	*Variable
	WorkspaceID string
}

Jump to

Keyboard shortcuts

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