Documentation
¶
Index ¶
- Constants
- Variables
- func CloseDebugInfo() error
- func Eval(n EvalNode, ctx EvalContext) (interface{}, error)
- func EvalRaw(n EvalNode, ctx EvalContext) (interface{}, error)
- func GraphDot(g *Graph, opts *dag.DotOpts) (string, error)
- func ParseResourceIndex(s string) (int, error)
- func ParseResourcePath(s string) []string
- func PathCacheKey(path []string) string
- func ProviderHasDataSource(p ResourceProvider, n string) bool
- func ProviderHasResource(p ResourceProvider, n string) bool
- func ReadStateV1(jsonBytes []byte) (*stateV1, error)
- func ReferenceFromInterpolatedVar(v config.InterpolatedVariable) []string
- func ReferenceModulePath(p []string) []string
- func ReferencesFromConfig(c *config.RawConfig) []string
- func SetDebugInfo(path string) error
- func Variables(m *module.Tree, override map[string]interface{}) (map[string]interface{}, error)
- func VersionString() string
- func WritePlan(d *Plan, dst io.Writer) error
- func WriteState(d *State, dst io.Writer) error
- type AddOutputOrphanTransformer
- type ApplyGraphBuilder
- type AttachProviderConfigTransformer
- type AttachResourceConfigTransformer
- type AttachStateTransformer
- type BasicGraphBuilder
- type BuiltinEvalContext
- func (ctx *BuiltinEvalContext) CloseProvider(n string) error
- func (ctx *BuiltinEvalContext) CloseProvisioner(n string) error
- func (ctx *BuiltinEvalContext) ConfigureProvider(n string, cfg *ResourceConfig) error
- func (ctx *BuiltinEvalContext) Diff() (*Diff, *sync.RWMutex)
- func (ctx *BuiltinEvalContext) Hook(fn func(Hook) (HookAction, error)) error
- func (ctx *BuiltinEvalContext) InitProvider(n string) (ResourceProvider, error)
- func (ctx *BuiltinEvalContext) InitProvisioner(n string) (ResourceProvisioner, error)
- func (ctx *BuiltinEvalContext) Input() UIInput
- func (ctx *BuiltinEvalContext) Interpolate(cfg *config.RawConfig, r *Resource) (*ResourceConfig, error)
- func (ctx *BuiltinEvalContext) ParentProviderConfig(n string) *ResourceConfig
- func (ctx *BuiltinEvalContext) Path() []string
- func (ctx *BuiltinEvalContext) Provider(n string) ResourceProvider
- func (ctx *BuiltinEvalContext) ProviderInput(n string) map[string]interface{}
- func (ctx *BuiltinEvalContext) Provisioner(n string) ResourceProvisioner
- func (ctx *BuiltinEvalContext) SetProviderConfig(n string, cfg *ResourceConfig) error
- func (ctx *BuiltinEvalContext) SetProviderInput(n string, c map[string]interface{})
- func (ctx *BuiltinEvalContext) SetVariables(n string, vs map[string]interface{})
- func (ctx *BuiltinEvalContext) State() (*State, *sync.RWMutex)
- type BuiltinGraphBuilder
- type CBDEdgeTransformer
- type CallbackUIOutput
- type CloseProviderTransformer
- type CloseProvisionerTransformer
- type ConcreteProviderNodeFunc
- type ConcreteResourceNodeFunc
- type ConfigTransformer
- type ConfigTransformerOld
- type Context
- func (c *Context) Apply() (*State, error)
- func (c *Context) Graph(typ GraphType, opts *ContextGraphOpts) (*Graph, error)
- func (c *Context) Import(opts *ImportOpts) (*State, error)
- func (c *Context) Input(mode InputMode) error
- func (c *Context) Interpolater() *Interpolater
- func (c *Context) Module() *module.Tree
- func (c *Context) Plan() (*Plan, error)
- func (c *Context) Refresh() (*State, error)
- func (c *Context) SetVariable(k string, v interface{})
- func (c *Context) ShadowError() error
- func (c *Context) Stop()
- func (c *Context) Validate() ([]string, []error)
- func (c *Context) Variables() map[string]interface{}
- type ContextGraphOpts
- type ContextGraphWalker
- type ContextOpts
- type CountBoundaryTransformer
- type CreateBeforeDestroyTransformer
- type DataSource
- type DebugHook
- func (*DebugHook) PostApply(ii *InstanceInfo, is *InstanceState, err error) (HookAction, error)
- func (*DebugHook) PostDiff(ii *InstanceInfo, id *InstanceDiff) (HookAction, error)
- func (*DebugHook) PostImportState(ii *InstanceInfo, iss []*InstanceState) (HookAction, error)
- func (*DebugHook) PostProvision(ii *InstanceInfo, s string) (HookAction, error)
- func (*DebugHook) PostProvisionResource(ii *InstanceInfo, is *InstanceState) (HookAction, error)
- func (*DebugHook) PostRefresh(ii *InstanceInfo, is *InstanceState) (HookAction, error)
- func (*DebugHook) PostStateUpdate(*State) (HookAction, error)
- func (*DebugHook) PreApply(ii *InstanceInfo, is *InstanceState, id *InstanceDiff) (HookAction, error)
- func (*DebugHook) PreDiff(ii *InstanceInfo, is *InstanceState) (HookAction, error)
- func (*DebugHook) PreImportState(ii *InstanceInfo, s string) (HookAction, error)
- func (*DebugHook) PreProvision(ii *InstanceInfo, s string) (HookAction, error)
- func (*DebugHook) PreProvisionResource(ii *InstanceInfo, is *InstanceState) (HookAction, error)
- func (*DebugHook) PreRefresh(ii *InstanceInfo, is *InstanceState) (HookAction, error)
- func (*DebugHook) ProvisionOutput(ii *InstanceInfo, s1 string, s2 string)
- type DeposedTransformer
- type DestroyEdge
- type DestroyEdgeTransformer
- type DestroyPlanGraphBuilder
- type DestroyTransformer
- type Diff
- type DiffAttrType
- type DiffChangeType
- type DiffTransformer
- type DisableProviderTransformer
- type DisableProviderTransformerOld
- type EphemeralState
- type EvalApply
- type EvalApplyPost
- type EvalApplyProvisioners
- type EvalBuildProviderConfig
- type EvalCheckPreventDestroy
- type EvalClearPrimaryState
- type EvalCloseProvider
- type EvalCloseProvisioner
- type EvalCoerceMapVariable
- type EvalCompareDiff
- type EvalConfigProvider
- type EvalContext
- type EvalCountCheckComputed
- type EvalCountFixZeroOneBoundary
- type EvalCountFixZeroOneBoundaryGlobal
- type EvalDeleteOutput
- type EvalDeposeState
- type EvalDiff
- type EvalDiffDestroy
- type EvalDiffDestroyModule
- type EvalEarlyExitError
- type EvalFilterDiff
- type EvalGetProvider
- type EvalGetProvisioner
- type EvalIf
- type EvalImportState
- type EvalImportStateVerify
- type EvalInitProvider
- type EvalInitProvisioner
- type EvalInputProvider
- type EvalInstanceInfo
- type EvalInterpolate
- type EvalNode
- type EvalNodeFilterFunc
- type EvalNodeFilterable
- type EvalNodeOpFilterable
- type EvalNoop
- type EvalOpFilter
- type EvalReadDataApply
- type EvalReadDataDiff
- type EvalReadDiff
- type EvalReadState
- type EvalReadStateDeposed
- type EvalRefresh
- type EvalRequireState
- type EvalReturnError
- type EvalSequence
- type EvalSetProviderConfig
- type EvalSetVariables
- type EvalTypeCheckVariable
- type EvalUndeposeState
- type EvalUpdateStateHook
- type EvalValidateCount
- type EvalValidateError
- type EvalValidateProvider
- type EvalValidateProvisioner
- type EvalValidateResource
- type EvalVariableBlock
- type EvalWriteDiff
- type EvalWriteOutput
- type EvalWriteState
- type EvalWriteStateDeposed
- type ExpandTransform
- type FlatConfigTransformer
- type FlattenTransformer
- type Graph
- func (g *Graph) Add(v dag.Vertex) dag.Vertex
- func (g *Graph) Annotations(v dag.Vertex) map[string]interface{}
- func (g *Graph) ConnectDependent(raw dag.Vertex) []string
- func (g *Graph) ConnectDependents()
- func (g *Graph) ConnectFrom(source string, target dag.Vertex)
- func (g *Graph) ConnectTo(v dag.Vertex, targets []string) []string
- func (g *Graph) Dependable(n string) dag.Vertex
- func (g *Graph) DirectedGraph() dag.Grapher
- func (g *Graph) Remove(v dag.Vertex) dag.Vertex
- func (g *Graph) Replace(o, n dag.Vertex) bool
- func (g *Graph) Walk(walker GraphWalker) error
- type GraphBuilder
- type GraphNodeAddressable
- type GraphNodeAnnotationInit
- type GraphNodeAttachProvider
- type GraphNodeAttachResourceConfig
- type GraphNodeAttachResourceState
- type GraphNodeBasicSubgraph
- type GraphNodeCloseProvider
- type GraphNodeCloseProvisioner
- type GraphNodeConfigModule
- func (n *GraphNodeConfigModule) ConfigType() GraphNodeConfigType
- func (n *GraphNodeConfigModule) DependableName() []string
- func (n *GraphNodeConfigModule) DependentOn() []string
- func (n *GraphNodeConfigModule) Expand(b GraphBuilder) (GraphNodeSubgraph, error)
- func (n *GraphNodeConfigModule) Name() string
- func (n *GraphNodeConfigModule) ProvidedBy() []string
- type GraphNodeConfigOutput
- func (n *GraphNodeConfigOutput) ConfigType() GraphNodeConfigType
- func (n *GraphNodeConfigOutput) DependableName() []string
- func (n *GraphNodeConfigOutput) DependentOn() []string
- func (n *GraphNodeConfigOutput) DestroyEdgeInclude(dag.Vertex) bool
- func (n *GraphNodeConfigOutput) EvalTree() EvalNode
- func (n *GraphNodeConfigOutput) Flatten(p []string) (dag.Vertex, error)
- func (n *GraphNodeConfigOutput) Name() string
- func (n *GraphNodeConfigOutput) OutputName() string
- func (n *GraphNodeConfigOutput) Proxy() bool
- type GraphNodeConfigOutputFlat
- type GraphNodeConfigProvider
- func (n *GraphNodeConfigProvider) ConfigType() GraphNodeConfigType
- func (n *GraphNodeConfigProvider) DependableName() []string
- func (n *GraphNodeConfigProvider) DependentOn() []string
- func (n *GraphNodeConfigProvider) DotNode(name string, opts *dag.DotOpts) *dag.DotNode
- func (n *GraphNodeConfigProvider) DotOrigin() bool
- func (n *GraphNodeConfigProvider) EvalTree() EvalNode
- func (n *GraphNodeConfigProvider) Flatten(p []string) (dag.Vertex, error)
- func (n *GraphNodeConfigProvider) Name() string
- func (n *GraphNodeConfigProvider) ProviderConfig() *config.RawConfig
- func (n *GraphNodeConfigProvider) ProviderName() string
- type GraphNodeConfigProviderFlat
- type GraphNodeConfigResource
- func (n *GraphNodeConfigResource) ConfigType() GraphNodeConfigType
- func (n *GraphNodeConfigResource) Copy() *GraphNodeConfigResource
- func (n *GraphNodeConfigResource) CountDependentOn() []string
- func (n *GraphNodeConfigResource) DependableName() []string
- func (n *GraphNodeConfigResource) DependentOn() []string
- func (n *GraphNodeConfigResource) DestroyNode() GraphNodeDestroy
- func (n *GraphNodeConfigResource) DotNode(name string, opts *dag.DotOpts) *dag.DotNode
- func (n *GraphNodeConfigResource) DynamicExpand(ctx EvalContext) (*Graph, error)
- func (n *GraphNodeConfigResource) EvalTree() EvalNode
- func (n *GraphNodeConfigResource) Flatten(p []string) (dag.Vertex, error)
- func (n *GraphNodeConfigResource) Name() string
- func (n *GraphNodeConfigResource) Noop(opts *NoopOpts) bool
- func (n *GraphNodeConfigResource) ProvidedBy() []string
- func (n *GraphNodeConfigResource) ProvisionedBy() []string
- func (n *GraphNodeConfigResource) ResourceAddress() *ResourceAddress
- func (n *GraphNodeConfigResource) SetTargets(targets []ResourceAddress)
- func (n *GraphNodeConfigResource) VarWalk(fn func(config.InterpolatedVariable))
- type GraphNodeConfigResourceFlat
- func (n *GraphNodeConfigResourceFlat) DependableName() []string
- func (n *GraphNodeConfigResourceFlat) DependentOn() []string
- func (n *GraphNodeConfigResourceFlat) DestroyNode() GraphNodeDestroy
- func (n *GraphNodeConfigResourceFlat) Name() string
- func (n *GraphNodeConfigResourceFlat) Path() []string
- func (n *GraphNodeConfigResourceFlat) ProvidedBy() []string
- func (n *GraphNodeConfigResourceFlat) ProvisionedBy() []string
- type GraphNodeConfigType
- type GraphNodeConfigVariable
- func (n *GraphNodeConfigVariable) ConfigType() GraphNodeConfigType
- func (n *GraphNodeConfigVariable) DependableName() []string
- func (n *GraphNodeConfigVariable) DependentOn() []string
- func (n *GraphNodeConfigVariable) DestroyEdgeInclude(v dag.Vertex) bool
- func (n *GraphNodeConfigVariable) EvalTree() EvalNode
- func (n *GraphNodeConfigVariable) Flatten(p []string) (dag.Vertex, error)
- func (n *GraphNodeConfigVariable) Name() string
- func (n *GraphNodeConfigVariable) Noop(opts *NoopOpts) bool
- func (n *GraphNodeConfigVariable) Proxy() bool
- func (n *GraphNodeConfigVariable) RemoveIfNotTargeted() bool
- func (n *GraphNodeConfigVariable) VariableName() string
- type GraphNodeConfigVariableFlat
- type GraphNodeCountDependent
- type GraphNodeCreator
- type GraphNodeDependable
- type GraphNodeDependent
- type GraphNodeDestroy
- type GraphNodeDestroyEdgeInclude
- type GraphNodeDestroyPrunable
- type GraphNodeDestroyable
- type GraphNodeDestroyer
- type GraphNodeDestroyerCBD
- type GraphNodeDynamicExpandable
- type GraphNodeEvalable
- type GraphNodeExpandable
- type GraphNodeFlatGraph
- type GraphNodeFlattenable
- type GraphNodeNoopPrunable
- type GraphNodeOutput
- type GraphNodeProvider
- type GraphNodeProviderConsumer
- type GraphNodeProvisioner
- type GraphNodeProvisionerConsumer
- type GraphNodeProxy
- type GraphNodeReferenceGlobal
- type GraphNodeReferenceable
- type GraphNodeReferencer
- type GraphNodeResource
- type GraphNodeStateRepresentative
- type GraphNodeSubPath
- type GraphNodeSubgraph
- type GraphNodeTargetable
- type GraphProxyEdge
- type GraphSemanticChecker
- type GraphTransformer
- type GraphType
- type GraphVertexTransformer
- type GraphWalker
- type GraphWalkerPanicwrapper
- type Hook
- type HookAction
- type ImportGraphBuilder
- type ImportOpts
- type ImportProviderValidateTransformer
- type ImportStateTransformer
- type ImportTarget
- type InputMode
- type InputOpts
- type InstanceDiff
- func (d *InstanceDiff) ChangeType() DiffChangeType
- func (d *InstanceDiff) Copy() (*InstanceDiff, error)
- func (d *InstanceDiff) CopyAttributes() map[string]*ResourceAttrDiff
- func (d *InstanceDiff) DeepCopy() *InstanceDiff
- func (d *InstanceDiff) DelAttribute(key string)
- func (d *InstanceDiff) Empty() bool
- func (d *InstanceDiff) Equal(d2 *InstanceDiff) bool
- func (d *InstanceDiff) GetAttribute(key string) (*ResourceAttrDiff, bool)
- func (d *InstanceDiff) GetAttributesLen() int
- func (d *InstanceDiff) GetDestroy() bool
- func (d *InstanceDiff) GetDestroyDeposed() bool
- func (d *InstanceDiff) GetDestroyTainted() bool
- func (d *InstanceDiff) GoString() string
- func (d *InstanceDiff) Lock()
- func (d *InstanceDiff) RequiresNew() bool
- func (d *InstanceDiff) Same(d2 *InstanceDiff) (bool, string)
- func (d *InstanceDiff) SetAttribute(key string, attr *ResourceAttrDiff)
- func (d *InstanceDiff) SetDestroy(b bool)
- func (d *InstanceDiff) SetDestroyDeposed(b bool)
- func (d *InstanceDiff) SetTainted(b bool)
- func (d *InstanceDiff) Unlock()
- type InstanceInfo
- type InstanceState
- func (s *InstanceState) DeepCopy() *InstanceState
- func (s *InstanceState) Empty() bool
- func (s *InstanceState) Equal(other *InstanceState) bool
- func (s *InstanceState) Lock()
- func (s *InstanceState) MergeDiff(d *InstanceDiff) *InstanceState
- func (s *InstanceState) Set(from *InstanceState)
- func (s *InstanceState) String() string
- func (s *InstanceState) Unlock()
- type InstanceType
- type Interpolater
- type InterpolationScope
- type MissingProviderTransformer
- type MissingProvisionerTransformer
- type MockEvalContext
- func (c *MockEvalContext) CloseProvider(n string) error
- func (c *MockEvalContext) CloseProvisioner(n string) error
- func (c *MockEvalContext) ConfigureProvider(n string, cfg *ResourceConfig) error
- func (c *MockEvalContext) Diff() (*Diff, *sync.RWMutex)
- func (c *MockEvalContext) Hook(fn func(Hook) (HookAction, error)) error
- func (c *MockEvalContext) InitProvider(n string) (ResourceProvider, error)
- func (c *MockEvalContext) InitProvisioner(n string) (ResourceProvisioner, error)
- func (c *MockEvalContext) Input() UIInput
- func (c *MockEvalContext) Interpolate(config *config.RawConfig, resource *Resource) (*ResourceConfig, error)
- func (c *MockEvalContext) ParentProviderConfig(n string) *ResourceConfig
- func (c *MockEvalContext) Path() []string
- func (c *MockEvalContext) Provider(n string) ResourceProvider
- func (c *MockEvalContext) ProviderInput(n string) map[string]interface{}
- func (c *MockEvalContext) Provisioner(n string) ResourceProvisioner
- func (c *MockEvalContext) SetProviderConfig(n string, cfg *ResourceConfig) error
- func (c *MockEvalContext) SetProviderInput(n string, cfg map[string]interface{})
- func (c *MockEvalContext) SetVariables(n string, vs map[string]interface{})
- func (c *MockEvalContext) State() (*State, *sync.RWMutex)
- type MockHook
- func (h *MockHook) PostApply(n *InstanceInfo, s *InstanceState, e error) (HookAction, error)
- func (h *MockHook) PostDiff(n *InstanceInfo, d *InstanceDiff) (HookAction, error)
- func (h *MockHook) PostImportState(info *InstanceInfo, s []*InstanceState) (HookAction, error)
- func (h *MockHook) PostProvision(n *InstanceInfo, provId string) (HookAction, error)
- func (h *MockHook) PostProvisionResource(n *InstanceInfo, s *InstanceState) (HookAction, error)
- func (h *MockHook) PostRefresh(n *InstanceInfo, s *InstanceState) (HookAction, error)
- func (h *MockHook) PostStateUpdate(s *State) (HookAction, error)
- func (h *MockHook) PreApply(n *InstanceInfo, s *InstanceState, d *InstanceDiff) (HookAction, error)
- func (h *MockHook) PreDiff(n *InstanceInfo, s *InstanceState) (HookAction, error)
- func (h *MockHook) PreImportState(info *InstanceInfo, id string) (HookAction, error)
- func (h *MockHook) PreProvision(n *InstanceInfo, provId string) (HookAction, error)
- func (h *MockHook) PreProvisionResource(n *InstanceInfo, s *InstanceState) (HookAction, error)
- func (h *MockHook) PreRefresh(n *InstanceInfo, s *InstanceState) (HookAction, error)
- func (h *MockHook) ProvisionOutput(n *InstanceInfo, provId string, msg string)
- type MockResourceProvider
- func (p *MockResourceProvider) Apply(info *InstanceInfo, state *InstanceState, diff *InstanceDiff) (*InstanceState, error)
- func (p *MockResourceProvider) Close() error
- func (p *MockResourceProvider) Configure(c *ResourceConfig) error
- func (p *MockResourceProvider) DataSources() []DataSource
- func (p *MockResourceProvider) Diff(info *InstanceInfo, state *InstanceState, desired *ResourceConfig) (*InstanceDiff, error)
- func (p *MockResourceProvider) ImportState(info *InstanceInfo, id string) ([]*InstanceState, error)
- func (p *MockResourceProvider) Input(input UIInput, c *ResourceConfig) (*ResourceConfig, error)
- func (p *MockResourceProvider) ReadDataApply(info *InstanceInfo, d *InstanceDiff) (*InstanceState, error)
- func (p *MockResourceProvider) ReadDataDiff(info *InstanceInfo, desired *ResourceConfig) (*InstanceDiff, error)
- func (p *MockResourceProvider) Refresh(info *InstanceInfo, s *InstanceState) (*InstanceState, error)
- func (p *MockResourceProvider) Resources() []ResourceType
- func (p *MockResourceProvider) Stop() error
- func (p *MockResourceProvider) Validate(c *ResourceConfig) ([]string, []error)
- func (p *MockResourceProvider) ValidateDataSource(t string, c *ResourceConfig) ([]string, []error)
- func (p *MockResourceProvider) ValidateResource(t string, c *ResourceConfig) ([]string, []error)
- type MockResourceProvisioner
- type MockUIInput
- type MockUIOutput
- type ModuleDestroyTransformerOld
- type ModuleDiff
- type ModuleState
- func (m *ModuleState) Equal(other *ModuleState) bool
- func (m *ModuleState) IsDescendent(other *ModuleState) bool
- func (m *ModuleState) IsRoot() bool
- func (s *ModuleState) Lock()
- func (m *ModuleState) Orphans(c *config.Config) []string
- func (m *ModuleState) String() string
- func (s *ModuleState) Unlock()
- func (m *ModuleState) View(id string) *ModuleState
- type ModuleVariableTransformer
- type NilHook
- func (*NilHook) PostApply(*InstanceInfo, *InstanceState, error) (HookAction, error)
- func (*NilHook) PostDiff(*InstanceInfo, *InstanceDiff) (HookAction, error)
- func (*NilHook) PostImportState(*InstanceInfo, []*InstanceState) (HookAction, error)
- func (*NilHook) PostProvision(*InstanceInfo, string) (HookAction, error)
- func (*NilHook) PostProvisionResource(*InstanceInfo, *InstanceState) (HookAction, error)
- func (*NilHook) PostRefresh(*InstanceInfo, *InstanceState) (HookAction, error)
- func (*NilHook) PostStateUpdate(*State) (HookAction, error)
- func (*NilHook) PreApply(*InstanceInfo, *InstanceState, *InstanceDiff) (HookAction, error)
- func (*NilHook) PreDiff(*InstanceInfo, *InstanceState) (HookAction, error)
- func (*NilHook) PreImportState(*InstanceInfo, string) (HookAction, error)
- func (*NilHook) PreProvision(*InstanceInfo, string) (HookAction, error)
- func (*NilHook) PreProvisionResource(*InstanceInfo, *InstanceState) (HookAction, error)
- func (*NilHook) PreRefresh(*InstanceInfo, *InstanceState) (HookAction, error)
- func (*NilHook) ProvisionOutput(*InstanceInfo, string, string)
- type NodeAbstractProvider
- func (n *NodeAbstractProvider) AttachProvider(c *config.ProviderConfig)
- func (n *NodeAbstractProvider) DotNode(name string, opts *dag.DotOpts) *dag.DotNode
- func (n *NodeAbstractProvider) Name() string
- func (n *NodeAbstractProvider) Path() []string
- func (n *NodeAbstractProvider) ProviderConfig() *config.RawConfig
- func (n *NodeAbstractProvider) ProviderName() string
- func (n *NodeAbstractProvider) References() []string
- type NodeAbstractResource
- func (n *NodeAbstractResource) AttachResourceConfig(c *config.Resource)
- func (n *NodeAbstractResource) AttachResourceState(s *ResourceState)
- func (n *NodeAbstractResource) DotNode(name string, opts *dag.DotOpts) *dag.DotNode
- func (n *NodeAbstractResource) Name() string
- func (n *NodeAbstractResource) Path() []string
- func (n *NodeAbstractResource) ProvidedBy() []string
- func (n *NodeAbstractResource) ProvisionedBy() []string
- func (n *NodeAbstractResource) ReferenceableName() []string
- func (n *NodeAbstractResource) References() []string
- func (n *NodeAbstractResource) ResourceAddr() *ResourceAddress
- func (n *NodeAbstractResource) ResourceAddress() *ResourceAddress
- func (n *NodeAbstractResource) SetTargets(targets []ResourceAddress)
- type NodeApplyableModuleVariable
- func (n *NodeApplyableModuleVariable) EvalTree() EvalNode
- func (n *NodeApplyableModuleVariable) Name() string
- func (n *NodeApplyableModuleVariable) Path() []string
- func (n *NodeApplyableModuleVariable) ReferenceGlobal() bool
- func (n *NodeApplyableModuleVariable) ReferenceableName() []string
- func (n *NodeApplyableModuleVariable) References() []string
- func (n *NodeApplyableModuleVariable) RemoveIfNotTargeted() bool
- type NodeApplyableOutput
- func (n *NodeApplyableOutput) EvalTree() EvalNode
- func (n *NodeApplyableOutput) Name() string
- func (n *NodeApplyableOutput) Path() []string
- func (n *NodeApplyableOutput) ReferenceableName() []string
- func (n *NodeApplyableOutput) References() []string
- func (n *NodeApplyableOutput) RemoveIfNotTargeted() bool
- type NodeApplyableProvider
- type NodeApplyableResource
- type NodeCountBoundary
- type NodeDestroyResource
- func (n *NodeDestroyResource) CreateBeforeDestroy() bool
- func (n *NodeDestroyResource) DestroyAddr() *ResourceAddress
- func (n *NodeDestroyResource) DynamicExpand(ctx EvalContext) (*Graph, error)
- func (n *NodeDestroyResource) EvalTree() EvalNode
- func (n *NodeDestroyResource) ModifyCreateBeforeDestroy(v bool) error
- func (n *NodeDestroyResource) Name() string
- func (n *NodeDestroyResource) ReferenceableName() []string
- func (n *NodeDestroyResource) References() []string
- type NodeDestroyableModuleVariable
- type NodeDisabledProvider
- type NodeOutputOrphan
- type NodePlanDestroyableResource
- type NodePlannableResource
- type NodePlannableResourceInstance
- type NodePlannableResourceOrphan
- type NodeRootVariable
- type NoopOpts
- type NullGraphWalker
- func (NullGraphWalker) EnterEvalTree(v dag.Vertex, n EvalNode) EvalNode
- func (NullGraphWalker) EnterPath([]string) EvalContext
- func (NullGraphWalker) EnterVertex(dag.Vertex)
- func (NullGraphWalker) ExitEvalTree(dag.Vertex, interface{}, error) error
- func (NullGraphWalker) ExitPath([]string)
- func (NullGraphWalker) ExitVertex(dag.Vertex, error)
- type OrphanOutputTransformer
- type OrphanResourceCountTransformer
- type OrphanResourceTransformer
- type OrphanTransformer
- type OutputState
- type OutputTransformer
- type ParentProviderTransformer
- type Plan
- type PlanGraphBuilder
- type PrefixUIInput
- type ProviderTransformer
- type ProvisionerTransformer
- type ProvisionerUIOutput
- type ProxyTransformer
- type PruneDestroyTransformer
- type PruneNoopTransformer
- type PruneProviderTransformer
- type ReferenceMap
- type ReferenceTransformer
- type RemoteState
- type RemovableIfNotTargeted
- type Resource
- type ResourceAddress
- type ResourceAttrDiff
- type ResourceConfig
- func (c *ResourceConfig) CheckSet(keys []string) []error
- func (c *ResourceConfig) DeepCopy() *ResourceConfig
- func (c *ResourceConfig) Equal(c2 *ResourceConfig) bool
- func (c *ResourceConfig) Get(k string) (interface{}, bool)
- func (c *ResourceConfig) GetRaw(k string) (interface{}, bool)
- func (c *ResourceConfig) IsComputed(k string) bool
- func (c *ResourceConfig) IsSet(k string) bool
- type ResourceCountTransformer
- type ResourceCountTransformerOld
- type ResourceFlag
- type ResourceProvider
- type ResourceProviderCloser
- type ResourceProviderFactory
- type ResourceProvisioner
- type ResourceProvisionerCloser
- type ResourceProvisionerConfig
- type ResourceProvisionerFactory
- type ResourceState
- type ResourceStateKey
- type ResourceType
- type RootTransformer
- type RootVariableTransformer
- type SemanticCheckModulesExist
- type SemanticChecker
- type Semaphore
- type Shadow
- type State
- func (s *State) Add(fromAddrRaw string, toAddrRaw string, raw interface{}) error
- func (s *State) AddModule(path []string) *ModuleState
- func (s *State) AddModuleState(mod *ModuleState)
- func (s *State) Children(path []string) []*ModuleState
- func (s *State) CompareAges(other *State) (StateAgeComparison, error)
- func (s *State) DeepCopy() *State
- func (s *State) Empty() bool
- func (s *State) EnsureHasLineage()
- func (s *State) Equal(other *State) bool
- func (s *State) FromFutureTerraform() bool
- func (s *State) HasResources() bool
- func (s *State) IncrementSerialMaybe(other *State)
- func (s *State) Init()
- func (s *State) IsRemote() bool
- func (s *State) Lock()
- func (s *State) ModuleByPath(path []string) *ModuleState
- func (s *State) ModuleOrphans(path []string, c *config.Config) [][]string
- func (s *State) Remove(addr ...string) error
- func (s *State) RootModule() *ModuleState
- func (s *State) SameLineage(other *State) bool
- func (s *State) String() string
- func (s *State) Unlock()
- func (s *State) Validate() error
- type StateAgeComparison
- type StateFilter
- type StateFilterResult
- type StateFilterResultSlice
- type StateTransformer
- type TargetsTransformer
- type TransitiveReductionTransformer
- type UIInput
- type UIOutput
- type UnorderedSemanticCheckRunner
- type VertexTransformer
Constants ¶
const RootModuleName = "root"
RootModuleName is the name given to the root module implicitly.
const (
// StateVersion is the current version for our state file
StateVersion = 3
)
const (
// VarEnvPrefix is the prefix of variables that are read from
// the environment to set variables here.
VarEnvPrefix = "TF_VAR_"
)
const Version = "0.8.8"
The main version number that is being run at the moment.
const VersionHeader = "Terraform-Version"
VersionHeader is the header name used to send the current terraform version in http requests.
const VersionPrerelease = ""
A pre-release marker for the version. If this is "" (empty string) then it means that it is a final release. Otherwise, this is a pre-release such as "dev" (in development), "beta", "rc1", etc.
Variables ¶
var GraphTypeMap = map[string]GraphType{
"apply": GraphTypeApply,
"plan": GraphTypePlan,
"plan-destroy": GraphTypePlanDestroy,
"legacy": GraphTypeLegacy,
}
GraphTypeMap is a mapping of human-readable string to GraphType. This is useful to use as the mechanism for human input for configurable graph types.
var RootModulePath = []string{RootModuleName}
RootModulePath is the path for the root module.
var SemVersion = version.Must(version.NewVersion(Version))
SemVersion is an instance of version.Version. This has the secondary benefit of verifying during tests and init time that our version is a proper semantic version, which should always be the case.
Functions ¶
func CloseDebugInfo ¶ added in v0.7.9
func CloseDebugInfo() error
CloseDebugInfo is the exported interface to Close the debug info handler. The debug handler needs to be closed before program exit, so we export this function to be deferred in the appropriate entrypoint for our executable.
func Eval ¶ added in v0.4.0
func Eval(n EvalNode, ctx EvalContext) (interface{}, error)
Eval evaluates the given EvalNode with the given context, properly evaluating all args in the correct order.
func EvalRaw ¶ added in v0.4.0
func EvalRaw(n EvalNode, ctx EvalContext) (interface{}, error)
EvalRaw is like Eval except that it returns all errors, even if they signal something normal such as EvalEarlyExitError.
func GraphDot ¶
func GraphDot(g *Graph, opts *dag.DotOpts) (string, error)
GraphDot returns the dot formatting of a visual representation of the given Terraform graph.
func ParseResourceIndex ¶ added in v0.5.0
func ParseResourceIndex(s string) (int, error)
func ParseResourcePath ¶ added in v0.5.0
func ParseResourcePath(s string) []string
func PathCacheKey ¶ added in v0.4.0
func PathCacheKey(path []string) string
PathCacheKey returns a cache key for a module path.
TODO: test
func ProviderHasDataSource ¶ added in v0.7.0
func ProviderHasDataSource(p ResourceProvider, n string) bool
func ProviderHasResource ¶ added in v0.7.0
func ProviderHasResource(p ResourceProvider, n string) bool
func ReadStateV1 ¶ added in v0.3.0
func ReadStateV1(jsonBytes []byte) (*stateV1, error)
func ReferenceFromInterpolatedVar ¶ added in v0.7.8
func ReferenceFromInterpolatedVar(v config.InterpolatedVariable) []string
ReferenceFromInterpolatedVar returns the reference from this variable, or an empty string if there is no reference.
func ReferenceModulePath ¶ added in v0.8.0
func ReferenceModulePath(p []string) []string
Returns the reference name for a module path. The path "foo" would return "module.foo". If this is a deeply nested module, it will be every parent as well. For example: ["foo", "bar"] would return both "module.foo" and "module.foo.module.bar"
func ReferencesFromConfig ¶ added in v0.7.8
func ReferencesFromConfig(c *config.RawConfig) []string
ReferencesFromConfig returns the references that a configuration has based on the interpolated variables in a configuration.
func SetDebugInfo ¶ added in v0.7.9
func SetDebugInfo(path string) error
SetDebugInfo initializes the debug handler with a backing file in the provided directory. This must be called before any other terraform package operations or not at all. Once his is called, CloseDebugInfo should be called before program exit.
func Variables ¶ added in v0.7.1
func Variables(
m *module.Tree,
override map[string]interface{}) (map[string]interface{}, error)
Variables returns the fully loaded set of variables to use with ContextOpts and NewContext, loading any additional variables from the environment or any other sources.
The given module tree doesn't need to be loaded.
func VersionString ¶ added in v0.7.0
func VersionString() string
func WritePlan ¶
func WritePlan(d *Plan, dst io.Writer) error
WritePlan writes a plan somewhere in a binary format.
func WriteState ¶
func WriteState(d *State, dst io.Writer) error
WriteState writes a state somewhere in a binary format.
Types ¶
type AddOutputOrphanTransformer ¶ added in v0.5.0
type AddOutputOrphanTransformer struct {
State *State
}
AddOutputOrphanTransformer is a transformer that adds output orphans to the graph. Output orphans are outputs that are no longer in the configuration and therefore need to be removed from the state.
NOTE: This is the _old_ way to add output orphans that is used with legacy graph builders. The new way is OrphanOutputTransformer.
type ApplyGraphBuilder ¶ added in v0.7.8
type ApplyGraphBuilder struct {
// Module is the root module for the graph to build.
Module *module.Tree
// Diff is the diff to apply.
Diff *Diff
// State is the current state
State *State
// Providers is the list of providers supported.
Providers []string
// Provisioners is the list of provisioners supported.
Provisioners []string
// Targets are resources to target. This is only required to make sure
// unnecessary outputs aren't included in the apply graph. The plan
// builder successfully handles targeting resources. In the future,
// outputs should go into the diff so that this is unnecessary.
Targets []string
// DisableReduce, if true, will not reduce the graph. Great for testing.
DisableReduce bool
// Destroy, if true, represents a pure destroy operation
Destroy bool
// Validate will do structural validation of the graph.
Validate bool
}
ApplyGraphBuilder implements GraphBuilder and is responsible for building a graph for applying a Terraform diff.
Because the graph is built from the diff (vs. the config or state), this helps ensure that the apply-time graph doesn't modify any resources that aren't explicitly in the diff. There are other scenarios where the diff can be deviated, so this is just one layer of protection.
type AttachProviderConfigTransformer ¶ added in v0.7.8
type AttachProviderConfigTransformer struct {
Module *module.Tree // Module is the root module for the config
}
AttachProviderConfigTransformer goes through the graph and attaches provider configuration structures to nodes that implement the interfaces above.
The attached configuration structures are directly from the configuration. If they're going to be modified, a copy should be made.
type AttachResourceConfigTransformer ¶ added in v0.7.8
type AttachResourceConfigTransformer struct {
Module *module.Tree // Module is the root module for the config
}
AttachResourceConfigTransformer goes through the graph and attaches resource configuration structures to nodes that implement the interfaces above.
The attached configuration structures are directly from the configuration. If they're going to be modified, a copy should be made.
type AttachStateTransformer ¶ added in v0.7.8
type AttachStateTransformer struct {
State *State // State is the root state
}
AttachStateTransformer goes through the graph and attaches state to nodes that implement the interfaces above.
type BasicGraphBuilder ¶ added in v0.4.0
type BasicGraphBuilder struct {
Steps []GraphTransformer
Validate bool
// Optional name to add to the graph debug log
Name string
}
BasicGraphBuilder is a GraphBuilder that builds a graph out of a series of transforms and (optionally) validates the graph is a valid structure.
type BuiltinEvalContext ¶ added in v0.4.0
type BuiltinEvalContext struct {
// PathValue is the Path that this context is operating within.
PathValue []string
// Interpolater setting below affect the interpolation of variables.
//
// The InterpolaterVars are the exact value for ${var.foo} values.
// The map is shared between all contexts and is a mapping of
// PATH to KEY to VALUE. Because it is shared by all contexts as well
// as the Interpolater itself, it is protected by InterpolaterVarLock
// which must be locked during any access to the map.
Interpolater *Interpolater
InterpolaterVars map[string]map[string]interface{}
InterpolaterVarLock *sync.Mutex
Components contextComponentFactory
Hooks []Hook
InputValue UIInput
ProviderCache map[string]ResourceProvider
ProviderConfigCache map[string]*ResourceConfig
ProviderInputConfig map[string]map[string]interface{}
ProviderLock *sync.Mutex
ProvisionerCache map[string]ResourceProvisioner
ProvisionerLock *sync.Mutex
DiffValue *Diff
DiffLock *sync.RWMutex
StateValue *State
StateLock *sync.RWMutex
// contains filtered or unexported fields
}
BuiltinEvalContext is an EvalContext implementation that is used by Terraform by default.
func (*BuiltinEvalContext) CloseProvider ¶ added in v0.6.0
func (ctx *BuiltinEvalContext) CloseProvider(n string) error
func (*BuiltinEvalContext) CloseProvisioner ¶ added in v0.6.0
func (ctx *BuiltinEvalContext) CloseProvisioner(n string) error
func (*BuiltinEvalContext) ConfigureProvider ¶ added in v0.4.0
func (ctx *BuiltinEvalContext) ConfigureProvider(
n string, cfg *ResourceConfig) error
func (*BuiltinEvalContext) Diff ¶ added in v0.4.0
func (ctx *BuiltinEvalContext) Diff() (*Diff, *sync.RWMutex)
func (*BuiltinEvalContext) Hook ¶ added in v0.4.0
func (ctx *BuiltinEvalContext) Hook(fn func(Hook) (HookAction, error)) error
func (*BuiltinEvalContext) InitProvider ¶ added in v0.4.0
func (ctx *BuiltinEvalContext) InitProvider(n string) (ResourceProvider, error)
func (*BuiltinEvalContext) InitProvisioner ¶ added in v0.4.0
func (ctx *BuiltinEvalContext) InitProvisioner(
n string) (ResourceProvisioner, error)
func (*BuiltinEvalContext) Interpolate ¶ added in v0.4.0
func (ctx *BuiltinEvalContext) Interpolate(
cfg *config.RawConfig, r *Resource) (*ResourceConfig, error)
func (*BuiltinEvalContext) ParentProviderConfig ¶ added in v0.4.0
func (ctx *BuiltinEvalContext) ParentProviderConfig(n string) *ResourceConfig
func (*BuiltinEvalContext) Provider ¶ added in v0.4.0
func (ctx *BuiltinEvalContext) Provider(n string) ResourceProvider
func (*BuiltinEvalContext) ProviderInput ¶ added in v0.4.0
func (ctx *BuiltinEvalContext) ProviderInput(n string) map[string]interface{}
func (*BuiltinEvalContext) Provisioner ¶ added in v0.4.0
func (ctx *BuiltinEvalContext) Provisioner(n string) ResourceProvisioner
func (*BuiltinEvalContext) SetProviderConfig ¶ added in v0.4.1
func (ctx *BuiltinEvalContext) SetProviderConfig(
n string, cfg *ResourceConfig) error
func (*BuiltinEvalContext) SetProviderInput ¶ added in v0.4.0
func (ctx *BuiltinEvalContext) SetProviderInput(n string, c map[string]interface{})
func (*BuiltinEvalContext) SetVariables ¶ added in v0.4.0
func (ctx *BuiltinEvalContext) SetVariables(n string, vs map[string]interface{})
type BuiltinGraphBuilder ¶ added in v0.4.0
type BuiltinGraphBuilder struct {
// Root is the root module of the graph to build.
Root *module.Tree
// Diff is the diff. The proper module diffs will be looked up.
Diff *Diff
// State is the global state. The proper module states will be looked
// up by graph path.
State *State
// Providers is the list of providers supported.
Providers []string
// Provisioners is the list of provisioners supported.
Provisioners []string
// Targets is the user-specified list of resources to target.
Targets []string
// Destroy is set to true when we're in a `terraform destroy` or a
// `terraform plan -destroy`
Destroy bool
// Determines whether the GraphBuilder should perform graph validation before
// returning the Graph. Generally you want this to be done, except when you'd
// like to inspect a problematic graph.
Validate bool
// Verbose is set to true when the graph should be built "worst case",
// skipping any prune steps. This is used for early cycle detection during
// Validate and for manual inspection via `terraform graph -verbose`.
Verbose bool
}
BuiltinGraphBuilder is responsible for building the complete graph that Terraform uses for execution. It is an opinionated builder that defines the step order required to build a complete graph as is used and expected by Terraform.
If you require a custom graph, you'll have to build it up manually on your own by building a new GraphBuilder implementation.
type CBDEdgeTransformer ¶ added in v0.7.8
type CBDEdgeTransformer struct {
// Module and State are only needed to look up dependencies in
// any way possible. Either can be nil if not availabile.
Module *module.Tree
State *State
}
CBDEdgeTransformer modifies the edges of CBD nodes that went through the DestroyEdgeTransformer to have the right dependencies. There are two real tasks here:
With CBD, the destroy edge is inverted: the destroy depends on the creation.
A_d must depend on resources that depend on A. This is to enable the destroy to only happen once nodes that depend on A successfully update to A. Example: adding a web server updates the load balancer before deleting the old web server.
type CallbackUIOutput ¶ added in v0.3.0
type CallbackUIOutput struct {
OutputFn func(string)
}
type CloseProviderTransformer ¶ added in v0.6.0
type CloseProviderTransformer struct{}
CloseProviderTransformer is a GraphTransformer that adds nodes to the graph that will close open provider connections that aren't needed anymore. A provider connection is not needed anymore once all depended resources in the graph are evaluated.
type CloseProvisionerTransformer ¶ added in v0.6.0
type CloseProvisionerTransformer struct{}
CloseProvisionerTransformer is a GraphTransformer that adds nodes to the graph that will close open provisioner connections that aren't needed anymore. A provisioner connection is not needed anymore once all depended resources in the graph are evaluated.
type ConcreteProviderNodeFunc ¶ added in v0.8.0
type ConcreteProviderNodeFunc func(*NodeAbstractProvider) dag.Vertex
ConcreteProviderNodeFunc is a callback type used to convert an abstract provider to a concrete one of some type.
type ConcreteResourceNodeFunc ¶ added in v0.7.8
type ConcreteResourceNodeFunc func(*NodeAbstractResource) dag.Vertex
ConcreteResourceNodeFunc is a callback type used to convert an abstract resource to a concrete one of some type.
type ConfigTransformer ¶ added in v0.4.0
type ConfigTransformer struct {
Concrete ConcreteResourceNodeFunc
Module *module.Tree
}
ConfigTransformer is a GraphTransformer that adds all the resources from the configuration to the graph.
The module used to configure this transformer must be the root module.
Only resources are added to the graph. Variables, outputs, and providers must be added via other transforms.
Unlike ConfigTransformerOld, this transformer creates a graph with all resources including module resources, rather than creating module nodes that are then "flattened".
type ConfigTransformerOld ¶ added in v0.7.10
type ConfigTransformerOld struct {
Module *module.Tree
}
ConfigTransformerOld is a GraphTransformer that adds the configuration to the graph. The module used to configure this transformer must be the root module. We'll look up the child module by the Path in the Graph.
type Context ¶
type Context struct {
// contains filtered or unexported fields
}
Context represents all the context that Terraform needs in order to perform operations on infrastructure. This structure is built using NewContext. See the documentation for that.
Extra functions on Context can be found in context_*.go files.
func NewContext ¶
func NewContext(opts *ContextOpts) (*Context, error)
NewContext creates a new Context structure.
Once a Context is creator, the pointer values within ContextOpts should not be mutated in any way, since the pointers are copied, not the values themselves.
func (*Context) Apply ¶
func (c *Context) Apply() (*State, error)
Apply applies the changes represented by this context and returns the resulting state.
In addition to returning the resulting state, this context is updated with the latest state.
func (*Context) Graph ¶
func (c *Context) Graph(typ GraphType, opts *ContextGraphOpts) (*Graph, error)
Graph returns the graph used for the given operation type.
The most extensive or complex graph type is GraphTypePlan.
func (*Context) Import ¶ added in v0.7.0
func (c *Context) Import(opts *ImportOpts) (*State, error)
Import takes already-created external resources and brings them under Terraform management. Import requires the exact type, name, and ID of the resources to import.
This operation is idempotent. If the requested resource is already imported, no changes are made to the state.
Further, this operation also gracefully handles partial state. If during an import there is a failure, all previously imported resources remain imported.
func (*Context) Input ¶ added in v0.3.0
func (c *Context) Input(mode InputMode) error
Input asks for input to fill variables and provider configurations. This modifies the configuration in-place, so asking for Input twice may result in different UI output showing different current values.
func (*Context) Interpolater ¶ added in v0.8.0
func (c *Context) Interpolater() *Interpolater
Interpolater returns an Interpolater built on a copy of the state that can be used to test interpolation values.
func (*Context) Module ¶ added in v0.4.0
func (c *Context) Module() *module.Tree
Module returns the module tree associated with this context.
func (*Context) Plan ¶
func (c *Context) Plan() (*Plan, error)
Plan generates an execution plan for the given context.
The execution plan encapsulates the context and can be stored in order to reinstantiate a context later for Apply.
Plan also updates the diff of this context to be the diff generated by the plan, so Apply can be called after.
func (*Context) Refresh ¶
func (c *Context) Refresh() (*State, error)
Refresh goes through all the resources in the state and refreshes them to their latest state. This will update the state that this context works with, along with returning it.
Even in the case an error is returned, the state will be returned and will potentially be partially updated.
func (*Context) SetVariable ¶ added in v0.4.0
func (c *Context) SetVariable(k string, v interface{})
SetVariable sets a variable after a context has already been built.
func (*Context) ShadowError ¶ added in v0.7.8
func (c *Context) ShadowError() error
ShadowError returns any errors caught during a shadow operation.
A shadow operation is an operation run in parallel to a real operation that performs the same tasks using new logic on copied state. The results are compared to ensure that the new logic works the same as the old logic. The shadow never affects the real operation or return values.
The result of the shadow operation are only available through this function call after a real operation is complete.
For API consumers of Context, you can safely ignore this function completely if you have no interest in helping report experimental feature errors to Terraform maintainers. Otherwise, please call this function after every operation and report this to the user.
IMPORTANT: Shadow errors are _never_ critical: they _never_ affect the real state or result of a real operation. They are purely informational to assist in future Terraform versions being more stable. Please message this effectively to the end user.
This must be called only when no other operation is running (refresh, plan, etc.). The result can be used in parallel to any other operation running.
func (*Context) Stop ¶
func (c *Context) Stop()
Stop stops the running task.
Stop will block until the task completes.
type ContextGraphOpts ¶ added in v0.5.0
type ContextGraphOpts struct {
// If true, validates the graph structure (checks for cycles).
Validate bool
// Legacy graphs only: won't prune the graph
Verbose bool
}
type ContextGraphWalker ¶ added in v0.4.0
type ContextGraphWalker struct {
NullGraphWalker
// Configurable values
Context *Context
Operation walkOperation
// Outputs, do not set these. Do not read these while the graph
// is being walked.
ValidationWarnings []string
ValidationErrors []error
// contains filtered or unexported fields
}
ContextGraphWalker is the GraphWalker implementation used with the Context struct to walk and evaluate the graph.
func (*ContextGraphWalker) EnterEvalTree ¶ added in v0.4.0
func (w *ContextGraphWalker) EnterEvalTree(v dag.Vertex, n EvalNode) EvalNode
func (*ContextGraphWalker) EnterPath ¶ added in v0.5.0
func (w *ContextGraphWalker) EnterPath(path []string) EvalContext
func (*ContextGraphWalker) ExitEvalTree ¶ added in v0.4.0
func (w *ContextGraphWalker) ExitEvalTree(
v dag.Vertex, output interface{}, err error) error
type ContextOpts ¶
type ContextOpts struct {
Destroy bool
Diff *Diff
Hooks []Hook
Module *module.Tree
Parallelism int
State *State
StateFutureAllowed bool
Providers map[string]ResourceProviderFactory
Provisioners map[string]ResourceProvisionerFactory
Shadow bool
Targets []string
Variables map[string]interface{}
UIInput UIInput
}
ContextOpts are the user-configurable options to create a context with NewContext.
type CountBoundaryTransformer ¶ added in v0.7.8
type CountBoundaryTransformer struct{}
CountBoundaryTransformer adds a node that depends on everything else so that it runs last in order to clean up the state for nodes that are on the "count boundary": "foo.0" when only one exists becomes "foo"
type CreateBeforeDestroyTransformer ¶ added in v0.4.0
type CreateBeforeDestroyTransformer struct{}
CreateBeforeDestroyTransformer is a GraphTransformer that modifies the destroys of some nodes so that the creation happens before the destroy.
type DataSource ¶ added in v0.7.0
type DataSource struct {
Name string
}
DataSource is a data source that a resource provider implements.
type DebugHook ¶ added in v0.7.9
type DebugHook struct{}
DebugHook implements all methods of the terraform.Hook interface, and writes the arguments to a file in the archive. When a suitable format for the argument isn't available, the argument is encoded using json.Marshal. If the debug handler is nil, all DebugHook methods are noop, so no time is spent in marshaling the data structures.
func (*DebugHook) PostApply ¶ added in v0.7.9
func (*DebugHook) PostApply(ii *InstanceInfo, is *InstanceState, err error) (HookAction, error)
func (*DebugHook) PostDiff ¶ added in v0.7.9
func (*DebugHook) PostDiff(ii *InstanceInfo, id *InstanceDiff) (HookAction, error)
func (*DebugHook) PostImportState ¶ added in v0.7.9
func (*DebugHook) PostImportState(ii *InstanceInfo, iss []*InstanceState) (HookAction, error)
func (*DebugHook) PostProvision ¶ added in v0.7.9
func (*DebugHook) PostProvision(ii *InstanceInfo, s string) (HookAction, error)
func (*DebugHook) PostProvisionResource ¶ added in v0.7.9
func (*DebugHook) PostProvisionResource(ii *InstanceInfo, is *InstanceState) (HookAction, error)
func (*DebugHook) PostRefresh ¶ added in v0.7.9
func (*DebugHook) PostRefresh(ii *InstanceInfo, is *InstanceState) (HookAction, error)
func (*DebugHook) PostStateUpdate ¶ added in v0.7.9
func (*DebugHook) PostStateUpdate(*State) (HookAction, error)
skip logging this for now, since it could be huge
func (*DebugHook) PreApply ¶ added in v0.7.9
func (*DebugHook) PreApply(ii *InstanceInfo, is *InstanceState, id *InstanceDiff) (HookAction, error)
func (*DebugHook) PreDiff ¶ added in v0.7.9
func (*DebugHook) PreDiff(ii *InstanceInfo, is *InstanceState) (HookAction, error)
func (*DebugHook) PreImportState ¶ added in v0.7.9
func (*DebugHook) PreImportState(ii *InstanceInfo, s string) (HookAction, error)
func (*DebugHook) PreProvision ¶ added in v0.7.9
func (*DebugHook) PreProvision(ii *InstanceInfo, s string) (HookAction, error)
func (*DebugHook) PreProvisionResource ¶ added in v0.7.9
func (*DebugHook) PreProvisionResource(ii *InstanceInfo, is *InstanceState) (HookAction, error)
func (*DebugHook) PreRefresh ¶ added in v0.7.9
func (*DebugHook) PreRefresh(ii *InstanceInfo, is *InstanceState) (HookAction, error)
func (*DebugHook) ProvisionOutput ¶ added in v0.7.9
func (*DebugHook) ProvisionOutput(ii *InstanceInfo, s1 string, s2 string)
type DeposedTransformer ¶ added in v0.4.0
type DeposedTransformer struct {
// State is the global state. We'll automatically find the correct
// ModuleState based on the Graph.Path that is being transformed.
State *State
// View, if non-empty, is the ModuleState.View used around the state
// to find deposed resources.
View string
}
DeposedTransformer is a GraphTransformer that adds deposed resources to the graph.
type DestroyEdge ¶ added in v0.7.8
type DestroyEdge struct {
S, T dag.Vertex
}
DestroyEdge is an edge that represents a standard "destroy" relationship: Target depends on Source because Source is destroying.
type DestroyEdgeTransformer ¶ added in v0.7.8
type DestroyEdgeTransformer struct {
// These are needed to properly build the graph of dependencies
// to determine what a destroy node depends on. Any of these can be nil.
Module *module.Tree
State *State
}
DestroyEdgeTransformer is a GraphTransformer that creates the proper references for destroy resources. Destroy resources are more complex in that they must be depend on the destruction of resources that in turn depend on the CREATION of the node being destroy.
That is complicated. Visually:
B_d -> A_d -> A -> B
Notice that A destroy depends on B destroy, while B create depends on A create. They're inverted. This must be done for example because often dependent resources will block parent resources from deleting. Concrete example: VPC with subnets, the VPC can't be deleted while there are still subnets.
type DestroyPlanGraphBuilder ¶ added in v0.7.8
type DestroyPlanGraphBuilder struct {
// Module is the root module for the graph to build.
Module *module.Tree
// State is the current state
State *State
// Targets are resources to target
Targets []string
// Validate will do structural validation of the graph.
Validate bool
}
DestroyPlanGraphBuilder implements GraphBuilder and is responsible for planning a pure-destroy.
Planning a pure destroy operation is simple because we can ignore most ordering configuration and simply reverse the state.
type DestroyTransformer ¶ added in v0.4.0
type DestroyTransformer struct {
FullDestroy bool
}
DestroyTransformer is a GraphTransformer that creates the destruction nodes for things that _might_ be destroyed.
type Diff ¶
type Diff struct {
// Modules contains all the modules that have a diff
Modules []*ModuleDiff
}
Diff trackes the changes that are necessary to apply a configuration to an existing infrastructure.
func (*Diff) AddModule ¶ added in v0.3.0
func (d *Diff) AddModule(path []string) *ModuleDiff
AddModule adds the module with the given path to the diff.
This should be the preferred method to add module diffs since it allows us to optimize lookups later as well as control sorting.
func (*Diff) DeepCopy ¶ added in v0.7.8
func (d *Diff) DeepCopy() *Diff
DeepCopy performs a deep copy of all parts of the Diff, making the resulting Diff safe to use without modifying this one.
func (*Diff) Equal ¶ added in v0.7.8
func (d *Diff) Equal(d2 *Diff) bool
Equal compares two diffs for exact equality.
This is different from the Same comparison that is supported which checks for operation equality taking into account computed values. Equal instead checks for exact equality.
func (*Diff) ModuleByPath ¶ added in v0.3.0
func (d *Diff) ModuleByPath(path []string) *ModuleDiff
ModuleByPath is used to lookup the module diff for the given path. This should be the preferred lookup mechanism as it allows for future lookup optimizations.
func (*Diff) Prune ¶ added in v0.7.10
func (d *Diff) Prune()
Prune cleans out unused structures in the diff without affecting the behavior of the diff at all.
This is not safe to call concurrently. This is safe to call on a nil Diff.
func (*Diff) RootModule ¶ added in v0.3.0
func (d *Diff) RootModule() *ModuleDiff
RootModule returns the ModuleState for the root module
type DiffAttrType ¶
type DiffAttrType byte
DiffAttrType is an enum type that says whether a resource attribute diff is an input attribute (comes from the configuration) or an output attribute (comes as a result of applying the configuration). An example input would be "ami" for AWS and an example output would be "private_ip".
const (
DiffAttrUnknown DiffAttrType = iota
DiffAttrInput
DiffAttrOutput
)
type DiffChangeType ¶ added in v0.3.0
type DiffChangeType byte
DiffChangeType is an enum with the kind of changes a diff has planned.
const (
DiffInvalid DiffChangeType = iota
DiffNone
DiffCreate
DiffUpdate
DiffDestroy
DiffDestroyCreate
)
type DiffTransformer ¶ added in v0.7.8
type DiffTransformer struct {
Concrete ConcreteResourceNodeFunc
Diff *Diff
Module *module.Tree
State *State
}
DiffTransformer is a GraphTransformer that adds the elements of the diff to the graph.
This transform is used for example by the ApplyGraphBuilder to ensure that only resources that are being modified are represented in the graph.
Module and State is still required for the DiffTransformer for annotations since the Diff doesn't contain all the information required to build the complete graph (such as create-before-destroy information). The graph is built based on the diff first, though, ensuring that only resources that are being modified are present in the graph.
type DisableProviderTransformer ¶ added in v0.4.1
type DisableProviderTransformer struct{}
DisableProviderTransformer "disables" any providers that are not actually used by anything. This avoids the provider being initialized and configured. This both saves resources but also avoids errors since configuration may imply initialization which may require auth.
type DisableProviderTransformerOld ¶ added in v0.7.8
type DisableProviderTransformerOld struct{}
DisableProviderTransformer "disables" any providers that are only depended on by modules.
NOTE: "old" = used by old graph builders, will be removed one day
type EphemeralState ¶ added in v0.3.0
type EphemeralState struct {
// ConnInfo is used for the providers to export information which is
// used to connect to the resource for provisioning. For example,
// this could contain SSH or WinRM credentials.
ConnInfo map[string]string `json:"-"`
// Type is used to specify the resource type for this instance. This is only
// required for import operations (as documented). If the documentation
// doesn't state that you need to set this, then don't worry about
// setting it.
Type string `json:"-"`
}
EphemeralState is used for transient state that is only kept in-memory
type EvalApply ¶ added in v0.4.0
type EvalApply struct {
Info *InstanceInfo
State **InstanceState
Diff **InstanceDiff
Provider *ResourceProvider
Output **InstanceState
CreateNew *bool
Error *error
}
EvalApply is an EvalNode implementation that writes the diff to the full diff.
type EvalApplyPost ¶ added in v0.4.0
type EvalApplyPost struct {
Info *InstanceInfo
State **InstanceState
Error *error
}
EvalApplyPost is an EvalNode implementation that does the post-Apply work
type EvalApplyProvisioners ¶ added in v0.4.0
type EvalApplyProvisioners struct {
Info *InstanceInfo
State **InstanceState
Resource *config.Resource
InterpResource *Resource
CreateNew *bool
Error *error
}
EvalApplyProvisioners is an EvalNode implementation that executes the provisioners for a resource.
TODO(mitchellh): This should probably be split up into a more fine-grained ApplyProvisioner (single) that is looped over.
type EvalBuildProviderConfig ¶ added in v0.4.0
type EvalBuildProviderConfig struct {
Provider string
Config **ResourceConfig
Output **ResourceConfig
}
EvalBuildProviderConfig outputs a *ResourceConfig that is properly merged with parents and inputs on top of what is configured in the file.
type EvalCheckPreventDestroy ¶ added in v0.5.0
type EvalCheckPreventDestroy struct {
Resource *config.Resource
ResourceId string
Diff **InstanceDiff
}
EvalPreventDestroy is an EvalNode implementation that returns an error if a resource has PreventDestroy configured and the diff would destroy the resource.
type EvalClearPrimaryState ¶ added in v0.4.0
type EvalClearPrimaryState struct {
Name string
}
EvalClearPrimaryState is an EvalNode implementation that clears the primary instance from a resource state.
type EvalCloseProvider ¶ added in v0.6.0
type EvalCloseProvider struct {
Name string
}
EvalCloseProvider is an EvalNode implementation that closes provider connections that aren't needed anymore.
type EvalCloseProvisioner ¶ added in v0.6.0
type EvalCloseProvisioner struct {
Name string
}
EvalCloseProvisioner is an EvalNode implementation that closes provisioner connections that aren't needed anymore.
type EvalCoerceMapVariable ¶ added in v0.7.0
type EvalCoerceMapVariable struct {
Variables map[string]interface{}
ModulePath []string
ModuleTree *module.Tree
}
EvalCoerceMapVariable is an EvalNode implementation that recognizes a specific ambiguous HCL parsing situation and resolves it. In HCL parsing, a bare map literal is indistinguishable from a list of maps w/ one element.
We take all the same inputs as EvalTypeCheckVariable above, since we need both the target type and the proposed value in order to properly coerce.
type EvalCompareDiff ¶ added in v0.4.0
type EvalCompareDiff struct {
Info *InstanceInfo
One, Two **InstanceDiff
}
EvalCompareDiff is an EvalNode implementation that compares two diffs and errors if the diffs are not equal.
type EvalConfigProvider ¶ added in v0.4.0
type EvalConfigProvider struct {
Provider string
Config **ResourceConfig
}
EvalConfigProvider is an EvalNode implementation that configures a provider that is already initialized and retrieved.
type EvalContext ¶ added in v0.4.0
type EvalContext interface {
// Path is the current module path.
Path() []string
// Hook is used to call hook methods. The callback is called for each
// hook and should return the hook action to take and the error.
Hook(func(Hook) (HookAction, error)) error
// Input is the UIInput object for interacting with the UI.
Input() UIInput
// InitProvider initializes the provider with the given name and
// returns the implementation of the resource provider or an error.
//
// It is an error to initialize the same provider more than once.
InitProvider(string) (ResourceProvider, error)
// Provider gets the provider instance with the given name (already
// initialized) or returns nil if the provider isn't initialized.
Provider(string) ResourceProvider
// CloseProvider closes provider connections that aren't needed anymore.
CloseProvider(string) error
// ConfigureProvider configures the provider with the given
// configuration. This is a separate context call because this call
// is used to store the provider configuration for inheritance lookups
// with ParentProviderConfig().
ConfigureProvider(string, *ResourceConfig) error
SetProviderConfig(string, *ResourceConfig) error
ParentProviderConfig(string) *ResourceConfig
// ProviderInput and SetProviderInput are used to configure providers
// from user input.
ProviderInput(string) map[string]interface{}
SetProviderInput(string, map[string]interface{})
// InitProvisioner initializes the provisioner with the given name and
// returns the implementation of the resource provisioner or an error.
//
// It is an error to initialize the same provisioner more than once.
InitProvisioner(string) (ResourceProvisioner, error)
// Provisioner gets the provisioner instance with the given name (already
// initialized) or returns nil if the provisioner isn't initialized.
Provisioner(string) ResourceProvisioner
// CloseProvisioner closes provisioner connections that aren't needed
// anymore.
CloseProvisioner(string) error
// Interpolate takes the given raw configuration and completes
// the interpolations, returning the processed ResourceConfig.
//
// The resource argument is optional. If given, it is the resource
// that is currently being acted upon.
Interpolate(*config.RawConfig, *Resource) (*ResourceConfig, error)
// SetVariables sets the variables for the module within
// this context with the name n. This function call is additive:
// the second parameter is merged with any previous call.
SetVariables(string, map[string]interface{})
// Diff returns the global diff as well as the lock that should
// be used to modify that diff.
Diff() (*Diff, *sync.RWMutex)
// State returns the global state as well as the lock that should
// be used to modify that state.
State() (*State, *sync.RWMutex)
}
EvalContext is the interface that is given to eval nodes to execute.
type EvalCountCheckComputed ¶ added in v0.8.0
type EvalCountCheckComputed struct {
Resource *config.Resource
}
EvalCountCheckComputed is an EvalNode that checks if a resource count is computed and errors if so. This can possibly happen across a module boundary and we don't yet support this.
type EvalCountFixZeroOneBoundary ¶ added in v0.4.0
type EvalCountFixZeroOneBoundary struct {
Resource *config.Resource
}
EvalCountFixZeroOneBoundary is an EvalNode that fixes up the state when there is a resource count with zero/one boundary, i.e. fixing a resource named "aws_instance.foo" to "aws_instance.foo.0" and vice-versa.
type EvalCountFixZeroOneBoundaryGlobal ¶ added in v0.7.8
type EvalCountFixZeroOneBoundaryGlobal struct{}
EvalCountFixZeroOneBoundaryGlobal is an EvalNode that fixes up the state when there is a resource count with zero/one boundary, i.e. fixing a resource named "aws_instance.foo" to "aws_instance.foo.0" and vice-versa.
This works on the global state.
type EvalDeleteOutput ¶ added in v0.5.0
type EvalDeleteOutput struct {
Name string
}
EvalDeleteOutput is an EvalNode implementation that deletes an output from the state.
type EvalDeposeState ¶ added in v0.4.0
type EvalDeposeState struct {
Name string
}
EvalDeposeState is an EvalNode implementation that takes the primary out of a state and makes it Deposed. This is done at the beginning of create-before-destroy calls so that the create can create while preserving the old state of the to-be-destroyed resource.
type EvalDiff ¶ added in v0.4.0
type EvalDiff struct {
Name string
Info *InstanceInfo
Config **ResourceConfig
Provider *ResourceProvider
Diff **InstanceDiff
State **InstanceState
OutputDiff **InstanceDiff
OutputState **InstanceState
// Resource is needed to fetch the ignore_changes list so we can
// filter user-requested ignored attributes from the diff.
Resource *config.Resource
}
EvalDiff is an EvalNode implementation that does a refresh for a resource.
type EvalDiffDestroy ¶ added in v0.4.0
type EvalDiffDestroy struct {
Info *InstanceInfo
State **InstanceState
Output **InstanceDiff
}
EvalDiffDestroy is an EvalNode implementation that returns a plain destroy diff.
type EvalDiffDestroyModule ¶ added in v0.4.0
type EvalDiffDestroyModule struct {
Path []string
}
EvalDiffDestroyModule is an EvalNode implementation that writes the diff to the full diff.
type EvalEarlyExitError ¶ added in v0.4.0
type EvalEarlyExitError struct{}
EvalEarlyExitError is a special error return value that can be returned by eval nodes that does an early exit.
type EvalFilterDiff ¶ added in v0.4.0
type EvalFilterDiff struct {
// Input and output
Diff **InstanceDiff
Output **InstanceDiff
// Destroy, if true, will only include a destroy diff if it is set.
Destroy bool
}
EvalFilterDiff is an EvalNode implementation that filters the diff according to some filter.
type EvalGetProvider ¶ added in v0.4.0
type EvalGetProvider struct {
Name string
Output *ResourceProvider
}
EvalGetProvider is an EvalNode implementation that retrieves an already initialized provider instance for the given name.
type EvalGetProvisioner ¶ added in v0.4.0
type EvalGetProvisioner struct {
Name string
Output *ResourceProvisioner
}
EvalGetProvisioner is an EvalNode implementation that retrieves an already initialized provisioner instance for the given name.
type EvalIf ¶ added in v0.4.0
type EvalIf struct {
If func(EvalContext) (bool, error)
Then EvalNode
Else EvalNode
}
EvalIf is an EvalNode that is a conditional.
type EvalImportState ¶ added in v0.7.0
type EvalImportState struct {
Provider *ResourceProvider
Info *InstanceInfo
Id string
Output *[]*InstanceState
}
EvalImportState is an EvalNode implementation that performs an ImportState operation on a provider. This will return the imported states but won't modify any actual state.
type EvalImportStateVerify ¶ added in v0.7.0
type EvalImportStateVerify struct {
Info *InstanceInfo
Id string
State **InstanceState
}
EvalImportStateVerify verifies the state after ImportState and after the refresh to make sure it is non-nil and valid.
type EvalInitProvider ¶ added in v0.4.0
type EvalInitProvider struct {
Name string
}
EvalInitProvider is an EvalNode implementation that initializes a provider and returns nothing. The provider can be retrieved again with the EvalGetProvider node.
type EvalInitProvisioner ¶ added in v0.4.0
type EvalInitProvisioner struct {
Name string
}
EvalInitProvisioner is an EvalNode implementation that initializes a provisioner and returns nothing. The provisioner can be retrieved again with the EvalGetProvisioner node.
type EvalInputProvider ¶ added in v0.4.0
type EvalInputProvider struct {
Name string
Provider *ResourceProvider
Config **ResourceConfig
}
EvalInputProvider is an EvalNode implementation that asks for input for the given provider configurations.
type EvalInstanceInfo ¶ added in v0.4.0
type EvalInstanceInfo struct {
Info *InstanceInfo
}
EvalInstanceInfo is an EvalNode implementation that fills in the InstanceInfo as much as it can.
type EvalInterpolate ¶ added in v0.4.0
type EvalInterpolate struct {
Config *config.RawConfig
Resource *Resource
Output **ResourceConfig
}
EvalInterpolate is an EvalNode implementation that takes a raw configuration and interpolates it.
type EvalNode ¶ added in v0.4.0
type EvalNode interface {
// Eval evaluates this node with the given context. The second parameter
// are the argument values. These will match in order and 1-1 with the
// results of the Args() return value.
Eval(EvalContext) (interface{}, error)
}
EvalNode is the interface that must be implemented by graph nodes to evaluate/execute.
func CloseProviderEvalTree ¶ added in v0.6.0
func CloseProviderEvalTree(n string) EvalNode
CloseProviderEvalTree returns the evaluation tree for closing provider connections that aren't needed anymore.
func EvalFilter ¶ added in v0.4.0
func EvalFilter(node EvalNode, fn EvalNodeFilterFunc) EvalNode
EvalFilter runs the filter on the given node and returns the final filtered value. This should be called rather than checking the EvalNode directly since this will properly handle EvalNodeFilterables.
func ProviderEvalTree ¶ added in v0.4.0
func ProviderEvalTree(n string, config *config.RawConfig) EvalNode
ProviderEvalTree returns the evaluation tree for initializing and configuring providers.
type EvalNodeFilterFunc ¶ added in v0.4.0
type EvalNodeFilterFunc func(EvalNode) EvalNode
EvalNodeFilterFunc is the callback used to replace a node with another to node. To not do the replacement, just return the input node.
func EvalNodeFilterOp ¶ added in v0.4.0
func EvalNodeFilterOp(op walkOperation) EvalNodeFilterFunc
EvalNodeFilterOp returns a filter function that filters nodes that include themselves in specific operations.
type EvalNodeFilterable ¶ added in v0.4.0
type EvalNodeFilterable interface {
EvalNode
Filter(EvalNodeFilterFunc)
}
EvalNodeFilterable is an interface that can be implemented by EvalNodes to allow filtering of sub-elements. Note that this isn't a common thing to implement and you probably don't need it.
type EvalNodeOpFilterable ¶ added in v0.4.0
type EvalNodeOpFilterable interface {
IncludeInOp(walkOperation) bool
}
EvalNodeOpFilterable is an interface that EvalNodes can implement to be filterable by the operation that is being run on Terraform.
type EvalOpFilter ¶ added in v0.4.0
type EvalOpFilter struct {
// Ops is the list of operations to include this node in.
Ops []walkOperation
// Node is the node to execute
Node EvalNode
}
EvalOpFilter is an EvalNode implementation that is a proxy to another node but filters based on the operation.
func (*EvalOpFilter) Eval ¶ added in v0.4.0
func (n *EvalOpFilter) Eval(ctx EvalContext) (interface{}, error)
TODO: test
func (*EvalOpFilter) IncludeInOp ¶ added in v0.4.0
func (n *EvalOpFilter) IncludeInOp(op walkOperation) bool
EvalNodeOpFilterable impl.
type EvalReadDataApply ¶ added in v0.7.0
type EvalReadDataApply struct {
Provider *ResourceProvider
Output **InstanceState
Diff **InstanceDiff
Info *InstanceInfo
}
EvalReadDataApply is an EvalNode implementation that executes a data resource's ReadDataApply method to read data from the data source.
type EvalReadDataDiff ¶ added in v0.7.0
type EvalReadDataDiff struct {
Provider *ResourceProvider
Output **InstanceDiff
OutputState **InstanceState
Config **ResourceConfig
Info *InstanceInfo
// Set Previous when re-evaluating diff during apply, to ensure that
// the "Destroy" flag is preserved.
Previous **InstanceDiff
}
EvalReadDataDiff is an EvalNode implementation that executes a data resource's ReadDataDiff method to discover what attributes it exports.
type EvalReadDiff ¶ added in v0.4.0
type EvalReadDiff struct {
Name string
Diff **InstanceDiff
}
EvalReadDiff is an EvalNode implementation that writes the diff to the full diff.
type EvalReadState ¶ added in v0.4.0
type EvalReadState struct {
Name string
Output **InstanceState
}
EvalReadState is an EvalNode implementation that reads the primary InstanceState for a specific resource out of the state.
type EvalReadStateDeposed ¶ added in v0.4.0
type EvalReadStateDeposed struct {
Name string
Output **InstanceState
// Index indicates which instance in the Deposed list to target, or -1 for
// the last item.
Index int
}
EvalReadStateDeposed is an EvalNode implementation that reads the deposed InstanceState for a specific resource out of the state
type EvalRefresh ¶ added in v0.4.0
type EvalRefresh struct {
Provider *ResourceProvider
State **InstanceState
Info *InstanceInfo
Output **InstanceState
}
EvalRefresh is an EvalNode implementation that does a refresh for a resource.
type EvalRequireState ¶ added in v0.4.0
type EvalRequireState struct {
State **InstanceState
}
EvalRequireState is an EvalNode implementation that early exits if the state doesn't have an ID.
type EvalReturnError ¶ added in v0.4.0
type EvalReturnError struct {
Error *error
}
EvalReturnError is an EvalNode implementation that returns an error if it is present.
This is useful for scenarios where an error has been captured by another EvalNode (like EvalApply) for special EvalTree-based error handling, and that handling has completed, so the error should be returned normally.
type EvalSequence ¶ added in v0.4.0
type EvalSequence struct {
Nodes []EvalNode
}
EvalSequence is an EvalNode that evaluates in sequence.
type EvalSetProviderConfig ¶ added in v0.4.1
type EvalSetProviderConfig struct {
Provider string
Config **ResourceConfig
}
EvalSetProviderConfig sets the parent configuration for a provider without configuring that provider, validating it, etc.
type EvalSetVariables ¶ added in v0.4.0
type EvalSetVariables struct {
Module *string
Variables map[string]interface{}
}
EvalSetVariables is an EvalNode implementation that sets the variables explicitly for interpolation later.
type EvalTypeCheckVariable ¶ added in v0.6.15
type EvalTypeCheckVariable struct {
Variables map[string]interface{}
ModulePath []string
ModuleTree *module.Tree
}
EvalTypeCheckVariable is an EvalNode which ensures that the variable values which are assigned as inputs to a module (including the root) match the types which are either declared for the variables explicitly or inferred from the default values.
In order to achieve this three things are required:
- a map of the proposed variable values
- the configuration tree of the module in which the variable is declared
- the path to the module (so we know which part of the tree to compare the values against).
type EvalUndeposeState ¶ added in v0.4.0
type EvalUndeposeState struct {
Name string
State **InstanceState
}
EvalUndeposeState is an EvalNode implementation that reads the InstanceState for a specific resource out of the state.
type EvalUpdateStateHook ¶ added in v0.4.0
type EvalUpdateStateHook struct{}
EvalUpdateStateHook is an EvalNode implementation that calls the PostStateUpdate hook with the current state.
type EvalValidateCount ¶ added in v0.4.0
type EvalValidateCount struct {
Resource *config.Resource
}
EvalValidateCount is an EvalNode implementation that validates the count of a resource.
type EvalValidateError ¶ added in v0.4.0
type EvalValidateError struct {
Warnings []string
Errors []error
}
EvalValidateError is the error structure returned if there were validation errors.
type EvalValidateProvider ¶ added in v0.4.0
type EvalValidateProvider struct {
Provider *ResourceProvider
Config **ResourceConfig
}
EvalValidateProvider is an EvalNode implementation that validates the configuration of a resource.
type EvalValidateProvisioner ¶ added in v0.4.0
type EvalValidateProvisioner struct {
Provisioner *ResourceProvisioner
Config **ResourceConfig
}
EvalValidateProvisioner is an EvalNode implementation that validates the configuration of a resource.
type EvalValidateResource ¶ added in v0.4.0
type EvalValidateResource struct {
Provider *ResourceProvider
Config **ResourceConfig
ResourceName string
ResourceType string
ResourceMode config.ResourceMode
// IgnoreWarnings means that warnings will not be passed through. This allows
// "just-in-time" passes of validation to continue execution through warnings.
IgnoreWarnings bool
}
EvalValidateResource is an EvalNode implementation that validates the configuration of a resource.
type EvalVariableBlock ¶ added in v0.4.0
type EvalVariableBlock struct {
Config **ResourceConfig
VariableValues map[string]interface{}
}
EvalVariableBlock is an EvalNode implementation that evaluates the given configuration, and uses the final values as a way to set the mapping.
type EvalWriteDiff ¶ added in v0.4.0
type EvalWriteDiff struct {
Name string
Diff **InstanceDiff
}
EvalWriteDiff is an EvalNode implementation that writes the diff to the full diff.
type EvalWriteOutput ¶ added in v0.4.0
type EvalWriteOutput struct {
Name string
Sensitive bool
Value *config.RawConfig
}
EvalWriteOutput is an EvalNode implementation that writes the output for the given name to the current state.
type EvalWriteState ¶ added in v0.4.0
type EvalWriteState struct {
Name string
ResourceType string
Provider string
Dependencies []string
State **InstanceState
}
EvalWriteState is an EvalNode implementation that writes the primary InstanceState for a specific resource into the state.
type EvalWriteStateDeposed ¶ added in v0.4.0
type EvalWriteStateDeposed struct {
Name string
ResourceType string
Provider string
Dependencies []string
State **InstanceState
// Index indicates which instance in the Deposed list to target, or -1 to append.
Index int
}
EvalWriteStateDeposed is an EvalNode implementation that writes an InstanceState out to the Deposed list of a resource in the state.
type ExpandTransform ¶ added in v0.4.0
type ExpandTransform struct {
Builder GraphBuilder
}
ExpandTransform is a transformer that does a subgraph expansion at graph transform time (vs. at eval time). The benefit of earlier subgraph expansion is that errors with the graph build can be detected at an earlier stage.
type FlatConfigTransformer ¶ added in v0.7.8
type FlatConfigTransformer struct {
Concrete ConcreteResourceNodeFunc // What to turn resources into
Module *module.Tree
}
FlatConfigTransformer is a GraphTransformer that adds the configuration to the graph. The module used to configure this transformer must be the root module.
This transform adds the nodes but doesn't connect any of the references. The ReferenceTransformer should be used for that.
NOTE: In relation to ConfigTransformer: this is a newer generation config transformer. It puts the _entire_ config into the graph (there is no "flattening" step as before).
type FlattenTransformer ¶ added in v0.5.0
type FlattenTransformer struct{}
FlattenTransformer is a transformer that goes through the graph, finds subgraphs that can be flattened, and flattens them into this graph, removing the prior subgraph node.
type Graph ¶
type Graph struct {
// Graph is the actual DAG. This is embedded so you can call the DAG
// methods directly.
dag.AcyclicGraph
// Path is the path in the module tree that this Graph represents.
// The root is represented by a single element list containing
// RootModuleName
Path []string
// contains filtered or unexported fields
}
Graph represents the graph that Terraform uses to represent resources and their dependencies. Each graph represents only one module, but it can contain further modules, which themselves have their own graph.
func (*Graph) Add ¶ added in v0.4.0
func (g *Graph) Add(v dag.Vertex) dag.Vertex
Add is the same as dag.Graph.Add.
func (*Graph) Annotations ¶ added in v0.7.8
func (g *Graph) Annotations(v dag.Vertex) map[string]interface{}
Annotations returns the annotations that are configured for the given vertex. The map is guaranteed to be non-nil but may be empty.
The returned map may be modified to modify the annotations of the vertex.
func (*Graph) ConnectDependent ¶ added in v0.4.0
func (g *Graph) ConnectDependent(raw dag.Vertex) []string
ConnectDependent connects a GraphNodeDependent to all of its GraphNodeDependables. It returns the list of dependents it was unable to connect to.
func (*Graph) ConnectDependents ¶ added in v0.4.0
func (g *Graph) ConnectDependents()
ConnectDependents goes through the graph, connecting all the GraphNodeDependents to GraphNodeDependables. This is safe to call multiple times.
To get details on whether dependencies could be found/made, the more specific ConnectDependent should be used.
func (*Graph) ConnectFrom ¶ added in v0.4.0
func (g *Graph) ConnectFrom(source string, target dag.Vertex)
ConnectFrom creates an edge by finding the source from a DependableName and connecting it to the specific vertex.
func (*Graph) ConnectTo ¶ added in v0.4.0
func (g *Graph) ConnectTo(v dag.Vertex, targets []string) []string
ConnectTo connects a vertex to a raw string of targets that are the result of DependableName, and returns the list of targets that are missing.
func (*Graph) Dependable ¶ added in v0.4.0
func (g *Graph) Dependable(n string) dag.Vertex
Dependable finds the vertices in the graph that have the given dependable names and returns them.
func (*Graph) DirectedGraph ¶ added in v0.8.0
func (g *Graph) DirectedGraph() dag.Grapher
func (*Graph) Remove ¶ added in v0.5.0
func (g *Graph) Remove(v dag.Vertex) dag.Vertex
Remove is the same as dag.Graph.Remove
type GraphBuilder ¶ added in v0.4.0
type GraphBuilder interface {
// Build builds the graph for the given module path. It is up to
// the interface implementation whether this build should expand
// the graph or not.
Build(path []string) (*Graph, error)
}
GraphBuilder is an interface that can be implemented and used with Terraform to build the graph that Terraform walks.
type GraphNodeAddressable ¶ added in v0.4.0
type GraphNodeAddressable interface {
ResourceAddress() *ResourceAddress
}
GraphNodeAddressable is an interface that all graph nodes for the configuration graph need to implement in order to be be addressed / targeted properly.
type GraphNodeAnnotationInit ¶ added in v0.7.8
type GraphNodeAnnotationInit interface {
AnnotationInit() map[string]interface{}
}
GraphNodeAnnotationInit is an interface that allows a node to initialize it's annotations.
AnnotationInit will be called _once_ when the node is added to a graph for the first time and is expected to return it's initial annotations.
type GraphNodeAttachProvider ¶ added in v0.7.8
type GraphNodeAttachProvider interface {
// Must be implemented to determine the path for the configuration
GraphNodeSubPath
// ProviderName with no module prefix. Example: "aws".
ProviderName() string
// Sets the configuration
AttachProvider(*config.ProviderConfig)
}
GraphNodeAttachProvider is an interface that must be implemented by nodes that want provider configurations attached.
type GraphNodeAttachResourceConfig ¶ added in v0.7.8
type GraphNodeAttachResourceConfig interface {
// ResourceAddr is the address to the resource
ResourceAddr() *ResourceAddress
// Sets the configuration
AttachResourceConfig(*config.Resource)
}
GraphNodeAttachResourceConfig is an interface that must be implemented by nodes that want resource configurations attached.
type GraphNodeAttachResourceState ¶ added in v0.7.8
type GraphNodeAttachResourceState interface {
// The address to the resource for the state
ResourceAddr() *ResourceAddress
// Sets the state
AttachResourceState(*ResourceState)
}
GraphNodeAttachResourceState is an interface that can be implemented to request that a ResourceState is attached to the node.
type GraphNodeBasicSubgraph ¶ added in v0.4.0
type GraphNodeBasicSubgraph struct {
NameValue string
Graph *Graph
}
func (*GraphNodeBasicSubgraph) FlattenGraph ¶ added in v0.5.1
func (n *GraphNodeBasicSubgraph) FlattenGraph() *Graph
type GraphNodeCloseProvider ¶ added in v0.6.0
type GraphNodeCloseProvider interface {
CloseProviderName() string
}
GraphNodeCloseProvider is an interface that nodes that can be a close provider must implement. The CloseProviderName returned is the name of the provider they satisfy.
type GraphNodeCloseProvisioner ¶ added in v0.6.0
type GraphNodeCloseProvisioner interface {
CloseProvisionerName() string
}
GraphNodeCloseProvisioner is an interface that nodes that can be a close provisioner must implement. The CloseProvisionerName returned is the name of the provisioner they satisfy.
type GraphNodeConfigModule ¶ added in v0.4.0
type GraphNodeConfigModule struct {
Path []string
Module *config.Module
Tree *module.Tree
}
GraphNodeConfigModule represents a module within the configuration graph.
func (*GraphNodeConfigModule) ConfigType ¶ added in v0.4.1
func (n *GraphNodeConfigModule) ConfigType() GraphNodeConfigType
func (*GraphNodeConfigModule) DependableName ¶ added in v0.4.0
func (n *GraphNodeConfigModule) DependableName() []string
func (*GraphNodeConfigModule) DependentOn ¶ added in v0.4.0
func (n *GraphNodeConfigModule) DependentOn() []string
func (*GraphNodeConfigModule) Expand ¶ added in v0.4.0
func (n *GraphNodeConfigModule) Expand(b GraphBuilder) (GraphNodeSubgraph, error)
GraphNodeExpandable
func (*GraphNodeConfigModule) ProvidedBy ¶ added in v0.4.0
func (n *GraphNodeConfigModule) ProvidedBy() []string
GraphNodeExpandable
type GraphNodeConfigOutput ¶ added in v0.4.0
type GraphNodeConfigOutput struct {
Output *config.Output
}
GraphNodeConfigOutput represents an output configured within the configuration.
func (*GraphNodeConfigOutput) ConfigType ¶ added in v0.4.1
func (n *GraphNodeConfigOutput) ConfigType() GraphNodeConfigType
func (*GraphNodeConfigOutput) DependableName ¶ added in v0.4.0
func (n *GraphNodeConfigOutput) DependableName() []string
func (*GraphNodeConfigOutput) DependentOn ¶ added in v0.4.0
func (n *GraphNodeConfigOutput) DependentOn() []string
func (*GraphNodeConfigOutput) DestroyEdgeInclude ¶ added in v0.5.0
func (n *GraphNodeConfigOutput) DestroyEdgeInclude(dag.Vertex) bool
GraphNodeDestroyEdgeInclude impl.
func (*GraphNodeConfigOutput) EvalTree ¶ added in v0.4.0
func (n *GraphNodeConfigOutput) EvalTree() EvalNode
GraphNodeEvalable impl.
func (*GraphNodeConfigOutput) Flatten ¶ added in v0.5.0
func (n *GraphNodeConfigOutput) Flatten(p []string) (dag.Vertex, error)
GraphNodeFlattenable impl.
func (*GraphNodeConfigOutput) OutputName ¶ added in v0.5.0
func (n *GraphNodeConfigOutput) OutputName() string
type GraphNodeConfigOutputFlat ¶ added in v0.5.0
type GraphNodeConfigOutputFlat struct {
*GraphNodeConfigOutput
PathValue []string
}
Same as GraphNodeConfigOutput, but for flattening
func (*GraphNodeConfigOutputFlat) DependableName ¶ added in v0.5.0
func (n *GraphNodeConfigOutputFlat) DependableName() []string
func (*GraphNodeConfigOutputFlat) DependentOn ¶ added in v0.5.0
func (n *GraphNodeConfigOutputFlat) DependentOn() []string
type GraphNodeConfigProvider ¶ added in v0.4.0
type GraphNodeConfigProvider struct {
Provider *config.ProviderConfig
}
GraphNodeConfigProvider represents a configured provider within the configuration graph. These are only immediately in the graph when an explicit `provider` configuration block is in the configuration.
func (*GraphNodeConfigProvider) ConfigType ¶ added in v0.4.1
func (n *GraphNodeConfigProvider) ConfigType() GraphNodeConfigType
func (*GraphNodeConfigProvider) DependableName ¶ added in v0.4.0
func (n *GraphNodeConfigProvider) DependableName() []string
func (*GraphNodeConfigProvider) DependentOn ¶ added in v0.4.0
func (n *GraphNodeConfigProvider) DependentOn() []string
func (*GraphNodeConfigProvider) DotNode ¶ added in v0.5.0
func (n *GraphNodeConfigProvider) DotNode(name string, opts *dag.DotOpts) *dag.DotNode
GraphNodeDotter impl.
func (*GraphNodeConfigProvider) DotOrigin ¶ added in v0.5.0
func (n *GraphNodeConfigProvider) DotOrigin() bool
GraphNodeDotterOrigin impl.
func (*GraphNodeConfigProvider) EvalTree ¶ added in v0.4.0
func (n *GraphNodeConfigProvider) EvalTree() EvalNode
GraphNodeEvalable impl.
func (*GraphNodeConfigProvider) Flatten ¶ added in v0.5.0
func (n *GraphNodeConfigProvider) Flatten(p []string) (dag.Vertex, error)
GraphNodeFlattenable impl.
func (*GraphNodeConfigProvider) Name ¶ added in v0.4.0
func (n *GraphNodeConfigProvider) Name() string
func (*GraphNodeConfigProvider) ProviderConfig ¶ added in v0.4.1
func (n *GraphNodeConfigProvider) ProviderConfig() *config.RawConfig
GraphNodeProvider implementation
func (*GraphNodeConfigProvider) ProviderName ¶ added in v0.4.0
func (n *GraphNodeConfigProvider) ProviderName() string
GraphNodeProvider implementation
type GraphNodeConfigProviderFlat ¶ added in v0.5.0
type GraphNodeConfigProviderFlat struct {
*GraphNodeConfigProvider
PathValue []string
}
Same as GraphNodeConfigProvider, but for flattening
func (*GraphNodeConfigProviderFlat) DependableName ¶ added in v0.5.0
func (n *GraphNodeConfigProviderFlat) DependableName() []string
func (*GraphNodeConfigProviderFlat) DependentOn ¶ added in v0.5.0
func (n *GraphNodeConfigProviderFlat) DependentOn() []string
func (*GraphNodeConfigProviderFlat) Name ¶ added in v0.5.0
func (n *GraphNodeConfigProviderFlat) Name() string
func (*GraphNodeConfigProviderFlat) Path ¶ added in v0.5.0
func (n *GraphNodeConfigProviderFlat) Path() []string
func (*GraphNodeConfigProviderFlat) ProviderName ¶ added in v0.5.0
func (n *GraphNodeConfigProviderFlat) ProviderName() string
type GraphNodeConfigResource ¶ added in v0.4.0
type GraphNodeConfigResource struct {
Resource *config.Resource
// If set to true, this resource represents a resource
// that will be destroyed in some way.
Destroy bool
// Used during DynamicExpand to target indexes
Targets []ResourceAddress
Path []string
}
GraphNodeConfigResource represents a resource within the config graph.
func (*GraphNodeConfigResource) ConfigType ¶ added in v0.4.1
func (n *GraphNodeConfigResource) ConfigType() GraphNodeConfigType
func (*GraphNodeConfigResource) Copy ¶ added in v0.6.12
func (n *GraphNodeConfigResource) Copy() *GraphNodeConfigResource
func (*GraphNodeConfigResource) CountDependentOn ¶ added in v0.5.0
func (n *GraphNodeConfigResource) CountDependentOn() []string
GraphNodeCountDependent impl.
func (*GraphNodeConfigResource) DependableName ¶ added in v0.4.0
func (n *GraphNodeConfigResource) DependableName() []string
func (*GraphNodeConfigResource) DependentOn ¶ added in v0.4.0
func (n *GraphNodeConfigResource) DependentOn() []string
GraphNodeDependent impl.
func (*GraphNodeConfigResource) DestroyNode ¶ added in v0.4.0
func (n *GraphNodeConfigResource) DestroyNode() GraphNodeDestroy
GraphNodeDestroyable
func (*GraphNodeConfigResource) DotNode ¶ added in v0.5.0
func (n *GraphNodeConfigResource) DotNode(name string, opts *dag.DotOpts) *dag.DotNode
GraphNodeDotter impl.
func (*GraphNodeConfigResource) DynamicExpand ¶ added in v0.4.0
func (n *GraphNodeConfigResource) DynamicExpand(ctx EvalContext) (*Graph, error)
GraphNodeDynamicExpandable impl.
func (*GraphNodeConfigResource) EvalTree ¶ added in v0.4.0
func (n *GraphNodeConfigResource) EvalTree() EvalNode
GraphNodeEvalable impl.
func (*GraphNodeConfigResource) Flatten ¶ added in v0.5.0
func (n *GraphNodeConfigResource) Flatten(p []string) (dag.Vertex, error)
GraphNodeFlattenable impl.
func (*GraphNodeConfigResource) Name ¶ added in v0.4.0
func (n *GraphNodeConfigResource) Name() string
func (*GraphNodeConfigResource) Noop ¶ added in v0.6.1
func (n *GraphNodeConfigResource) Noop(opts *NoopOpts) bool
GraphNodeNoopPrunable
func (*GraphNodeConfigResource) ProvidedBy ¶ added in v0.4.0
func (n *GraphNodeConfigResource) ProvidedBy() []string
GraphNodeProviderConsumer
func (*GraphNodeConfigResource) ProvisionedBy ¶ added in v0.4.0
func (n *GraphNodeConfigResource) ProvisionedBy() []string
GraphNodeProvisionerConsumer
func (*GraphNodeConfigResource) ResourceAddress ¶ added in v0.4.0
func (n *GraphNodeConfigResource) ResourceAddress() *ResourceAddress
GraphNodeAddressable impl.
func (*GraphNodeConfigResource) SetTargets ¶ added in v0.4.0
func (n *GraphNodeConfigResource) SetTargets(targets []ResourceAddress)
GraphNodeTargetable impl.
type GraphNodeConfigResourceFlat ¶ added in v0.5.0
type GraphNodeConfigResourceFlat struct {
*GraphNodeConfigResource
PathValue []string
}
Same as GraphNodeConfigResource, but for flattening
func (*GraphNodeConfigResourceFlat) DependableName ¶ added in v0.5.0
func (n *GraphNodeConfigResourceFlat) DependableName() []string
func (*GraphNodeConfigResourceFlat) DependentOn ¶ added in v0.5.0
func (n *GraphNodeConfigResourceFlat) DependentOn() []string
func (*GraphNodeConfigResourceFlat) DestroyNode ¶ added in v0.5.0
func (n *GraphNodeConfigResourceFlat) DestroyNode() GraphNodeDestroy
GraphNodeDestroyable impl.
func (*GraphNodeConfigResourceFlat) Name ¶ added in v0.5.0
func (n *GraphNodeConfigResourceFlat) Name() string
func (*GraphNodeConfigResourceFlat) Path ¶ added in v0.5.0
func (n *GraphNodeConfigResourceFlat) Path() []string
func (*GraphNodeConfigResourceFlat) ProvidedBy ¶ added in v0.5.0
func (n *GraphNodeConfigResourceFlat) ProvidedBy() []string
func (*GraphNodeConfigResourceFlat) ProvisionedBy ¶ added in v0.5.0
func (n *GraphNodeConfigResourceFlat) ProvisionedBy() []string
type GraphNodeConfigType ¶ added in v0.4.1
type GraphNodeConfigType int
GraphNodeConfigType is an enum for the type of thing that a graph node represents from the configuration.
const (
GraphNodeConfigTypeInvalid GraphNodeConfigType = 0
GraphNodeConfigTypeResource GraphNodeConfigType = iota
GraphNodeConfigTypeProvider
GraphNodeConfigTypeModule
GraphNodeConfigTypeOutput
GraphNodeConfigTypeVariable
)
type GraphNodeConfigVariable ¶ added in v0.5.0
type GraphNodeConfigVariable struct {
Variable *config.Variable
// Value, if non-nil, will be used to set the value of the variable
// during evaluation. If this is nil, evaluation will do nothing.
//
// Module is the name of the module to set the variables on.
Module string
Value *config.RawConfig
ModuleTree *module.Tree
ModulePath []string
}
GraphNodeConfigVariable represents a Variable in the config.
func (*GraphNodeConfigVariable) ConfigType ¶ added in v0.5.0
func (n *GraphNodeConfigVariable) ConfigType() GraphNodeConfigType
func (*GraphNodeConfigVariable) DependableName ¶ added in v0.5.0
func (n *GraphNodeConfigVariable) DependableName() []string
func (*GraphNodeConfigVariable) DependentOn ¶ added in v0.5.0
func (n *GraphNodeConfigVariable) DependentOn() []string
func (*GraphNodeConfigVariable) DestroyEdgeInclude ¶ added in v0.5.0
func (n *GraphNodeConfigVariable) DestroyEdgeInclude(v dag.Vertex) bool
GraphNodeDestroyEdgeInclude impl.
func (*GraphNodeConfigVariable) EvalTree ¶ added in v0.5.0
func (n *GraphNodeConfigVariable) EvalTree() EvalNode
GraphNodeEvalable impl.
func (*GraphNodeConfigVariable) Flatten ¶ added in v0.5.0
func (n *GraphNodeConfigVariable) Flatten(p []string) (dag.Vertex, error)
GraphNodeFlattenable impl.
func (*GraphNodeConfigVariable) Name ¶ added in v0.5.0
func (n *GraphNodeConfigVariable) Name() string
func (*GraphNodeConfigVariable) Noop ¶ added in v0.6.1
func (n *GraphNodeConfigVariable) Noop(opts *NoopOpts) bool
GraphNodeNoopPrunable
func (*GraphNodeConfigVariable) Proxy ¶ added in v0.5.0
func (n *GraphNodeConfigVariable) Proxy() bool
GraphNodeProxy impl.
func (*GraphNodeConfigVariable) RemoveIfNotTargeted ¶ added in v0.7.0
func (n *GraphNodeConfigVariable) RemoveIfNotTargeted() bool
RemoveIfNotTargeted implements RemovableIfNotTargeted. When targeting is active, variables that are not targeted should be removed from the graph, because otherwise module variables trying to interpolate their references can fail when they're missing the referent resource node.
func (*GraphNodeConfigVariable) VariableName ¶ added in v0.5.0
func (n *GraphNodeConfigVariable) VariableName() string
type GraphNodeConfigVariableFlat ¶ added in v0.5.0
type GraphNodeConfigVariableFlat struct {
*GraphNodeConfigVariable
PathValue []string
}
func (*GraphNodeConfigVariableFlat) DependableName ¶ added in v0.5.0
func (n *GraphNodeConfigVariableFlat) DependableName() []string
func (*GraphNodeConfigVariableFlat) DependentOn ¶ added in v0.5.0
func (n *GraphNodeConfigVariableFlat) DependentOn() []string
func (*GraphNodeConfigVariableFlat) Name ¶ added in v0.5.0
func (n *GraphNodeConfigVariableFlat) Name() string
type GraphNodeCountDependent ¶ added in v0.5.0
type GraphNodeCountDependent interface {
CountDependentOn() []string
}
GraphNodeCountDependent is implemented by resources for giving only the dependencies they have from the "count" field.
type GraphNodeCreator ¶ added in v0.7.8
type GraphNodeCreator interface {
// ResourceAddr is the address of the resource being created or updated
CreateAddr() *ResourceAddress
}
GraphNodeCreator must be implemented by nodes that create OR update resources.
type GraphNodeDependable ¶ added in v0.4.0
type GraphNodeDependable interface {
DependableName() []string
}
GraphNodeDependable is an interface which says that a node can be depended on (an edge can be placed between this node and another) according to the well-known name returned by DependableName.
DependableName can return multiple names it is known by.
type GraphNodeDependent ¶ added in v0.4.0
type GraphNodeDependent interface {
DependentOn() []string
}
GraphNodeDependent is an interface which says that a node depends on another GraphNodeDependable by some name. By implementing this interface, Graph.ConnectDependents() can be called multiple times safely and efficiently.
type GraphNodeDestroy ¶ added in v0.4.0
type GraphNodeDestroy interface {
dag.Vertex
// CreateBeforeDestroy is called to check whether this node
// should be created before it is destroyed. The CreateBeforeDestroy
// transformer uses this information to setup the graph.
CreateBeforeDestroy() bool
// CreateNode returns the node used for the create side of this
// destroy. This must already exist within the graph.
CreateNode() dag.Vertex
}
GraphNodeDestroy is the interface that must implemented by nodes that destroy.
type GraphNodeDestroyEdgeInclude ¶ added in v0.5.0
type GraphNodeDestroyEdgeInclude interface {
DestroyEdgeInclude(dag.Vertex) bool
}
GraphNodeEdgeInclude can be implemented to not include something as an edge within the destroy graph. This is usually done because it might cause unnecessary cycles.
type GraphNodeDestroyPrunable ¶ added in v0.4.0
type GraphNodeDestroyPrunable interface {
// DestroyInclude is called to check if this node should be included
// with the given state. The state and diff must NOT be modified.
DestroyInclude(*ModuleDiff, *ModuleState) bool
}
GraphNodeDestroyPrunable is the interface that can be implemented to signal that this node can be pruned depending on state.
type GraphNodeDestroyable ¶ added in v0.4.0
type GraphNodeDestroyable interface {
// DestroyNode returns the node used for the destroy with the given
// mode. If this returns nil, then a destroy node for that mode
// will not be added.
DestroyNode() GraphNodeDestroy
}
GraphNodeDestroyable is the interface that nodes that can be destroyed must implement. This is used to automatically handle the creation of destroy nodes in the graph and the dependency ordering of those destroys.
type GraphNodeDestroyer ¶ added in v0.7.8
type GraphNodeDestroyer interface {
dag.Vertex
// ResourceAddr is the address of the resource that is being
// destroyed by this node. If this returns nil, then this node
// is not destroying anything.
DestroyAddr() *ResourceAddress
}
GraphNodeDestroyer must be implemented by nodes that destroy resources.
type GraphNodeDestroyerCBD ¶ added in v0.7.8
type GraphNodeDestroyerCBD interface {
GraphNodeDestroyer
// CreateBeforeDestroy returns true if this node represents a node
// that is doing a CBD.
CreateBeforeDestroy() bool
// ModifyCreateBeforeDestroy is called when the CBD state of a node
// is changed dynamically. This can return an error if this isn't
// allowed.
ModifyCreateBeforeDestroy(bool) error
}
GraphNodeDestroyerCBD must be implemented by nodes that might be create-before-destroy destroyers.
type GraphNodeDynamicExpandable ¶ added in v0.4.0
type GraphNodeDynamicExpandable interface {
DynamicExpand(EvalContext) (*Graph, error)
}
GraphNodeDynamicExpandable is an interface that nodes can implement to signal that they can be expanded at eval-time (hence dynamic). These nodes are given the eval context and are expected to return a new subgraph.
type GraphNodeEvalable ¶ added in v0.4.0
type GraphNodeEvalable interface {
EvalTree() EvalNode
}
GraphNodeEvalable is the interface that graph nodes must implement to enable valuation.
type GraphNodeExpandable ¶ added in v0.4.0
type GraphNodeExpandable interface {
Expand(GraphBuilder) (GraphNodeSubgraph, error)
}
GraphNodeExapndable is an interface that nodes can implement to signal that they can be expanded. Expanded nodes turn into GraphNodeSubgraph nodes within the graph.
type GraphNodeFlatGraph ¶ added in v0.5.0
type GraphNodeFlatGraph interface {
FlattenGraph() *Graph
}
GraphNodeFlatGraph must be implemented by nodes that have subgraphs that they want flattened into the graph.
type GraphNodeFlattenable ¶ added in v0.5.0
type GraphNodeFlattenable interface {
Flatten(path []string) (dag.Vertex, error)
}
GraphNodeFlattenable must be implemented by all nodes that can be flattened. If a FlattenGraph returns any nodes that can't be flattened, it will be an error.
If Flatten returns nil for the Vertex along with a nil error, it will removed from the graph.
type GraphNodeNoopPrunable ¶ added in v0.6.1
type GraphNodeNoopPrunable interface {
Noop(*NoopOpts) bool
}
GraphNodeNoopPrunable can be implemented by nodes that can be pruned if they are noops.
type GraphNodeOutput ¶ added in v0.5.0
type GraphNodeOutput interface {
OutputName() string
}
GraphNodeOutput is an interface that nodes that are outputs must implement. The OutputName returned is the name of the output key that they manage.
type GraphNodeProvider ¶ added in v0.4.0
type GraphNodeProvider interface {
ProviderName() string
ProviderConfig() *config.RawConfig
}
GraphNodeProvider is an interface that nodes that can be a provider must implement. The ProviderName returned is the name of the provider they satisfy.
type GraphNodeProviderConsumer ¶ added in v0.4.0
type GraphNodeProviderConsumer interface {
ProvidedBy() []string
}
GraphNodeProviderConsumer is an interface that nodes that require a provider must implement. ProvidedBy must return the name of the provider to use.
type GraphNodeProvisioner ¶ added in v0.4.0
type GraphNodeProvisioner interface {
ProvisionerName() string
}
GraphNodeProvisioner is an interface that nodes that can be a provisioner must implement. The ProvisionerName returned is the name of the provisioner they satisfy.
type GraphNodeProvisionerConsumer ¶ added in v0.4.0
type GraphNodeProvisionerConsumer interface {
ProvisionedBy() []string
}
GraphNodeProvisionerConsumer is an interface that nodes that require a provisioner must implement. ProvisionedBy must return the name of the provisioner to use.
type GraphNodeProxy ¶ added in v0.5.0
type GraphNodeProxy interface {
Proxy() bool
}
GraphNodeProxy must be implemented by nodes that are proxies.
A node that is a proxy says that anything that depends on this node (the proxy), should also copy all the things that the proxy itself depends on. Example:
A => proxy => C
Should transform into (two edges):
A => proxy => C A => C
The purpose for this is because some transforms only look at direct edge connections and the proxy generally isn't meaningful in those situations, so we should complete all the edges.
type GraphNodeReferenceGlobal ¶ added in v0.7.8
type GraphNodeReferenceGlobal interface {
// Set to true to signal that references and name are fully
// qualified. See the above docs for more information.
ReferenceGlobal() bool
}
GraphNodeReferenceGlobal is an interface that can optionally be implemented. If ReferenceGlobal returns true, then the References() and ReferenceableName() must be _fully qualified_ with "module.foo.bar" etc.
This allows a node to reference and be referenced by a specific name that may cross module boundaries. This can be very dangerous so use this wisely.
The primary use case for this is module boundaries (variables coming in).
type GraphNodeReferenceable ¶ added in v0.7.8
type GraphNodeReferenceable interface {
// ReferenceableName is the name by which this can be referenced.
// This can be either just the type, or include the field. Example:
// "aws_instance.bar" or "aws_instance.bar.id".
ReferenceableName() []string
}
GraphNodeReferenceable must be implemented by any node that represents a Terraform thing that can be referenced (resource, module, etc.).
Even if the thing has no name, this should return an empty list. By implementing this and returning a non-nil result, you say that this CAN be referenced and other methods of referencing may still be possible (such as by path!)
type GraphNodeReferencer ¶ added in v0.7.8
type GraphNodeReferencer interface {
// References are the list of things that this node references. This
// can include fields or just the type, just like GraphNodeReferenceable
// above.
References() []string
}
GraphNodeReferencer must be implemented by nodes that reference other Terraform items and therefore depend on them.
type GraphNodeResource ¶
type GraphNodeResource interface {
ResourceAddr() *ResourceAddress
}
GraphNodeResource is implemented by any nodes that represent a resource. The type of operation cannot be assumed, only that this node represents the given resource.
type GraphNodeStateRepresentative ¶ added in v0.4.0
type GraphNodeStateRepresentative interface {
StateId() []string
}
GraphNodeStateRepresentative is an interface that can be implemented by a node to say that it is representing a resource in the state.
type GraphNodeSubPath ¶ added in v0.5.0
type GraphNodeSubPath interface {
Path() []string
}
GraphNodeSubPath says that a node is part of a graph with a different path, and the context should be adjusted accordingly.
type GraphNodeSubgraph ¶ added in v0.4.0
type GraphNodeSubgraph interface {
Subgraph() dag.Grapher
}
GraphNodeSubgraph is an interface a node can implement if it has a larger subgraph that should be walked.
type GraphNodeTargetable ¶ added in v0.4.0
type GraphNodeTargetable interface {
SetTargets([]ResourceAddress)
}
GraphNodeTargetable is an interface for graph nodes to implement when they need to be told about incoming targets. This is useful for nodes that need to respect targets as they dynamically expand. Note that the list of targets provided will contain every target provided, and each implementing graph node must filter this list to targets considered relevant.
type GraphProxyEdge ¶ added in v0.5.0
type GraphProxyEdge struct {
dag.Edge
}
GraphProxyEdge is the edge that is used for proxied edges.
type GraphSemanticChecker ¶ added in v0.4.0
type GraphSemanticChecker interface {
Check(*dag.Graph) error
}
GraphSemanticChecker is the interface that semantic checks across the entire Terraform graph implement.
The graph should NOT be modified by the semantic checker.
type GraphTransformer ¶ added in v0.4.0
type GraphTransformer interface {
Transform(*Graph) error
}
GraphTransformer is the interface that transformers implement. This interface is only for transforms that need entire graph visibility.
func GraphTransformIf ¶ added in v0.7.8
func GraphTransformIf(f func() bool, then GraphTransformer) GraphTransformer
GraphTransformIf is a helper function that conditionally returns a GraphTransformer given. This is useful for calling inline a sequence of transforms without having to split it up into multiple append() calls.
func GraphTransformMulti ¶ added in v0.7.8
func GraphTransformMulti(ts ...GraphTransformer) GraphTransformer
GraphTransformMulti combines multiple graph transformers into a single GraphTransformer that runs all the individual graph transformers.
type GraphType ¶ added in v0.8.0
type GraphType byte
GraphType is an enum of the type of graph to create with a Context. The values of the constants may change so they shouldn't be depended on; always use the constant name.
const (
GraphTypeInvalid GraphType = 0
GraphTypeLegacy GraphType = iota
GraphTypePlan
GraphTypePlanDestroy
GraphTypeApply
)
type GraphVertexTransformer ¶ added in v0.4.0
type GraphVertexTransformer interface {
Transform(dag.Vertex) (dag.Vertex, error)
}
GraphVertexTransformer is an interface that transforms a single Vertex within with graph. This is a specialization of GraphTransformer that makes it easy to do vertex replacement.
The GraphTransformer that runs through the GraphVertexTransformers is VertexTransformer.
type GraphWalker ¶ added in v0.4.0
type GraphWalker interface {
EnterPath([]string) EvalContext
ExitPath([]string)
EnterVertex(dag.Vertex)
ExitVertex(dag.Vertex, error)
EnterEvalTree(dag.Vertex, EvalNode) EvalNode
ExitEvalTree(dag.Vertex, interface{}, error) error
}
GraphWalker is an interface that can be implemented that when used with Graph.Walk will invoke the given callbacks under certain events.
type GraphWalkerPanicwrapper ¶ added in v0.7.9
type GraphWalkerPanicwrapper interface {
GraphWalker
// Panic is called when a panic occurs. This will halt the panic from
// propogating so if the walker wants it to crash still it should panic
// again. This is called from within a defer so runtime/debug.Stack can
// be used to get the stack trace of the panic.
Panic(dag.Vertex, interface{})
}
GrpahWalkerPanicwrapper can be optionally implemented to catch panics that occur while walking the graph. This is not generally recommended since panics should crash Terraform and result in a bug report. However, this is particularly useful for situations like the shadow graph where you don't ever want to cause a panic.
func GraphWalkerPanicwrap ¶ added in v0.7.9
func GraphWalkerPanicwrap(w GraphWalker) GraphWalkerPanicwrapper
GraphWalkerPanicwrap wraps an existing Graphwalker to wrap and swallow the panics. This doesn't lose the panics since the panics are still returned as errors as part of a graph walk.
type Hook ¶
type Hook interface {
// PreApply and PostApply are called before and after a single
// resource is applied. The error argument in PostApply is the
// error, if any, that was returned from the provider Apply call itself.
PreApply(*InstanceInfo, *InstanceState, *InstanceDiff) (HookAction, error)
PostApply(*InstanceInfo, *InstanceState, error) (HookAction, error)
// PreDiff and PostDiff are called before and after a single resource
// resource is diffed.
PreDiff(*InstanceInfo, *InstanceState) (HookAction, error)
PostDiff(*InstanceInfo, *InstanceDiff) (HookAction, error)
// Provisioning hooks
//
// All should be self-explanatory. ProvisionOutput is called with
// output sent back by the provisioners. This will be called multiple
// times as output comes in, but each call should represent a line of
// output. The ProvisionOutput method cannot control whether the
// hook continues running.
PreProvisionResource(*InstanceInfo, *InstanceState) (HookAction, error)
PostProvisionResource(*InstanceInfo, *InstanceState) (HookAction, error)
PreProvision(*InstanceInfo, string) (HookAction, error)
PostProvision(*InstanceInfo, string) (HookAction, error)
ProvisionOutput(*InstanceInfo, string, string)
// PreRefresh and PostRefresh are called before and after a single
// resource state is refreshed, respectively.
PreRefresh(*InstanceInfo, *InstanceState) (HookAction, error)
PostRefresh(*InstanceInfo, *InstanceState) (HookAction, error)
// PostStateUpdate is called after the state is updated.
PostStateUpdate(*State) (HookAction, error)
// PreImportState and PostImportState are called before and after
// a single resource's state is being improted.
PreImportState(*InstanceInfo, string) (HookAction, error)
PostImportState(*InstanceInfo, []*InstanceState) (HookAction, error)
}
Hook is the interface that must be implemented to hook into various parts of Terraform, allowing you to inspect or change behavior at runtime.
There are MANY hook points into Terraform. If you only want to implement some hook points, but not all (which is the likely case), then embed the NilHook into your struct, which implements all of the interface but does nothing. Then, override only the functions you want to implement.
type HookAction ¶
type HookAction byte
HookAction is an enum of actions that can be taken as a result of a hook callback. This allows you to modify the behavior of Terraform at runtime.
const (
// HookActionContinue continues with processing as usual.
HookActionContinue HookAction = iota
// HookActionHalt halts immediately: no more hooks are processed
// and the action that Terraform was about to take is cancelled.
HookActionHalt
)
type ImportGraphBuilder ¶ added in v0.7.0
type ImportGraphBuilder struct {
// ImportTargets are the list of resources to import.
ImportTargets []*ImportTarget
// Module is the module to add to the graph. See ImportOpts.Module.
Module *module.Tree
// Providers is the list of providers supported.
Providers []string
}
ImportGraphBuilder implements GraphBuilder and is responsible for building a graph for importing resources into Terraform. This is a much, much simpler graph than a normal configuration graph.
type ImportOpts ¶ added in v0.7.0
type ImportOpts struct {
// Targets are the targets to import
Targets []*ImportTarget
// Module is optional, and specifies a config module that is loaded
// into the graph and evaluated. The use case for this is to provide
// provider configuration.
Module *module.Tree
}
ImportOpts are used as the configuration for Import.
type ImportProviderValidateTransformer ¶ added in v0.8.0
type ImportProviderValidateTransformer struct{}
ImportProviderValidateTransformer is a GraphTransformer that goes through the providers in the graph and validates that they only depend on variables.
type ImportStateTransformer ¶ added in v0.7.0
type ImportStateTransformer struct {
Targets []*ImportTarget
}
ImportStateTransformer is a GraphTransformer that adds nodes to the graph to represent the imports we want to do for resources.
type ImportTarget ¶ added in v0.7.0
type ImportTarget struct {
// Addr is the full resource address of the resource to import.
// Example: "module.foo.aws_instance.bar"
Addr string
// ID is the ID of the resource to import. This is resource-specific.
ID string
// Provider string
Provider string
}
ImportTarget is a single resource to import.
type InputMode ¶ added in v0.3.0
type InputMode byte
InputMode defines what sort of input will be asked for when Input is called on Context.
const (
// InputModeVar asks for all variables
InputModeVar InputMode = 1 << iota
// InputModeVarUnset asks for variables which are not set yet.
// InputModeVar must be set for this to have an effect.
InputModeVarUnset
// InputModeProvider asks for provider variables
InputModeProvider
// InputModeStd is the standard operating mode and asks for both variables
// and providers.
InputModeStd = InputModeVar | InputModeProvider
)
type InputOpts ¶ added in v0.3.0
type InputOpts struct {
// Id is a unique ID for the question being asked that might be
// used for logging or to look up a prior answered question.
Id string
// Query is a human-friendly question for inputting this value.
Query string
// Description is a description about what this option is. Be wary
// that this will probably be in a terminal so split lines as you see
// necessary.
Description string
// Default will be the value returned if no data is entered.
Default string
}
InputOpts are options for asking for input.
type InstanceDiff ¶ added in v0.3.0
type InstanceDiff struct {
Attributes map[string]*ResourceAttrDiff
Destroy bool
DestroyDeposed bool
DestroyTainted bool
// contains filtered or unexported fields
}
InstanceDiff is the diff of a resource from some state to another.
func NewInstanceDiff ¶ added in v0.7.0
func NewInstanceDiff() *InstanceDiff
func (*InstanceDiff) ChangeType ¶ added in v0.3.0
func (d *InstanceDiff) ChangeType() DiffChangeType
ChangeType returns the DiffChangeType represented by the diff for this single instance.
func (*InstanceDiff) CopyAttributes ¶ added in v0.7.0
func (d *InstanceDiff) CopyAttributes() map[string]*ResourceAttrDiff
Safely copies the Attributes map
func (*InstanceDiff) DeepCopy ¶ added in v0.7.8
func (d *InstanceDiff) DeepCopy() *InstanceDiff
DeepCopy performs a deep copy of all parts of the InstanceDiff
func (*InstanceDiff) DelAttribute ¶ added in v0.7.0
func (d *InstanceDiff) DelAttribute(key string)
func (*InstanceDiff) Empty ¶ added in v0.3.0
func (d *InstanceDiff) Empty() bool
Empty returns true if this diff encapsulates no changes.
func (*InstanceDiff) Equal ¶ added in v0.7.8
func (d *InstanceDiff) Equal(d2 *InstanceDiff) bool
Equal compares two diffs for exact equality.
This is different from the Same comparison that is supported which checks for operation equality taking into account computed values. Equal instead checks for exact equality.
func (*InstanceDiff) GetAttribute ¶ added in v0.7.0
func (d *InstanceDiff) GetAttribute(key string) (*ResourceAttrDiff, bool)
func (*InstanceDiff) GetAttributesLen ¶ added in v0.7.0
func (d *InstanceDiff) GetAttributesLen() int
func (*InstanceDiff) GetDestroy ¶ added in v0.7.0
func (d *InstanceDiff) GetDestroy() bool
func (*InstanceDiff) GetDestroyDeposed ¶ added in v0.8.0
func (d *InstanceDiff) GetDestroyDeposed() bool
func (*InstanceDiff) GetDestroyTainted ¶ added in v0.7.0
func (d *InstanceDiff) GetDestroyTainted() bool
func (*InstanceDiff) RequiresNew ¶ added in v0.3.0
func (d *InstanceDiff) RequiresNew() bool
RequiresNew returns true if the diff requires the creation of a new resource (implying the destruction of the old).
func (*InstanceDiff) Same ¶ added in v0.3.0
func (d *InstanceDiff) Same(d2 *InstanceDiff) (bool, string)
Same checks whether or not two InstanceDiff's are the "same". When we say "same", it is not necessarily exactly equal. Instead, it is just checking that the same attributes are changing, a destroy isn't suddenly happening, etc.
func (*InstanceDiff) SetAttribute ¶ added in v0.7.0
func (d *InstanceDiff) SetAttribute(key string, attr *ResourceAttrDiff)
func (*InstanceDiff) SetDestroy ¶ added in v0.7.0
func (d *InstanceDiff) SetDestroy(b bool)
func (*InstanceDiff) SetDestroyDeposed ¶ added in v0.8.0
func (d *InstanceDiff) SetDestroyDeposed(b bool)
func (*InstanceDiff) SetTainted ¶ added in v0.7.0
func (d *InstanceDiff) SetTainted(b bool)
These methods are properly locked, for use outside other InstanceDiff methods but everywhere else within in the terraform package. TODO refactor the locking scheme
type InstanceInfo ¶ added in v0.3.0
type InstanceInfo struct {
// Id is a unique name to represent this instance. This is not related
// to InstanceState.ID in any way.
Id string
// ModulePath is the complete path of the module containing this
// instance.
ModulePath []string
// Type is the resource type of this instance
Type string
// contains filtered or unexported fields
}
InstanceInfo is used to hold information about the instance and/or resource being modified.
type InstanceState ¶ added in v0.3.0
type InstanceState struct {
// A unique ID for this resource. This is opaque to Terraform
// and is only meant as a lookup mechanism for the providers.
ID string `json:"id"`
// Attributes are basic information about the resource. Any keys here
// are accessible in variable format within Terraform configurations:
// ${resourcetype.name.attribute}.
Attributes map[string]string `json:"attributes"`
// Ephemeral is used to store any state associated with this instance
// that is necessary for the Terraform run to complete, but is not
// persisted to a state file.
Ephemeral EphemeralState `json:"-"`
// Meta is a simple K/V map that is persisted to the State but otherwise
// ignored by Terraform core. It's meant to be used for accounting by
// external client code.
Meta map[string]string `json:"meta"`
// Tainted is used to mark a resource for recreation.
Tainted bool `json:"tainted"`
// contains filtered or unexported fields
}
InstanceState is used to track the unique state information belonging to a given instance.
func (*InstanceState) Equal ¶ added in v0.4.0
func (s *InstanceState) Equal(other *InstanceState) bool
func (*InstanceState) MergeDiff ¶ added in v0.3.0
func (s *InstanceState) MergeDiff(d *InstanceDiff) *InstanceState
MergeDiff takes a ResourceDiff and merges the attributes into this resource state in order to generate a new state. This new state can be used to provide updated attribute lookups for variable interpolation.
If the diff attribute requires computing the value, and hence won't be available until apply, the value is replaced with the computeID.
type InstanceType ¶ added in v0.4.0
type InstanceType int
InstanceType is an enum of the various types of instances store in the State
const (
TypeInvalid InstanceType = iota
TypePrimary
TypeTainted
TypeDeposed
)
func ParseInstanceType ¶ added in v0.4.0
func ParseInstanceType(s string) (InstanceType, error)
type Interpolater ¶ added in v0.4.0
type Interpolater struct {
Operation walkOperation
Module *module.Tree
State *State
StateLock *sync.RWMutex
VariableValues map[string]interface{}
VariableValuesLock *sync.Mutex
}
Interpolater is the structure responsible for determining the values for interpolations such as `aws_instance.foo.bar`.
type InterpolationScope ¶ added in v0.4.0
type InterpolationScope struct {
Path []string
Resource *Resource
}
InterpolationScope is the current scope of execution. This is required since some variables which are interpolated are dependent on what we're operating on and where we are.
type MissingProviderTransformer ¶ added in v0.4.0
type MissingProviderTransformer struct {
// Providers is the list of providers we support.
Providers []string
// AllowAny will not check that a provider is supported before adding
// it to the graph.
AllowAny bool
// Concrete, if set, overrides how the providers are made.
Concrete ConcreteProviderNodeFunc
}
MissingProviderTransformer is a GraphTransformer that adds nodes for missing providers into the graph. Specifically, it creates provider configuration nodes for all the providers that we support. These are pruned later during an optimization pass.
type MissingProvisionerTransformer ¶ added in v0.4.0
type MissingProvisionerTransformer struct {
// Provisioners is the list of provisioners we support.
Provisioners []string
}
MissingProvisionerTransformer is a GraphTransformer that adds nodes for missing provisioners into the graph.
type MockEvalContext ¶ added in v0.4.0
type MockEvalContext struct {
HookCalled bool
HookHook Hook
HookError error
InputCalled bool
InputInput UIInput
InitProviderCalled bool
InitProviderName string
InitProviderProvider ResourceProvider
InitProviderError error
ProviderCalled bool
ProviderName string
ProviderProvider ResourceProvider
CloseProviderCalled bool
CloseProviderName string
CloseProviderProvider ResourceProvider
ProviderInputCalled bool
ProviderInputName string
ProviderInputConfig map[string]interface{}
SetProviderInputCalled bool
SetProviderInputName string
SetProviderInputConfig map[string]interface{}
ConfigureProviderCalled bool
ConfigureProviderName string
ConfigureProviderConfig *ResourceConfig
ConfigureProviderError error
SetProviderConfigCalled bool
SetProviderConfigName string
SetProviderConfigConfig *ResourceConfig
ParentProviderConfigCalled bool
ParentProviderConfigName string
ParentProviderConfigConfig *ResourceConfig
InitProvisionerCalled bool
InitProvisionerName string
InitProvisionerProvisioner ResourceProvisioner
InitProvisionerError error
ProvisionerCalled bool
ProvisionerName string
ProvisionerProvisioner ResourceProvisioner
CloseProvisionerCalled bool
CloseProvisionerName string
CloseProvisionerProvisioner ResourceProvisioner
InterpolateCalled bool
InterpolateConfig *config.RawConfig
InterpolateResource *Resource
InterpolateConfigResult *ResourceConfig
InterpolateError error
PathCalled bool
PathPath []string
SetVariablesCalled bool
SetVariablesModule string
SetVariablesVariables map[string]interface{}
DiffCalled bool
DiffDiff *Diff
DiffLock *sync.RWMutex
StateCalled bool
StateState *State
StateLock *sync.RWMutex
}
MockEvalContext is a mock version of EvalContext that can be used for tests.
func (*MockEvalContext) CloseProvider ¶ added in v0.6.0
func (c *MockEvalContext) CloseProvider(n string) error
func (*MockEvalContext) CloseProvisioner ¶ added in v0.6.0
func (c *MockEvalContext) CloseProvisioner(n string) error
func (*MockEvalContext) ConfigureProvider ¶ added in v0.4.0
func (c *MockEvalContext) ConfigureProvider(n string, cfg *ResourceConfig) error
func (*MockEvalContext) Diff ¶ added in v0.4.0
func (c *MockEvalContext) Diff() (*Diff, *sync.RWMutex)
func (*MockEvalContext) Hook ¶ added in v0.4.0
func (c *MockEvalContext) Hook(fn func(Hook) (HookAction, error)) error
func (*MockEvalContext) InitProvider ¶ added in v0.4.0
func (c *MockEvalContext) InitProvider(n string) (ResourceProvider, error)
func (*MockEvalContext) InitProvisioner ¶ added in v0.4.0
func (c *MockEvalContext) InitProvisioner(n string) (ResourceProvisioner, error)
func (*MockEvalContext) Interpolate ¶ added in v0.4.0
func (c *MockEvalContext) Interpolate(
config *config.RawConfig, resource *Resource) (*ResourceConfig, error)
func (*MockEvalContext) ParentProviderConfig ¶ added in v0.4.0
func (c *MockEvalContext) ParentProviderConfig(n string) *ResourceConfig
func (*MockEvalContext) Provider ¶ added in v0.4.0
func (c *MockEvalContext) Provider(n string) ResourceProvider
func (*MockEvalContext) ProviderInput ¶ added in v0.4.0
func (c *MockEvalContext) ProviderInput(n string) map[string]interface{}
func (*MockEvalContext) Provisioner ¶ added in v0.4.0
func (c *MockEvalContext) Provisioner(n string) ResourceProvisioner
func (*MockEvalContext) SetProviderConfig ¶ added in v0.4.1
func (c *MockEvalContext) SetProviderConfig(
n string, cfg *ResourceConfig) error
func (*MockEvalContext) SetProviderInput ¶ added in v0.4.0
func (c *MockEvalContext) SetProviderInput(n string, cfg map[string]interface{})
func (*MockEvalContext) SetVariables ¶ added in v0.4.0
func (c *MockEvalContext) SetVariables(n string, vs map[string]interface{})
type MockHook ¶
type MockHook struct {
sync.Mutex
PreApplyCalled bool
PreApplyInfo *InstanceInfo
PreApplyDiff *InstanceDiff
PreApplyState *InstanceState
PreApplyReturn HookAction
PreApplyError error
PostApplyCalled bool
PostApplyInfo *InstanceInfo
PostApplyState *InstanceState
PostApplyError error
PostApplyReturn HookAction
PostApplyReturnError error
PostApplyFn func(*InstanceInfo, *InstanceState, error) (HookAction, error)
PreDiffCalled bool
PreDiffInfo *InstanceInfo
PreDiffState *InstanceState
PreDiffReturn HookAction
PreDiffError error
PostDiffCalled bool
PostDiffInfo *InstanceInfo
PostDiffDiff *InstanceDiff
PostDiffReturn HookAction
PostDiffError error
PreProvisionResourceCalled bool
PreProvisionResourceInfo *InstanceInfo
PreProvisionInstanceState *InstanceState
PreProvisionResourceReturn HookAction
PreProvisionResourceError error
PostProvisionResourceCalled bool
PostProvisionResourceInfo *InstanceInfo
PostProvisionInstanceState *InstanceState
PostProvisionResourceReturn HookAction
PostProvisionResourceError error
PreProvisionCalled bool
PreProvisionInfo *InstanceInfo
PreProvisionProvisionerId string
PreProvisionReturn HookAction
PreProvisionError error
PostProvisionCalled bool
PostProvisionInfo *InstanceInfo
PostProvisionProvisionerId string
PostProvisionReturn HookAction
PostProvisionError error
ProvisionOutputCalled bool
ProvisionOutputInfo *InstanceInfo
ProvisionOutputProvisionerId string
ProvisionOutputMessage string
PostRefreshCalled bool
PostRefreshInfo *InstanceInfo
PostRefreshState *InstanceState
PostRefreshReturn HookAction
PostRefreshError error
PreRefreshCalled bool
PreRefreshInfo *InstanceInfo
PreRefreshState *InstanceState
PreRefreshReturn HookAction
PreRefreshError error
PreImportStateCalled bool
PreImportStateInfo *InstanceInfo
PreImportStateId string
PreImportStateReturn HookAction
PreImportStateError error
PostImportStateCalled bool
PostImportStateInfo *InstanceInfo
PostImportStateState []*InstanceState
PostImportStateReturn HookAction
PostImportStateError error
PostStateUpdateCalled bool
PostStateUpdateState *State
PostStateUpdateReturn HookAction
PostStateUpdateError error
}
MockHook is an implementation of Hook that can be used for tests. It records all of its function calls.
func (*MockHook) PostApply ¶
func (h *MockHook) PostApply(n *InstanceInfo, s *InstanceState, e error) (HookAction, error)
func (*MockHook) PostDiff ¶
func (h *MockHook) PostDiff(n *InstanceInfo, d *InstanceDiff) (HookAction, error)
func (*MockHook) PostImportState ¶ added in v0.7.0
func (h *MockHook) PostImportState(info *InstanceInfo, s []*InstanceState) (HookAction, error)
func (*MockHook) PostProvision ¶
func (h *MockHook) PostProvision(n *InstanceInfo, provId string) (HookAction, error)
func (*MockHook) PostProvisionResource ¶
func (h *MockHook) PostProvisionResource(n *InstanceInfo, s *InstanceState) (HookAction, error)
func (*MockHook) PostRefresh ¶
func (h *MockHook) PostRefresh(n *InstanceInfo, s *InstanceState) (HookAction, error)
func (*MockHook) PostStateUpdate ¶ added in v0.4.0
func (h *MockHook) PostStateUpdate(s *State) (HookAction, error)
func (*MockHook) PreApply ¶
func (h *MockHook) PreApply(n *InstanceInfo, s *InstanceState, d *InstanceDiff) (HookAction, error)
func (*MockHook) PreDiff ¶
func (h *MockHook) PreDiff(n *InstanceInfo, s *InstanceState) (HookAction, error)
func (*MockHook) PreImportState ¶ added in v0.7.0
func (h *MockHook) PreImportState(info *InstanceInfo, id string) (HookAction, error)
func (*MockHook) PreProvision ¶
func (h *MockHook) PreProvision(n *InstanceInfo, provId string) (HookAction, error)
func (*MockHook) PreProvisionResource ¶
func (h *MockHook) PreProvisionResource(n *InstanceInfo, s *InstanceState) (HookAction, error)
func (*MockHook) PreRefresh ¶
func (h *MockHook) PreRefresh(n *InstanceInfo, s *InstanceState) (HookAction, error)
func (*MockHook) ProvisionOutput ¶ added in v0.3.0
func (h *MockHook) ProvisionOutput(
n *InstanceInfo,
provId string,
msg string)
type MockResourceProvider ¶
type MockResourceProvider struct {
sync.Mutex
// Anything you want, in case you need to store extra data with the mock.
Meta interface{}
CloseCalled bool
CloseError error
InputCalled bool
InputInput UIInput
InputConfig *ResourceConfig
InputReturnConfig *ResourceConfig
InputReturnError error
InputFn func(UIInput, *ResourceConfig) (*ResourceConfig, error)
ApplyCalled bool
ApplyInfo *InstanceInfo
ApplyState *InstanceState
ApplyDiff *InstanceDiff
ApplyFn func(*InstanceInfo, *InstanceState, *InstanceDiff) (*InstanceState, error)
ApplyReturn *InstanceState
ApplyReturnError error
ConfigureCalled bool
ConfigureConfig *ResourceConfig
ConfigureFn func(*ResourceConfig) error
ConfigureReturnError error
DiffCalled bool
DiffInfo *InstanceInfo
DiffState *InstanceState
DiffDesired *ResourceConfig
DiffFn func(*InstanceInfo, *InstanceState, *ResourceConfig) (*InstanceDiff, error)
DiffReturn *InstanceDiff
DiffReturnError error
RefreshCalled bool
RefreshInfo *InstanceInfo
RefreshState *InstanceState
RefreshFn func(*InstanceInfo, *InstanceState) (*InstanceState, error)
RefreshReturn *InstanceState
RefreshReturnError error
ResourcesCalled bool
ResourcesReturn []ResourceType
ReadDataApplyCalled bool
ReadDataApplyInfo *InstanceInfo
ReadDataApplyDiff *InstanceDiff
ReadDataApplyFn func(*InstanceInfo, *InstanceDiff) (*InstanceState, error)
ReadDataApplyReturn *InstanceState
ReadDataApplyReturnError error
ReadDataDiffCalled bool
ReadDataDiffInfo *InstanceInfo
ReadDataDiffDesired *ResourceConfig
ReadDataDiffFn func(*InstanceInfo, *ResourceConfig) (*InstanceDiff, error)
ReadDataDiffReturn *InstanceDiff
ReadDataDiffReturnError error
StopCalled bool
StopFn func() error
StopReturnError error
DataSourcesCalled bool
DataSourcesReturn []DataSource
ValidateCalled bool
ValidateConfig *ResourceConfig
ValidateFn func(*ResourceConfig) ([]string, []error)
ValidateReturnWarns []string
ValidateReturnErrors []error
ValidateResourceFn func(string, *ResourceConfig) ([]string, []error)
ValidateResourceCalled bool
ValidateResourceType string
ValidateResourceConfig *ResourceConfig
ValidateResourceReturnWarns []string
ValidateResourceReturnErrors []error
ValidateDataSourceFn func(string, *ResourceConfig) ([]string, []error)
ValidateDataSourceCalled bool
ValidateDataSourceType string
ValidateDataSourceConfig *ResourceConfig
ValidateDataSourceReturnWarns []string
ValidateDataSourceReturnErrors []error
ImportStateCalled bool
ImportStateInfo *InstanceInfo
ImportStateID string
ImportStateReturn []*InstanceState
ImportStateReturnError error
ImportStateFn func(*InstanceInfo, string) ([]*InstanceState, error)
}
MockResourceProvider implements ResourceProvider but mocks out all the calls for testing purposes.
func (*MockResourceProvider) Apply ¶
func (p *MockResourceProvider) Apply(
info *InstanceInfo,
state *InstanceState,
diff *InstanceDiff) (*InstanceState, error)
func (*MockResourceProvider) Configure ¶
func (p *MockResourceProvider) Configure(c *ResourceConfig) error
func (*MockResourceProvider) DataSources ¶ added in v0.7.0
func (p *MockResourceProvider) DataSources() []DataSource
func (*MockResourceProvider) Diff ¶
func (p *MockResourceProvider) Diff(
info *InstanceInfo,
state *InstanceState,
desired *ResourceConfig) (*InstanceDiff, error)
func (*MockResourceProvider) ImportState ¶ added in v0.7.0
func (p *MockResourceProvider) ImportState(info *InstanceInfo, id string) ([]*InstanceState, error)
func (*MockResourceProvider) Input ¶ added in v0.3.0
func (p *MockResourceProvider) Input(
input UIInput, c *ResourceConfig) (*ResourceConfig, error)
func (*MockResourceProvider) ReadDataApply ¶ added in v0.7.0
func (p *MockResourceProvider) ReadDataApply(
info *InstanceInfo,
d *InstanceDiff) (*InstanceState, error)
func (*MockResourceProvider) ReadDataDiff ¶ added in v0.7.0
func (p *MockResourceProvider) ReadDataDiff(
info *InstanceInfo,
desired *ResourceConfig) (*InstanceDiff, error)
func (*MockResourceProvider) Refresh ¶
func (p *MockResourceProvider) Refresh(
info *InstanceInfo,
s *InstanceState) (*InstanceState, error)
func (*MockResourceProvider) Validate ¶
func (p *MockResourceProvider) Validate(c *ResourceConfig) ([]string, []error)
func (*MockResourceProvider) ValidateDataSource ¶ added in v0.7.0
func (p *MockResourceProvider) ValidateDataSource(t string, c *ResourceConfig) ([]string, []error)
func (*MockResourceProvider) ValidateResource ¶
func (p *MockResourceProvider) ValidateResource(t string, c *ResourceConfig) ([]string, []error)
type MockResourceProvisioner ¶
type MockResourceProvisioner struct {
sync.Mutex
// Anything you want, in case you need to store extra data with the mock.
Meta interface{}
ApplyCalled bool
ApplyOutput UIOutput
ApplyState *InstanceState
ApplyConfig *ResourceConfig
ApplyFn func(*InstanceState, *ResourceConfig) error
ApplyReturnError error
ValidateCalled bool
ValidateConfig *ResourceConfig
ValidateFn func(c *ResourceConfig) ([]string, []error)
ValidateReturnWarns []string
ValidateReturnErrors []error
}
MockResourceProvisioner implements ResourceProvisioner but mocks out all the calls for testing purposes.
type MockUIInput ¶ added in v0.3.0
type MockUIInput struct {
InputCalled bool
InputOpts *InputOpts
InputReturnMap map[string]string
InputReturnString string
InputReturnError error
InputFn func(*InputOpts) (string, error)
}
MockUIInput is an implementation of UIInput that can be used for tests.
type MockUIOutput ¶ added in v0.3.0
type MockUIOutput struct {
OutputCalled bool
OutputMessage string
OutputFn func(string)
}
MockUIOutput is an implementation of UIOutput that can be used for tests.
type ModuleDestroyTransformerOld ¶ added in v0.7.8
type ModuleDestroyTransformerOld struct{}
ModuleDestroyTransformer is a GraphTransformer that adds a node to the graph that will just mark the full module for destroy in the destroy scenario.
type ModuleDiff ¶ added in v0.3.0
type ModuleDiff struct {
Path []string
Resources map[string]*InstanceDiff
Destroy bool // Set only by the destroy plan
}
ModuleDiff tracks the differences between resources to apply within a single module.
func (*ModuleDiff) ChangeType ¶ added in v0.3.0
func (d *ModuleDiff) ChangeType() DiffChangeType
ChangeType returns the type of changes that the diff for this module includes.
At a module level, this will only be DiffNone, DiffUpdate, DiffDestroy, or DiffCreate. If an instance within the module has a DiffDestroyCreate then this will register as a DiffCreate for a module.
func (*ModuleDiff) Empty ¶ added in v0.3.0
func (d *ModuleDiff) Empty() bool
Empty returns true if the diff has no changes within this module.
func (*ModuleDiff) Instances ¶ added in v0.3.0
func (d *ModuleDiff) Instances(id string) []*InstanceDiff
Instances returns the instance diffs for the id given. This can return multiple instance diffs if there are counts within the resource.
type ModuleState ¶ added in v0.3.0
type ModuleState struct {
// Path is the import path from the root module. Modules imports are
// always disjoint, so the path represents amodule tree
Path []string `json:"path"`
// Outputs declared by the module and maintained for each module
// even though only the root module technically needs to be kept.
// This allows operators to inspect values at the boundaries.
Outputs map[string]*OutputState `json:"outputs"`
// Resources is a mapping of the logically named resource to
// the state of the resource. Each resource may actually have
// N instances underneath, although a user only needs to think
// about the 1:1 case.
Resources map[string]*ResourceState `json:"resources"`
// Dependencies are a list of things that this module relies on
// existing to remain intact. For example: an module may depend
// on a VPC ID given by an aws_vpc resource.
//
// Terraform uses this information to build valid destruction
// orders and to warn the user if they're destroying a module that
// another resource depends on.
//
// Things can be put into this list that may not be managed by
// Terraform. If Terraform doesn't find a matching ID in the
// overall state, then it assumes it isn't managed and doesn't
// worry about it.
Dependencies []string `json:"depends_on"`
// contains filtered or unexported fields
}
ModuleState is used to track all the state relevant to a single module. Previous to Terraform 0.3, all state belonged to the "root" module.
func (*ModuleState) Equal ¶ added in v0.4.0
func (m *ModuleState) Equal(other *ModuleState) bool
Equal tests whether one module state is equal to another.
func (*ModuleState) IsDescendent ¶ added in v0.7.2
func (m *ModuleState) IsDescendent(other *ModuleState) bool
IsDescendent returns true if other is a descendent of this module.
func (*ModuleState) IsRoot ¶ added in v0.3.0
func (m *ModuleState) IsRoot() bool
IsRoot says whether or not this module diff is for the root module.
type ModuleVariableTransformer ¶ added in v0.7.8
type ModuleVariableTransformer struct {
Module *module.Tree
DisablePrune bool // True if pruning unreferenced should be disabled
}
ModuleVariableTransformer is a GraphTransformer that adds all the variables in the configuration to the graph.
This only adds variables that are referenced by other things in the graph. If a module variable is not referenced, it won't be added to the graph.
type NilHook ¶
type NilHook struct{}
NilHook is a Hook implementation that does nothing. It exists only to simplify implementing hooks. You can embed this into your Hook implementation and only implement the functions you are interested in.
func (*NilHook) PostApply ¶
func (*NilHook) PostApply(*InstanceInfo, *InstanceState, error) (HookAction, error)
func (*NilHook) PostDiff ¶
func (*NilHook) PostDiff(*InstanceInfo, *InstanceDiff) (HookAction, error)
func (*NilHook) PostImportState ¶ added in v0.7.0
func (*NilHook) PostImportState(*InstanceInfo, []*InstanceState) (HookAction, error)
func (*NilHook) PostProvision ¶
func (*NilHook) PostProvision(*InstanceInfo, string) (HookAction, error)
func (*NilHook) PostProvisionResource ¶
func (*NilHook) PostProvisionResource(*InstanceInfo, *InstanceState) (HookAction, error)
func (*NilHook) PostRefresh ¶
func (*NilHook) PostRefresh(*InstanceInfo, *InstanceState) (HookAction, error)
func (*NilHook) PostStateUpdate ¶ added in v0.4.0
func (*NilHook) PostStateUpdate(*State) (HookAction, error)
func (*NilHook) PreApply ¶
func (*NilHook) PreApply(*InstanceInfo, *InstanceState, *InstanceDiff) (HookAction, error)
func (*NilHook) PreDiff ¶
func (*NilHook) PreDiff(*InstanceInfo, *InstanceState) (HookAction, error)
func (*NilHook) PreImportState ¶ added in v0.7.0
func (*NilHook) PreImportState(*InstanceInfo, string) (HookAction, error)
func (*NilHook) PreProvision ¶
func (*NilHook) PreProvision(*InstanceInfo, string) (HookAction, error)
func (*NilHook) PreProvisionResource ¶
func (*NilHook) PreProvisionResource(*InstanceInfo, *InstanceState) (HookAction, error)
func (*NilHook) PreRefresh ¶
func (*NilHook) PreRefresh(*InstanceInfo, *InstanceState) (HookAction, error)
func (*NilHook) ProvisionOutput ¶ added in v0.3.0
func (*NilHook) ProvisionOutput(
*InstanceInfo, string, string)
type NodeAbstractProvider ¶ added in v0.7.8
type NodeAbstractProvider struct {
NameValue string
PathValue []string
Config *config.ProviderConfig
}
NodeAbstractProvider represents a provider that has no associated operations. It registers all the common interfaces across operations for providers.
func (*NodeAbstractProvider) AttachProvider ¶ added in v0.7.8
func (n *NodeAbstractProvider) AttachProvider(c *config.ProviderConfig)
GraphNodeAttachProvider
func (*NodeAbstractProvider) DotNode ¶ added in v0.8.0
func (n *NodeAbstractProvider) DotNode(name string, opts *dag.DotOpts) *dag.DotNode
GraphNodeDotter impl.
func (*NodeAbstractProvider) Path ¶ added in v0.7.8
func (n *NodeAbstractProvider) Path() []string
GraphNodeSubPath
func (*NodeAbstractProvider) ProviderConfig ¶ added in v0.7.8
func (n *NodeAbstractProvider) ProviderConfig() *config.RawConfig
GraphNodeProvider
func (*NodeAbstractProvider) ProviderName ¶ added in v0.7.8
func (n *NodeAbstractProvider) ProviderName() string
GraphNodeProvider
func (*NodeAbstractProvider) References ¶ added in v0.7.8
func (n *NodeAbstractProvider) References() []string
GraphNodeReferencer
type NodeAbstractResource ¶ added in v0.7.8
type NodeAbstractResource struct {
Addr *ResourceAddress // Addr is the address for this resource
Config *config.Resource // Config is the resource in the config
ResourceState *ResourceState // ResourceState is the ResourceState for this
Targets []ResourceAddress // Set from GraphNodeTargetable
}
NodeAbstractResource represents a resource that has no associated operations. It registers all the interfaces for a resource that common across multiple operation types.
func (*NodeAbstractResource) AttachResourceConfig ¶ added in v0.7.8
func (n *NodeAbstractResource) AttachResourceConfig(c *config.Resource)
GraphNodeAttachResourceConfig
func (*NodeAbstractResource) AttachResourceState ¶ added in v0.7.8
func (n *NodeAbstractResource) AttachResourceState(s *ResourceState)
GraphNodeAttachResourceState
func (*NodeAbstractResource) DotNode ¶ added in v0.8.0
func (n *NodeAbstractResource) DotNode(name string, opts *dag.DotOpts) *dag.DotNode
GraphNodeDotter impl.
func (*NodeAbstractResource) Path ¶ added in v0.7.8
func (n *NodeAbstractResource) Path() []string
GraphNodeSubPath
func (*NodeAbstractResource) ProvidedBy ¶ added in v0.7.8
func (n *NodeAbstractResource) ProvidedBy() []string
GraphNodeProviderConsumer
func (*NodeAbstractResource) ProvisionedBy ¶ added in v0.7.8
func (n *NodeAbstractResource) ProvisionedBy() []string
GraphNodeProvisionerConsumer
func (*NodeAbstractResource) ReferenceableName ¶ added in v0.7.8
func (n *NodeAbstractResource) ReferenceableName() []string
GraphNodeReferenceable
func (*NodeAbstractResource) References ¶ added in v0.7.8
func (n *NodeAbstractResource) References() []string
GraphNodeReferencer
func (*NodeAbstractResource) ResourceAddr ¶ added in v0.7.8
func (n *NodeAbstractResource) ResourceAddr() *ResourceAddress
GraphNodeResource, GraphNodeAttachResourceState
func (*NodeAbstractResource) ResourceAddress ¶ added in v0.7.8
func (n *NodeAbstractResource) ResourceAddress() *ResourceAddress
GraphNodeAddressable, TODO: remove, used by target, should unify
func (*NodeAbstractResource) SetTargets ¶ added in v0.7.8
func (n *NodeAbstractResource) SetTargets(targets []ResourceAddress)
GraphNodeTargetable
type NodeApplyableModuleVariable ¶ added in v0.7.8
type NodeApplyableModuleVariable struct {
PathValue []string
Config *config.Variable // Config is the var in the config
Value *config.RawConfig // Value is the value that is set
Module *module.Tree // Antiquated, want to remove
}
NodeApplyableModuleVariable represents a module variable input during the apply step.
func (*NodeApplyableModuleVariable) EvalTree ¶ added in v0.7.8
func (n *NodeApplyableModuleVariable) EvalTree() EvalNode
GraphNodeEvalable
func (*NodeApplyableModuleVariable) Name ¶ added in v0.7.8
func (n *NodeApplyableModuleVariable) Name() string
func (*NodeApplyableModuleVariable) Path ¶ added in v0.7.8
func (n *NodeApplyableModuleVariable) Path() []string
GraphNodeSubPath
func (*NodeApplyableModuleVariable) ReferenceGlobal ¶ added in v0.7.8
func (n *NodeApplyableModuleVariable) ReferenceGlobal() bool
GraphNodeReferenceGlobal
func (*NodeApplyableModuleVariable) ReferenceableName ¶ added in v0.7.8
func (n *NodeApplyableModuleVariable) ReferenceableName() []string
GraphNodeReferenceable
func (*NodeApplyableModuleVariable) References ¶ added in v0.7.8
func (n *NodeApplyableModuleVariable) References() []string
GraphNodeReferencer
func (*NodeApplyableModuleVariable) RemoveIfNotTargeted ¶ added in v0.8.0
func (n *NodeApplyableModuleVariable) RemoveIfNotTargeted() bool
RemovableIfNotTargeted
type NodeApplyableOutput ¶ added in v0.7.8
type NodeApplyableOutput struct {
PathValue []string
Config *config.Output // Config is the output in the config
}
NodeApplyableOutput represents an output that is "applyable": it is ready to be applied.
func (*NodeApplyableOutput) EvalTree ¶ added in v0.7.8
func (n *NodeApplyableOutput) EvalTree() EvalNode
GraphNodeEvalable
func (*NodeApplyableOutput) Path ¶ added in v0.7.8
func (n *NodeApplyableOutput) Path() []string
GraphNodeSubPath
func (*NodeApplyableOutput) ReferenceableName ¶ added in v0.7.8
func (n *NodeApplyableOutput) ReferenceableName() []string
GraphNodeReferenceable
func (*NodeApplyableOutput) References ¶ added in v0.7.8
func (n *NodeApplyableOutput) References() []string
GraphNodeReferencer
func (*NodeApplyableOutput) RemoveIfNotTargeted ¶ added in v0.8.7
func (n *NodeApplyableOutput) RemoveIfNotTargeted() bool
RemovableIfNotTargeted
type NodeApplyableProvider ¶ added in v0.7.8
type NodeApplyableProvider struct {
*NodeAbstractProvider
}
NodeApplyableProvider represents a provider during an apply.
type NodeApplyableResource ¶ added in v0.7.8
type NodeApplyableResource struct {
*NodeAbstractResource
}
NodeApplyableResource represents a resource that is "applyable": it is ready to be applied and is represented by a diff.
func (*NodeApplyableResource) CreateAddr ¶ added in v0.7.8
func (n *NodeApplyableResource) CreateAddr() *ResourceAddress
GraphNodeCreator
func (*NodeApplyableResource) EvalTree ¶ added in v0.7.8
func (n *NodeApplyableResource) EvalTree() EvalNode
GraphNodeEvalable
func (*NodeApplyableResource) References ¶ added in v0.8.0
func (n *NodeApplyableResource) References() []string
GraphNodeReferencer, overriding NodeAbstractResource
type NodeCountBoundary ¶ added in v0.7.8
type NodeCountBoundary struct{}
NodeCountBoundary fixes any "count boundarie" in the state: resources that are named "foo.0" when they should be named "foo"
type NodeDestroyResource ¶ added in v0.7.8
type NodeDestroyResource struct {
*NodeAbstractResource
}
NodeDestroyResource represents a resource that is to be destroyed.
func (*NodeDestroyResource) CreateBeforeDestroy ¶ added in v0.7.8
func (n *NodeDestroyResource) CreateBeforeDestroy() bool
GraphNodeDestroyerCBD
func (*NodeDestroyResource) DestroyAddr ¶ added in v0.7.8
func (n *NodeDestroyResource) DestroyAddr() *ResourceAddress
GraphNodeDestroyer
func (*NodeDestroyResource) DynamicExpand ¶ added in v0.7.8
func (n *NodeDestroyResource) DynamicExpand(ctx EvalContext) (*Graph, error)
GraphNodeDynamicExpandable
func (*NodeDestroyResource) EvalTree ¶ added in v0.7.8
func (n *NodeDestroyResource) EvalTree() EvalNode
GraphNodeEvalable
func (*NodeDestroyResource) ModifyCreateBeforeDestroy ¶ added in v0.8.0
func (n *NodeDestroyResource) ModifyCreateBeforeDestroy(v bool) error
GraphNodeDestroyerCBD
func (*NodeDestroyResource) ReferenceableName ¶ added in v0.7.8
func (n *NodeDestroyResource) ReferenceableName() []string
GraphNodeReferenceable, overriding NodeAbstractResource
func (*NodeDestroyResource) References ¶ added in v0.7.8
func (n *NodeDestroyResource) References() []string
GraphNodeReferencer, overriding NodeAbstractResource
type NodeDestroyableModuleVariable ¶ added in v0.7.8
type NodeDestroyableModuleVariable struct {
PathValue []string
}
NodeDestroyableModule represents a module destruction.
func (*NodeDestroyableModuleVariable) EvalTree ¶ added in v0.7.8
func (n *NodeDestroyableModuleVariable) EvalTree() EvalNode
GraphNodeEvalable
type NodeDisabledProvider ¶ added in v0.7.8
type NodeDisabledProvider struct {
*NodeAbstractProvider
}
NodeDisabledProvider represents a provider that is disabled. A disabled provider does nothing. It exists to properly set inheritance information for child providers.
type NodeOutputOrphan ¶ added in v0.7.8
type NodeOutputOrphan struct {
OutputName string
PathValue []string
}
NodeOutputOrphan represents an output that is an orphan.
type NodePlanDestroyableResource ¶ added in v0.7.8
type NodePlanDestroyableResource struct {
*NodeAbstractResource
}
NodePlanDestroyableResource represents a resource that is "applyable": it is ready to be applied and is represented by a diff.
func (*NodePlanDestroyableResource) DestroyAddr ¶ added in v0.7.11
func (n *NodePlanDestroyableResource) DestroyAddr() *ResourceAddress
GraphNodeDestroyer
type NodePlannableResource ¶ added in v0.7.10
type NodePlannableResource struct {
*NodeAbstractResource
// contains filtered or unexported fields
}
NodePlannableResource represents a resource that is "plannable": it is ready to be planned in order to create a diff.
func (*NodePlannableResource) DynamicExpand ¶ added in v0.7.10
func (n *NodePlannableResource) DynamicExpand(ctx EvalContext) (*Graph, error)
GraphNodeDynamicExpandable
func (*NodePlannableResource) EvalTree ¶ added in v0.7.10
func (n *NodePlannableResource) EvalTree() EvalNode
GraphNodeEvalable
func (*NodePlannableResource) SetTargets ¶ added in v0.7.10
func (n *NodePlannableResource) SetTargets(targets []ResourceAddress)
GraphNodeTargetable
type NodePlannableResourceInstance ¶ added in v0.7.10
type NodePlannableResourceInstance struct {
*NodeAbstractResource
}
NodePlannableResourceInstance represents a _single_ resource instance that is plannable. This means this represents a single count index, for example.
type NodePlannableResourceOrphan ¶ added in v0.7.10
type NodePlannableResourceOrphan struct {
*NodeAbstractResource
}
NodePlannableResourceOrphan represents a resource that is "applyable": it is ready to be applied and is represented by a diff.
type NodeRootVariable ¶ added in v0.7.8
type NodeRootVariable struct {
Config *config.Variable
}
NodeRootVariable represents a root variable input.
func (*NodeRootVariable) ReferenceableName ¶ added in v0.7.8
func (n *NodeRootVariable) ReferenceableName() []string
GraphNodeReferenceable
type NoopOpts ¶ added in v0.6.1
type NoopOpts struct {
Graph *Graph
Vertex dag.Vertex
Diff *Diff
State *State
ModDiff *ModuleDiff
ModState *ModuleState
}
NoopOpts are the options available to determine if your node is a noop.
type NullGraphWalker ¶ added in v0.4.0
type NullGraphWalker struct{}
NullGraphWalker is a GraphWalker implementation that does nothing. This can be embedded within other GraphWalker implementations for easily implementing all the required functions.
func (NullGraphWalker) EnterEvalTree ¶ added in v0.4.0
func (NullGraphWalker) EnterEvalTree(v dag.Vertex, n EvalNode) EvalNode
func (NullGraphWalker) EnterPath ¶ added in v0.5.0
func (NullGraphWalker) EnterPath([]string) EvalContext
func (NullGraphWalker) EnterVertex ¶ added in v0.4.0
func (NullGraphWalker) EnterVertex(dag.Vertex)
func (NullGraphWalker) ExitEvalTree ¶ added in v0.4.0
func (NullGraphWalker) ExitEvalTree(dag.Vertex, interface{}, error) error
func (NullGraphWalker) ExitVertex ¶ added in v0.4.0
func (NullGraphWalker) ExitVertex(dag.Vertex, error)
type OrphanOutputTransformer ¶ added in v0.7.8
type OrphanOutputTransformer struct {
Module *module.Tree // Root module
State *State // State is the root state
}
OrphanOutputTransformer finds the outputs that aren't present in the given config that are in the state and adds them to the graph for deletion.
type OrphanResourceCountTransformer ¶ added in v0.7.10
type OrphanResourceCountTransformer struct {
Concrete ConcreteResourceNodeFunc
Count int // Actual count of the resource
Addr *ResourceAddress // Addr of the resource to look for orphans
State *State // Full global state
}
OrphanResourceCountTransformer is a GraphTransformer that adds orphans for an expanded count to the graph. The determination of this depends on the count argument given.
Orphans are found by comparing the count to what is found in the state. This transform assumes that if an element in the state is within the count bounds given, that it is not an orphan.
type OrphanResourceTransformer ¶ added in v0.7.10
type OrphanResourceTransformer struct {
Concrete ConcreteResourceNodeFunc
// State is the global state. We require the global state to
// properly find module orphans at our path.
State *State
// Module is the root module. We'll look up the proper configuration
// using the graph path.
Module *module.Tree
}
OrphanResourceTransformer is a GraphTransformer that adds resource orphans to the graph. A resource orphan is a resource that is represented in the state but not in the configuration.
This only adds orphans that have no representation at all in the configuration.
type OrphanTransformer ¶ added in v0.4.0
type OrphanTransformer struct {
// Resource is resource configuration. This is only non-nil when
// expanding a resource that is in the configuration. It can't be
// dependend on.
Resource *config.Resource
// State is the global state. We require the global state to
// properly find module orphans at our path.
State *State
// Module is the root module. We'll look up the proper configuration
// using the graph path.
Module *module.Tree
// View, if non-nil will set a view on the module state.
View string
}
OrphanTransformer is a GraphTransformer that adds orphans to the graph. This transformer adds both resource and module orphans.
type OutputState ¶ added in v0.7.0
type OutputState struct {
// Sensitive describes whether the output is considered sensitive,
// which may lead to masking the value on screen in some cases.
Sensitive bool `json:"sensitive"`
// Type describes the structure of Value. Valid values are "string",
// "map" and "list"
Type string `json:"type"`
// Value contains the value of the output, in the structure described
// by the Type field.
Value interface{} `json:"value"`
// contains filtered or unexported fields
}
OutputState is used to track the state relevant to a single output.
type OutputTransformer ¶ added in v0.7.8
type OutputTransformer struct {
Module *module.Tree
}
OutputTransformer is a GraphTransformer that adds all the outputs in the configuration to the graph.
This is done for the apply graph builder even if dependent nodes aren't changing since there is no downside: the state will be available even if the dependent items aren't changing.
type ParentProviderTransformer ¶ added in v0.7.8
type ParentProviderTransformer struct{}
ParentProviderTransformer connects provider nodes to their parents.
This works by finding nodes that are both GraphNodeProviders and GraphNodeSubPath. It then connects the providers to their parent path.
type Plan ¶
type Plan struct {
Diff *Diff
Module *module.Tree
State *State
Vars map[string]interface{}
Targets []string
// contains filtered or unexported fields
}
Plan represents a single Terraform execution plan, which contains all the information necessary to make an infrastructure change.
func ReadPlan ¶
func ReadPlan(src io.Reader) (*Plan, error)
ReadPlan reads a plan structure out of a reader in the format that was written by WritePlan.
type PlanGraphBuilder ¶ added in v0.7.10
type PlanGraphBuilder struct {
// Module is the root module for the graph to build.
Module *module.Tree
// State is the current state
State *State
// Providers is the list of providers supported.
Providers []string
// Targets are resources to target
Targets []string
// DisableReduce, if true, will not reduce the graph. Great for testing.
DisableReduce bool
// Validate will do structural validation of the graph.
Validate bool
}
PlanGraphBuilder implements GraphBuilder and is responsible for building a graph for planning (creating a Terraform Diff).
The primary difference between this graph and others:
Based on the config since it represents the target state
Ignores lifecycle options since no lifecycle events occur here. This simplifies the graph significantly since complex transforms such as create-before-destroy can be completely ignored.
type PrefixUIInput ¶ added in v0.3.0
type PrefixUIInput struct {
IdPrefix string
QueryPrefix string
UIInput UIInput
}
PrefixUIInput is an implementation of UIInput that prefixes the ID with a string, allowing queries to be namespaced.
type ProviderTransformer ¶ added in v0.4.0
type ProviderTransformer struct{}
ProviderTransformer is a GraphTransformer that maps resources to providers within the graph. This will error if there are any resources that don't map to proper resources.
type ProvisionerTransformer ¶ added in v0.4.0
type ProvisionerTransformer struct{}
ProvisionerTransformer is a GraphTransformer that maps resources to provisioners within the graph. This will error if there are any resources that don't map to proper resources.
type ProvisionerUIOutput ¶ added in v0.3.0
type ProvisionerUIOutput struct {
Info *InstanceInfo
Type string
Hooks []Hook
}
ProvisionerUIOutput is an implementation of UIOutput that calls a hook for the output so that the hooks can handle it.
type ProxyTransformer ¶ added in v0.5.0
type ProxyTransformer struct{}
ProxyTransformer is a transformer that goes through the graph, finds vertices that are marked as proxies, and connects through their dependents. See above for what a proxy is.
type PruneDestroyTransformer ¶ added in v0.4.0
type PruneDestroyTransformer struct {
Diff *Diff
State *State
}
PruneDestroyTransformer is a GraphTransformer that removes the destroy nodes that aren't in the diff.
type PruneNoopTransformer ¶ added in v0.6.1
type PruneNoopTransformer struct {
Diff *Diff
State *State
}
PruneNoopTransformer is a graph transform that prunes nodes that consider themselves no-ops. This is done to both simplify the graph as well as to remove graph nodes that might otherwise cause problems during the graph run. Therefore, this transformer isn't completely an optimization step, and can instead be considered critical to Terraform operations.
Example of the above case: variables for modules interpolate their values. Interpolation will fail on destruction (since attributes are being deleted), but variables shouldn't even eval if there is nothing that will consume the variable. Therefore, variables can note that they can be omitted safely in this case.
The PruneNoopTransformer will prune nodes depth first, and will automatically create connect through the dependencies of pruned nodes. For example, if we have a graph A => B => C (A depends on B, etc.), and B decides to be removed, we'll still be left with A => C; the edge will be properly connected.
type PruneProviderTransformer ¶ added in v0.4.0
type PruneProviderTransformer struct{}
PruneProviderTransformer is a GraphTransformer that prunes all the providers that aren't needed from the graph. A provider is unneeded if no resource or module is using that provider.
type ReferenceMap ¶ added in v0.7.8
type ReferenceMap struct {
// contains filtered or unexported fields
}
ReferenceMap is a structure that can be used to efficiently check for references on a graph.
func NewReferenceMap ¶ added in v0.7.8
func NewReferenceMap(vs []dag.Vertex) *ReferenceMap
NewReferenceMap is used to create a new reference map for the given set of vertices.
func (*ReferenceMap) ReferencedBy ¶ added in v0.7.10
func (m *ReferenceMap) ReferencedBy(v dag.Vertex) []dag.Vertex
ReferencedBy returns the list of vertices that reference the vertex passed in.
func (*ReferenceMap) References ¶ added in v0.7.8
func (m *ReferenceMap) References(v dag.Vertex) ([]dag.Vertex, []string)
References returns the list of vertices that this vertex references along with any missing references.
type ReferenceTransformer ¶ added in v0.7.8
type ReferenceTransformer struct{}
ReferenceTransformer is a GraphTransformer that connects all the nodes that reference each other in order to form the proper ordering.
type RemoteState ¶ added in v0.3.5
type RemoteState struct {
// Type controls the client we use for the remote state
Type string `json:"type"`
// Config is used to store arbitrary configuration that
// is type specific
Config map[string]string `json:"config"`
// contains filtered or unexported fields
}
RemoteState is used to track the information about a remote state store that we push/pull state to.
type RemovableIfNotTargeted ¶ added in v0.7.0
type RemovableIfNotTargeted interface {
RemoveIfNotTargeted() bool
}
RemovableIfNotTargeted is a special interface for graph nodes that aren't directly addressable, but need to be removed from the graph when they are not targeted. (Nodes that are not directly targeted end up in the set of targeted nodes because something that _is_ targeted depends on them.) The initial use case for this interface is GraphNodeConfigVariable, which was having trouble interpolating for module variables in targeted scenarios that filtered out the resource node being referenced.
type Resource ¶
type Resource struct {
// These are all used by the new EvalNode stuff.
Name string
Type string
CountIndex int
// These aren't really used anymore anywhere, but we keep them around
// since we haven't done a proper cleanup yet.
Id string
Info *InstanceInfo
Config *ResourceConfig
Dependencies []string
Diff *InstanceDiff
Provider ResourceProvider
State *InstanceState
Provisioners []*ResourceProvisionerConfig
Flags ResourceFlag
}
Resource encapsulates a resource, its configuration, its provider, its current state, and potentially a desired diff from the state it wants to reach.
type ResourceAddress ¶ added in v0.4.0
type ResourceAddress struct {
// Addresses a resource falling somewhere in the module path
// When specified alone, addresses all resources within a module path
Path []string
// Addresses a specific resource that occurs in a list
Index int
InstanceType InstanceType
InstanceTypeSet bool
Name string
Type string
Mode config.ResourceMode // significant only if InstanceTypeSet
}
ResourceAddress is a way of identifying an individual resource (or, eventually, a subset of resources) within the state. It is used for Targets.
func ParseResourceAddress ¶ added in v0.4.0
func ParseResourceAddress(s string) (*ResourceAddress, error)
func (*ResourceAddress) Copy ¶ added in v0.6.12
func (r *ResourceAddress) Copy() *ResourceAddress
Copy returns a copy of this ResourceAddress
type ResourceAttrDiff ¶
type ResourceAttrDiff struct {
Old string // Old Value
New string // New Value
NewComputed bool // True if new value is computed (unknown currently)
NewRemoved bool // True if this attribute is being removed
NewExtra interface{} // Extra information for the provider
RequiresNew bool // True if change requires new resource
Sensitive bool // True if the data should not be displayed in UI output
Type DiffAttrType
}
ResourceAttrDiff is the diff of a single attribute of a resource.
type ResourceConfig ¶
type ResourceConfig struct {
ComputedKeys []string
Raw map[string]interface{}
Config map[string]interface{}
// contains filtered or unexported fields
}
ResourceConfig holds the configuration given for a resource. This is done instead of a raw `map[string]interface{}` type so that rich methods can be added to it to make dealing with it easier.
func NewResourceConfig ¶
func NewResourceConfig(c *config.RawConfig) *ResourceConfig
NewResourceConfig creates a new ResourceConfig from a config.RawConfig.
func (*ResourceConfig) CheckSet ¶
func (c *ResourceConfig) CheckSet(keys []string) []error
CheckSet checks that the given list of configuration keys is properly set. If not, errors are returned for each unset key.
This is useful to be called in the Validate method of a ResourceProvider.
func (*ResourceConfig) DeepCopy ¶ added in v0.7.5
func (c *ResourceConfig) DeepCopy() *ResourceConfig
DeepCopy performs a deep copy of the configuration. This makes it safe to modify any of the structures that are part of the resource config without affecting the original configuration.
func (*ResourceConfig) Equal ¶ added in v0.7.5
func (c *ResourceConfig) Equal(c2 *ResourceConfig) bool
Equal checks the equality of two resource configs.
func (*ResourceConfig) Get ¶
func (c *ResourceConfig) Get(k string) (interface{}, bool)
Get looks up a configuration value by key and returns the value.
The second return value is true if the get was successful. Get will return the raw value if the key is computed, so you should pair this with IsComputed.
func (*ResourceConfig) GetRaw ¶ added in v0.5.0
func (c *ResourceConfig) GetRaw(k string) (interface{}, bool)
GetRaw looks up a configuration value by key and returns the value, from the raw, uninterpolated config.
The second return value is true if the get was successful. Get will not succeed if the value is being computed.
func (*ResourceConfig) IsComputed ¶ added in v0.3.0
func (c *ResourceConfig) IsComputed(k string) bool
IsComputed returns whether the given key is computed or not.
func (*ResourceConfig) IsSet ¶
func (c *ResourceConfig) IsSet(k string) bool
IsSet checks if the key in the configuration is set. A key is set if it has a value or the value is being computed (is unknown currently).
This function should be used rather than checking the keys of the raw configuration itself, since a key may be omitted from the raw configuration if it is being computed.
type ResourceCountTransformer ¶ added in v0.4.0
type ResourceCountTransformer struct {
Concrete ConcreteResourceNodeFunc
Count int
Addr *ResourceAddress
}
ResourceCountTransformer is a GraphTransformer that expands the count out for a specific resource.
This assumes that the count is already interpolated.
type ResourceCountTransformerOld ¶ added in v0.7.10
type ResourceCountTransformerOld struct {
Resource *config.Resource
Destroy bool
Targets []ResourceAddress
}
ResourceCountTransformerOld is a GraphTransformer that expands the count out for a specific resource.
type ResourceFlag ¶ added in v0.3.0
type ResourceFlag byte
ResourceKind specifies what kind of instance we're working with, whether its a primary instance, a tainted instance, or an orphan.
type ResourceProvider ¶
type ResourceProvider interface {
// Input is called to ask the provider to ask the user for input
// for completing the configuration if necesarry.
//
// This may or may not be called, so resource provider writers shouldn't
// rely on this being available to set some default values for validate
// later. Example of a situation where this wouldn't be called is if
// the user is not using a TTY.
Input(UIInput, *ResourceConfig) (*ResourceConfig, error)
// Validate is called once at the beginning with the raw configuration
// (no interpolation done) and can return a list of warnings and/or
// errors.
//
// This is called once with the provider configuration only. It may not
// be called at all if no provider configuration is given.
//
// This should not assume that any values of the configurations are valid.
// The primary use case of this call is to check that required keys are
// set.
Validate(*ResourceConfig) ([]string, []error)
// Configure configures the provider itself with the configuration
// given. This is useful for setting things like access keys.
//
// This won't be called at all if no provider configuration is given.
//
// Configure returns an error if it occurred.
Configure(*ResourceConfig) error
// Resources returns all the available resource types that this provider
// knows how to manage.
Resources() []ResourceType
// Stop is called when the provider should halt any in-flight actions.
//
// This can be used to make a nicer Ctrl-C experience for Terraform.
// Even if this isn't implemented to do anything (just returns nil),
// Terraform will still cleanly stop after the currently executing
// graph node is complete. However, this API can be used to make more
// efficient halts.
//
// Stop doesn't have to and shouldn't block waiting for in-flight actions
// to complete. It should take any action it wants and return immediately
// acknowledging it has received the stop request. Terraform core will
// automatically not make any further API calls to the provider soon
// after Stop is called (technically exactly once the currently executing
// graph nodes are complete).
//
// The error returned, if non-nil, is assumed to mean that signaling the
// stop somehow failed and that the user should expect potentially waiting
// a longer period of time.
Stop() error
// ValidateResource is called once at the beginning with the raw
// configuration (no interpolation done) and can return a list of warnings
// and/or errors.
//
// This is called once per resource.
//
// This should not assume any of the values in the resource configuration
// are valid since it is possible they have to be interpolated still.
// The primary use case of this call is to check that the required keys
// are set and that the general structure is correct.
ValidateResource(string, *ResourceConfig) ([]string, []error)
// Apply applies a diff to a specific resource and returns the new
// resource state along with an error.
//
// If the resource state given has an empty ID, then a new resource
// is expected to be created.
Apply(
*InstanceInfo,
*InstanceState,
*InstanceDiff) (*InstanceState, error)
// Diff diffs a resource versus a desired state and returns
// a diff.
Diff(
*InstanceInfo,
*InstanceState,
*ResourceConfig) (*InstanceDiff, error)
// Refresh refreshes a resource and updates all of its attributes
// with the latest information.
Refresh(*InstanceInfo, *InstanceState) (*InstanceState, error)
// ImportState requests that the given resource be imported.
//
// The returned InstanceState only requires ID be set. Importing
// will always call Refresh after the state to complete it.
//
// IMPORTANT: InstanceState doesn't have the resource type attached
// to it. A type must be specified on the state via the Ephemeral
// field on the state.
//
// This function can return multiple states. Normally, an import
// will map 1:1 to a physical resource. However, some resources map
// to multiple. For example, an AWS security group may contain many rules.
// Each rule is represented by a separate resource in Terraform,
// therefore multiple states are returned.
ImportState(*InstanceInfo, string) ([]*InstanceState, error)
// ValidateDataSource is called once at the beginning with the raw
// configuration (no interpolation done) and can return a list of warnings
// and/or errors.
//
// This is called once per data source instance.
//
// This should not assume any of the values in the resource configuration
// are valid since it is possible they have to be interpolated still.
// The primary use case of this call is to check that the required keys
// are set and that the general structure is correct.
ValidateDataSource(string, *ResourceConfig) ([]string, []error)
// DataSources returns all of the available data sources that this
// provider implements.
DataSources() []DataSource
// ReadDataDiff produces a diff that represents the state that will
// be produced when the given data source is read using a later call
// to ReadDataApply.
ReadDataDiff(*InstanceInfo, *ResourceConfig) (*InstanceDiff, error)
// ReadDataApply initializes a data instance using the configuration
// in a diff produced by ReadDataDiff.
ReadDataApply(*InstanceInfo, *InstanceDiff) (*InstanceState, error)
}
ResourceProvider is an interface that must be implemented by any resource provider: the thing that creates and manages the resources in a Terraform configuration.
Important implementation note: All returned pointers, such as *ResourceConfig, *InstanceState, *InstanceDiff, etc. must not point to shared data. Terraform is highly parallel and assumes that this data is safe to read/write in parallel so it must be unique references. Note that it is safe to return arguments as results, however.
type ResourceProviderCloser ¶ added in v0.6.0
type ResourceProviderCloser interface {
Close() error
}
ResourceProviderCloser is an interface that providers that can close connections that aren't needed anymore must implement.
type ResourceProviderFactory ¶
type ResourceProviderFactory func() (ResourceProvider, error)
ResourceProviderFactory is a function type that creates a new instance of a resource provider.
func ResourceProviderFactoryFixed ¶
func ResourceProviderFactoryFixed(p ResourceProvider) ResourceProviderFactory
ResourceProviderFactoryFixed is a helper that creates a ResourceProviderFactory that just returns some fixed provider.
type ResourceProvisioner ¶
type ResourceProvisioner interface {
// Validate is called once at the beginning with the raw
// configuration (no interpolation done) and can return a list of warnings
// and/or errors.
//
// This is called once per resource.
//
// This should not assume any of the values in the resource configuration
// are valid since it is possible they have to be interpolated still.
// The primary use case of this call is to check that the required keys
// are set and that the general structure is correct.
Validate(*ResourceConfig) ([]string, []error)
// Apply runs the provisioner on a specific resource and returns the new
// resource state along with an error. Instead of a diff, the ResourceConfig
// is provided since provisioners only run after a resource has been
// newly created.
Apply(UIOutput, *InstanceState, *ResourceConfig) error
}
ResourceProvisioner is an interface that must be implemented by any resource provisioner: the thing that initializes resources in a Terraform configuration.
type ResourceProvisionerCloser ¶ added in v0.6.0
type ResourceProvisionerCloser interface {
Close() error
}
ResourceProvisionerCloser is an interface that provisioners that can close connections that aren't needed anymore must implement.
type ResourceProvisionerConfig ¶
type ResourceProvisionerConfig struct {
Type string
Provisioner ResourceProvisioner
Config *ResourceConfig
RawConfig *config.RawConfig
ConnInfo *config.RawConfig
}
ResourceProvisionerConfig is used to pair a provisioner with its provided configuration. This allows us to use singleton instances of each ResourceProvisioner and to keep the relevant configuration instead of instantiating a new Provisioner for each resource.
type ResourceProvisionerFactory ¶
type ResourceProvisionerFactory func() (ResourceProvisioner, error)
ResourceProvisionerFactory is a function type that creates a new instance of a resource provisioner.
type ResourceState ¶
type ResourceState struct {
// This is filled in and managed by Terraform, and is the resource
// type itself such as "mycloud_instance". If a resource provider sets
// this value, it won't be persisted.
Type string `json:"type"`
// Dependencies are a list of things that this resource relies on
// existing to remain intact. For example: an AWS instance might
// depend on a subnet (which itself might depend on a VPC, and so
// on).
//
// Terraform uses this information to build valid destruction
// orders and to warn the user if they're destroying a resource that
// another resource depends on.
//
// Things can be put into this list that may not be managed by
// Terraform. If Terraform doesn't find a matching ID in the
// overall state, then it assumes it isn't managed and doesn't
// worry about it.
Dependencies []string `json:"depends_on"`
// Primary is the current active instance for this resource.
// It can be replaced but only after a successful creation.
// This is the instances on which providers will act.
Primary *InstanceState `json:"primary"`
// Deposed is used in the mechanics of CreateBeforeDestroy: the existing
// Primary is Deposed to get it out of the way for the replacement Primary to
// be created by Apply. If the replacement Primary creates successfully, the
// Deposed instance is cleaned up.
//
// If there were problems creating the replacement Primary, the Deposed
// instance and the (now tainted) replacement Primary will be swapped so the
// tainted replacement will be cleaned up instead.
//
// An instance will remain in the Deposed list until it is successfully
// destroyed and purged.
Deposed []*InstanceState `json:"deposed"`
// Provider is used when a resource is connected to a provider with an alias.
// If this string is empty, the resource is connected to the default provider,
// e.g. "aws_instance" goes with the "aws" provider.
// If the resource block contained a "provider" key, that value will be set here.
Provider string `json:"provider"`
// contains filtered or unexported fields
}
ResourceState holds the state of a resource that is used so that a provider can find and manage an existing resource as well as for storing attributes that are used to populate variables of child resources.
Attributes has attributes about the created resource that are queryable in interpolation: "${type.id.attr}"
Extra is just extra data that a provider can return that we store for later, but is not exposed in any way to the user.
func (*ResourceState) Equal ¶ added in v0.4.0
func (s *ResourceState) Equal(other *ResourceState) bool
Equal tests whether two ResourceStates are equal.
type ResourceStateKey ¶ added in v0.6.10
type ResourceStateKey struct {
Name string
Type string
Mode config.ResourceMode
Index int
}
ResourceStateKey is a structured representation of the key used for the ModuleState.Resources mapping
func ParseResourceStateKey ¶ added in v0.6.10
func ParseResourceStateKey(k string) (*ResourceStateKey, error)
ParseResourceStateKey accepts a key in the format used by ModuleState.Resources and returns a resource name and resource index. In the state, a resource has the format "type.name.index" or "type.name". In the latter case, the index is returned as -1.
type ResourceType ¶
type ResourceType struct {
Name string // Name of the resource, example "instance" (no provider prefix)
Importable bool // Whether this resource supports importing
}
ResourceType is a type of resource that a resource provider can manage.
type RootTransformer ¶ added in v0.4.0
type RootTransformer struct{}
RootTransformer is a GraphTransformer that adds a root to the graph.
type RootVariableTransformer ¶ added in v0.7.8
type RootVariableTransformer struct {
Module *module.Tree
}
RootVariableTransformer is a GraphTransformer that adds all the root variables to the graph.
Root variables are currently no-ops but they must be added to the graph since downstream things that depend on them must be able to reach them.
type SemanticCheckModulesExist ¶ added in v0.4.0
type SemanticCheckModulesExist struct{}
SemanticCheckModulesExist is an implementation of SemanticChecker that verifies that all the modules that are referenced in the graph exist.
type SemanticChecker ¶ added in v0.4.0
type SemanticChecker interface {
Check(*dag.Graph, dag.Vertex) error
}
SemanticChecker is the interface that semantic checks across the Terraform graph implement. Errors are accumulated. Even after an error is returned, child vertices in the graph will still be visited.
The graph should NOT be modified by the semantic checker.
The order in which vertices are visited is left unspecified, so the semantic checks should not rely on that.
type Semaphore ¶ added in v0.3.1
type Semaphore chan struct{}
Semaphore is a wrapper around a channel to provide utility methods to clarify that we are treating the channel as a semaphore
func NewSemaphore ¶ added in v0.3.1
func NewSemaphore(n int) Semaphore
NewSemaphore creates a semaphore that allows up to a given limit of simultaneous acquisitions
func (Semaphore) Acquire ¶ added in v0.3.1
func (s Semaphore) Acquire()
Acquire is used to acquire an available slot. Blocks until available.
func (Semaphore) Release ¶ added in v0.3.1
func (s Semaphore) Release()
Release is used to return a slot. Acquire must be called as a pre-condition.
func (Semaphore) TryAcquire ¶ added in v0.3.1
func (s Semaphore) TryAcquire() bool
TryAcquire is used to do a non-blocking acquire. Returns a bool indicating success
type Shadow ¶ added in v0.7.8
type Shadow interface {
// CloseShadow tells the shadow that the REAL implementation is
// complete. Therefore, any calls that would block should now return
// immediately since no more changes will happen to the real side.
CloseShadow() error
// ShadowError returns the errors that the shadow has found.
// This should be called AFTER CloseShadow and AFTER the shadow is
// known to be complete (no more calls to it).
ShadowError() error
}
Shadow is the interface that any "shadow" structures must implement.
A shadow structure is an interface implementation (typically) that shadows a real implementation and verifies that the same behavior occurs on both. The semantics of this behavior are up to the interface itself.
A shadow NEVER modifies real values or state. It must always be safe to use.
For example, a ResourceProvider shadow ensures that the same operations are done on the same resources with the same configurations.
The typical usage of a shadow following this interface is to complete the real operations, then call CloseShadow which tells the shadow that the real side is done. Then, once the shadow is also complete, call ShadowError to find any errors that may have been caught.
type State ¶
type State struct {
// Version is the state file protocol version.
Version int `json:"version"`
// TFVersion is the version of Terraform that wrote this state.
TFVersion string `json:"terraform_version,omitempty"`
// Serial is incremented on any operation that modifies
// the State file. It is used to detect potentially conflicting
// updates.
Serial int64 `json:"serial"`
// Lineage is set when a new, blank state is created and then
// never updated. This allows us to determine whether the serials
// of two states can be meaningfully compared.
// Apart from the guarantee that collisions between two lineages
// are very unlikely, this value is opaque and external callers
// should only compare lineage strings byte-for-byte for equality.
Lineage string `json:"lineage"`
// Remote is used to track the metadata required to
// pull and push state files from a remote storage endpoint.
Remote *RemoteState `json:"remote,omitempty"`
// Modules contains all the modules in a breadth-first order
Modules []*ModuleState `json:"modules"`
// contains filtered or unexported fields
}
State keeps track of a snapshot state-of-the-world that Terraform can use to keep track of what real world resources it is actually managing.
func ReadState ¶
func ReadState(src io.Reader) (*State, error)
ReadState reads a state structure out of a reader in the format that was written by WriteState.
func ReadStateV2 ¶ added in v0.7.0
func ReadStateV2(jsonBytes []byte) (*State, error)
func ReadStateV3 ¶ added in v0.7.0
func ReadStateV3(jsonBytes []byte) (*State, error)
func (*State) Add ¶ added in v0.7.0
func (s *State) Add(fromAddrRaw string, toAddrRaw string, raw interface{}) error
Add adds the item in the state at the given address.
The item can be a ModuleState, ResourceState, or InstanceState. Depending on the item type, the address may or may not be valid. For example, a module cannot be moved to a resource address, however a resource can be moved to a module address (it retains the same name, under that resource).
The item can also be a []*ModuleState, which is the case for nested modules. In this case, Add will expect the zero-index to be the top-most module to add and will only nest children from there. For semantics, this is equivalent to module => module.
The full semantics of Add:
┌───────────────────┬───────────────────┬───────────────────┐ │ Module Address │ Resource Address │ Instance Address │ ┌─────────────────┼───────────────────┼───────────────────┼───────────────────┤ │ ModuleState │ ✓ │ x │ x │ ├─────────────────┼───────────────────┼───────────────────┼───────────────────┤ │ ResourceState │ ✓ │ ✓ │ maybe* │ ├─────────────────┼───────────────────┼───────────────────┼───────────────────┤ │ Instance State │ ✓ │ ✓ │ ✓ │ └─────────────────┴───────────────────┴───────────────────┴───────────────────┘
*maybe - Resources can be added at an instance address only if the resource
represents a single instance (primary). Example:
"aws_instance.foo" can be moved to "aws_instance.bar.tainted"
func (*State) AddModule ¶ added in v0.3.0
func (s *State) AddModule(path []string) *ModuleState
AddModule adds the module with the given path to the state.
This should be the preferred method to add module states since it allows us to optimize lookups later as well as control sorting.
func (*State) AddModuleState ¶ added in v0.7.1
func (s *State) AddModuleState(mod *ModuleState)
AddModuleState insert this module state and override any existing ModuleState
func (*State) Children ¶ added in v0.3.0
func (s *State) Children(path []string) []*ModuleState
Children returns the ModuleStates that are direct children of the given path. If the path is "root", for example, then children returned might be "root.child", but not "root.child.grandchild".
func (*State) CompareAges ¶ added in v0.7.0
func (s *State) CompareAges(other *State) (StateAgeComparison, error)
CompareAges compares one state with another for which is "older".
This is a simple check using the state's serial, and is thus only as reliable as the serial itself. In the normal case, only one state exists for a given combination of lineage/serial, but Terraform does not guarantee this and so the result of this method should be used with care.
Returns an integer that is negative if the receiver is older than the argument, positive if the converse, and zero if they are equal. An error is returned if the two states are not of the same lineage, in which case the integer returned has no meaning.
func (*State) DeepCopy ¶ added in v0.4.0
func (s *State) DeepCopy() *State
DeepCopy performs a deep copy of the state structure and returns a new structure.
func (*State) Empty ¶ added in v0.4.0
func (s *State) Empty() bool
Empty returns true if the state is empty.
func (*State) EnsureHasLineage ¶ added in v0.7.0
func (s *State) EnsureHasLineage()
func (*State) Equal ¶ added in v0.4.0
func (s *State) Equal(other *State) bool
Equal tests if one state is equal to another.
func (*State) FromFutureTerraform ¶ added in v0.7.0
func (s *State) FromFutureTerraform() bool
FromFutureTerraform checks if this state was written by a Terraform version from the future.
func (*State) HasResources ¶ added in v0.7.6
func (s *State) HasResources() bool
HasResources returns true if the state contains any resources.
This is similar to !s.Empty, but returns true also in the case where the state has modules but all of them are devoid of resources.
func (*State) IncrementSerialMaybe ¶ added in v0.4.0
func (s *State) IncrementSerialMaybe(other *State)
IncrementSerialMaybe increments the serial number of this state if it different from the other state.
func (*State) IsRemote ¶ added in v0.4.0
func (s *State) IsRemote() bool
IsRemote returns true if State represents a state that exists and is remote.
func (*State) ModuleByPath ¶ added in v0.3.0
func (s *State) ModuleByPath(path []string) *ModuleState
ModuleByPath is used to lookup the module state for the given path. This should be the preferred lookup mechanism as it allows for future lookup optimizations.
func (*State) ModuleOrphans ¶ added in v0.4.0
func (s *State) ModuleOrphans(path []string, c *config.Config) [][]string
ModuleOrphans returns all the module orphans in this state by returning their full paths. These paths can be used with ModuleByPath to return the actual state.
func (*State) Remove ¶ added in v0.7.0
func (s *State) Remove(addr ...string) error
Remove removes the item in the state at the given address, returning any errors that may have occurred.
If the address references a module state or resource, it will delete all children as well. To check what will be deleted, use a StateFilter first.
func (*State) RootModule ¶ added in v0.3.0
func (s *State) RootModule() *ModuleState
RootModule returns the ModuleState for the root module
func (*State) SameLineage ¶ added in v0.7.0
func (s *State) SameLineage(other *State) bool
SameLineage returns true only if the state given in argument belongs to the same "lineage" of states as the reciever.
func (*State) Validate ¶ added in v0.7.3
func (s *State) Validate() error
Validate validates the integrity of this state file.
Certain properties of the statefile are expected by Terraform in order to behave properly. The core of Terraform will assume that once it receives a State structure that it has been validated. This validation check should be called to ensure that.
If this returns an error, then the user should be notified. The error response will include detailed information on the nature of the error.
type StateAgeComparison ¶ added in v0.7.0
type StateAgeComparison int
const (
StateAgeEqual StateAgeComparison = 0
StateAgeReceiverNewer StateAgeComparison = 1
StateAgeReceiverOlder StateAgeComparison = -1
)
type StateFilter ¶ added in v0.7.0
type StateFilter struct {
State *State
}
StateFilter is responsible for filtering and searching a state.
This is a separate struct from State rather than a method on State because StateFilter might create sidecar data structures to optimize filtering on the state.
If you change the State, the filter created is invalid and either Reset should be called or a new one should be allocated. StateFilter will not watch State for changes and do this for you. If you filter after changing the State without calling Reset, the behavior is not defined.
type StateFilterResult ¶ added in v0.7.0
type StateFilterResult struct {
// Module path of the result
Path []string
// Address is the address that can be used to reference this exact result.
Address string
// Parent, if non-nil, is a parent of this result. For instances, the
// parent would be a resource. For resources, the parent would be
// a module. For modules, this is currently nil.
Parent *StateFilterResult
// Value is the actual value. This must be type switched on. It can be
// any data structures that `State` can hold: `ModuleState`,
// `ResourceState`, `InstanceState`.
Value interface{}
}
StateFilterResult is a single result from a filter operation. Filter can match multiple things within a state (module, resource, instance, etc.) and this unifies that.
type StateFilterResultSlice ¶ added in v0.7.0
type StateFilterResultSlice []*StateFilterResult
StateFilterResultSlice is a slice of results that implements sort.Interface. The sorting goal is what is most appealing to human output.
type StateTransformer ¶ added in v0.7.8
type StateTransformer struct {
Concrete ConcreteResourceNodeFunc
State *State
}
StateTransformer is a GraphTransformer that adds the elements of the state to the graph.
This transform is used for example by the DestroyPlanGraphBuilder to ensure that only resources that are in the state are represented in the graph.
type TargetsTransformer ¶ added in v0.4.0
type TargetsTransformer struct {
// List of targeted resource names specified by the user
Targets []string
// List of parsed targets, provided by callers like ResourceCountTransform
// that already have the targets parsed
ParsedTargets []ResourceAddress
// Set to true when we're in a `terraform destroy` or a
// `terraform plan -destroy`
Destroy bool
}
TargetsTransformer is a GraphTransformer that, when the user specifies a list of resources to target, limits the graph to only those resources and their dependencies.
type TransitiveReductionTransformer ¶ added in v0.4.0
type TransitiveReductionTransformer struct{}
TransitiveReductionTransformer is a GraphTransformer that performs finds the transitive reduction of the graph. For a definition of transitive reduction, see Wikipedia.
type UIInput ¶ added in v0.3.0
type UIInput interface {
Input(*InputOpts) (string, error)
}
UIInput is the interface that must be implemented to ask for input from this user. This should forward the request to wherever the user inputs things to ask for values.
type UIOutput ¶ added in v0.3.0
type UIOutput interface {
Output(string)
}
UIOutput is the interface that must be implemented to output data to the end user.
type UnorderedSemanticCheckRunner ¶ added in v0.4.0
type UnorderedSemanticCheckRunner struct {
Checks []SemanticChecker
}
UnorderedSemanticCheckRunner is an implementation of GraphSemanticChecker that runs a list of SemanticCheckers against the vertices of the graph in no specified order.
type VertexTransformer ¶ added in v0.4.0
type VertexTransformer struct {
Transforms []GraphVertexTransformer
}
VertexTransformer is a GraphTransformer that transforms vertices using the GraphVertexTransformers. The Transforms are run in sequential order. If a transform replaces a vertex then the next transform will see the new vertex.
Source Files
¶
- context.go
- context_components.go
- context_graph_type.go
- context_import.go
- debug.go
- diff.go
- edge_destroy.go
- eval.go
- eval_apply.go
- eval_check_prevent_destroy.go
- eval_context.go
- eval_context_builtin.go
- eval_context_mock.go
- eval_count.go
- eval_count_boundary.go
- eval_count_computed.go
- eval_diff.go
- eval_error.go
- eval_filter.go
- eval_filter_operation.go
- eval_if.go
- eval_import_state.go
- eval_interpolate.go
- eval_noop.go
- eval_output.go
- eval_provider.go
- eval_provisioner.go
- eval_read_data.go
- eval_refresh.go
- eval_resource.go
- eval_sequence.go
- eval_state.go
- eval_validate.go
- eval_variable.go
- evaltree_provider.go
- graph.go
- graph_builder.go
- graph_builder_apply.go
- graph_builder_destroy_plan.go
- graph_builder_import.go
- graph_builder_plan.go
- graph_config_node.go
- graph_config_node_module.go
- graph_config_node_output.go
- graph_config_node_provider.go
- graph_config_node_resource.go
- graph_config_node_type.go
- graph_config_node_variable.go
- graph_dot.go
- graph_interface_subgraph.go
- graph_walk.go
- graph_walk_context.go
- graph_walk_operation.go
- graphnodeconfigtype_string.go
- graphtype_string.go
- hook.go
- hook_mock.go
- hook_stop.go
- instancetype.go
- instancetype_string.go
- interpolate.go
- node_count_boundary.go
- node_module_destroy.go
- node_module_variable.go
- node_output.go
- node_output_orphan.go
- node_provider.go
- node_provider_abstract.go
- node_provider_disabled.go
- node_resource_abstract.go
- node_resource_apply.go
- node_resource_destroy.go
- node_resource_plan.go
- node_resource_plan_destroy.go
- node_resource_plan_instance.go
- node_resource_plan_orphan.go
- node_root_variable.go
- path.go
- plan.go
- resource.go
- resource_address.go
- resource_provider.go
- resource_provider_mock.go
- resource_provisioner.go
- resource_provisioner_mock.go
- semantics.go
- shadow.go
- shadow_components.go
- shadow_context.go
- shadow_resource_provider.go
- shadow_resource_provisioner.go
- state.go
- state_add.go
- state_filter.go
- state_upgrade_v1_to_v2.go
- state_upgrade_v2_to_v3.go
- state_v1.go
- transform.go
- transform_attach_config_provider.go
- transform_attach_config_resource.go
- transform_attach_state.go
- transform_config.go
- transform_config_flat.go
- transform_config_old.go
- transform_count_boundary.go
- transform_deposed.go
- transform_destroy.go
- transform_destroy_cbd.go
- transform_destroy_edge.go
- transform_diff.go
- transform_expand.go
- transform_flatten.go
- transform_import_provider.go
- transform_import_state.go
- transform_module_destroy_old.go
- transform_module_variable.go
- transform_noop.go
- transform_orphan.go
- transform_orphan_count.go
- transform_orphan_output.go
- transform_orphan_resource.go
- transform_output.go
- transform_output_orphan.go
- transform_provider.go
- transform_provider_disable.go
- transform_provider_old.go
- transform_provisioner.go
- transform_proxy.go
- transform_reference.go
- transform_resource.go
- transform_resource_count.go
- transform_root.go
- transform_state.go
- transform_targets.go
- transform_transitive_reduction.go
- transform_variable.go
- transform_vertex.go
- ui_input.go
- ui_input_mock.go
- ui_input_prefix.go
- ui_output.go
- ui_output_callback.go
- ui_output_mock.go
- ui_output_provisioner.go
- util.go
- variables.go
- version.go
- version_required.go
- walkoperation_string.go