Documentation
¶
Index ¶
- Constants
- func Equivalent[T UniqueKeyer](a, b T) bool
- func InstanceKeyLess(i, j InstanceKey) bool
- func IsDefaultProvider(addr Provider) bool
- func IsProviderPartNormalized(str string) (bool, error)
- func MustParseProviderPart(given string) string
- func ParseProviderPart(given string) (string, error)
- func ParseProviderSourceString(str string) (tfaddr.Provider, tfdiags.Diagnostics)
- type AbsCheck
- type AbsInputVariableInstance
- func (v AbsInputVariableInstance) CheckRule(typ CheckRuleType, i int) CheckRule
- func (v AbsInputVariableInstance) CheckableKind() CheckableKind
- func (v AbsInputVariableInstance) ConfigCheckable() ConfigCheckable
- func (v AbsInputVariableInstance) String() string
- func (v AbsInputVariableInstance) UniqueKey() UniqueKey
- type AbsModuleCall
- type AbsOutputValue
- func (v AbsOutputValue) CheckRule(t CheckRuleType, i int) CheckRule
- func (v AbsOutputValue) CheckableKind() CheckableKind
- func (v AbsOutputValue) ConfigCheckable() ConfigCheckable
- func (v AbsOutputValue) ConfigOutputValue() ConfigOutputValue
- func (v AbsOutputValue) Equal(o AbsOutputValue) bool
- func (v AbsOutputValue) ModuleCallOutput() (ModuleInstance, ModuleCallInstanceOutput)
- func (v AbsOutputValue) String() string
- func (v AbsOutputValue) UniqueKey() UniqueKey
- type AbsResource
- func (r AbsResource) AddrType() TargetableAddrType
- func (r AbsResource) AffectedAbsResource() AbsResource
- func (r AbsResource) Config() ConfigResource
- func (r AbsResource) Equal(o AbsResource) bool
- func (r AbsResource) Instance(key InstanceKey) AbsResourceInstance
- func (r AbsResource) Less(o AbsResource) bool
- func (r AbsResource) String() string
- func (r AbsResource) TargetContains(other Targetable) bool
- func (r AbsResource) UniqueKey() UniqueKey
- type AbsResourceInstance
- func (r AbsResourceInstance) AddrType() TargetableAddrType
- func (r AbsResourceInstance) AffectedAbsResource() AbsResource
- func (r AbsResourceInstance) CheckRule(t CheckRuleType, i int) CheckRule
- func (v AbsResourceInstance) CheckableKind() CheckableKind
- func (r AbsResourceInstance) ConfigCheckable() ConfigCheckable
- func (r AbsResourceInstance) ConfigResource() ConfigResource
- func (r AbsResourceInstance) ContainingResource() AbsResource
- func (r AbsResourceInstance) Equal(o AbsResourceInstance) bool
- func (r AbsResourceInstance) Less(o AbsResourceInstance) bool
- func (r AbsResourceInstance) String() string
- func (r AbsResourceInstance) TargetContains(other Targetable) bool
- func (r AbsResourceInstance) UniqueKey() UniqueKey
- type Check
- type CheckRule
- type CheckRuleType
- type Checkable
- type CheckableKind
- type ConfigCheck
- type ConfigCheckable
- type ConfigInputVariable
- type ConfigOutputValue
- type ConfigResource
- func (r ConfigResource) Absolute(module ModuleInstance) AbsResource
- func (r ConfigResource) AddrType() TargetableAddrType
- func (v ConfigResource) CheckableKind() CheckableKind
- func (r ConfigResource) Equal(o ConfigResource) bool
- func (r ConfigResource) String() string
- func (r ConfigResource) TargetContains(other Targetable) bool
- func (r ConfigResource) UniqueKey() UniqueKey
- type InputVariable
- type InstanceKey
- type InstanceKeyType
- type IntKey
- type Module
- func (m Module) AddrType() TargetableAddrType
- func (m Module) Ancestors() []Module
- func (m Module) Call() (Module, ModuleCall)
- func (m Module) Child(name string) Module
- func (m Module) Equal(other Module) bool
- func (m Module) IsRoot() bool
- func (m Module) Parent() Module
- func (m Module) Resource(mode ResourceMode, typeName string, name string) ConfigResource
- func (m Module) String() string
- func (m Module) TargetContains(other Targetable) bool
- func (m Module) UnkeyedInstanceShim() ModuleInstance
- type ModuleCall
- type ModuleCallInstance
- func (c ModuleCallInstance) Absolute(moduleAddr ModuleInstance) ModuleInstance
- func (c ModuleCallInstance) ModuleInstance(caller ModuleInstance) ModuleInstance
- func (c ModuleCallInstance) Output(name string) ModuleCallInstanceOutput
- func (c ModuleCallInstance) String() string
- func (c ModuleCallInstance) UniqueKey() UniqueKey
- type ModuleCallInstanceOutput
- type ModuleCallOutput
- type ModuleInstance
- func (m ModuleInstance) AddrType() TargetableAddrType
- func (m ModuleInstance) Ancestors() []ModuleInstance
- func (m ModuleInstance) Call() (ModuleInstance, ModuleCall)
- func (m ModuleInstance) CallInstance() (ModuleInstance, ModuleCallInstance)
- func (m ModuleInstance) Child(name string, key InstanceKey) ModuleInstance
- func (m ModuleInstance) ChildCall(name string) AbsModuleCall
- func (m ModuleInstance) Equal(o ModuleInstance) bool
- func (m ModuleInstance) InputVariable(name string) AbsInputVariableInstance
- func (m ModuleInstance) IsAncestor(o ModuleInstance) bool
- func (m ModuleInstance) IsDeclaredByCall(other AbsModuleCall) bool
- func (m ModuleInstance) IsRoot() bool
- func (m ModuleInstance) Less(o ModuleInstance) bool
- func (m ModuleInstance) Module() Module
- func (m ModuleInstance) OutputValue(name string) AbsOutputValue
- func (m ModuleInstance) Parent() ModuleInstance
- func (m ModuleInstance) Resource(mode ResourceMode, typeName string, name string) AbsResource
- func (m ModuleInstance) ResourceInstance(mode ResourceMode, typeName string, name string, key InstanceKey) AbsResourceInstance
- func (m ModuleInstance) String() string
- func (m ModuleInstance) TargetContains(other Targetable) bool
- func (m ModuleInstance) UniqueKey() UniqueKey
- type ModuleInstanceStep
- type OutputValue
- type Provider
- func ImpliedProviderForUnqualifiedType(typeName string) Provider
- func MustParseProviderSourceString(str string) Provider
- func NewBuiltInProvider(name string) Provider
- func NewDefaultProvider(name string) Provider
- func NewLegacyProvider(name string) Provider
- func NewProvider(hostname svchost.Hostname, namespace, typeName string) Provider
- type Referenceable
- type Resource
- func (r Resource) Absolute(module ModuleInstance) AbsResource
- func (r Resource) Equal(o Resource) bool
- func (r Resource) ImpliedProvider() string
- func (r Resource) InModule(module Module) ConfigResource
- func (r Resource) Instance(key InstanceKey) ResourceInstance
- func (r Resource) Less(o Resource) bool
- func (r Resource) String() string
- func (r Resource) UniqueKey() UniqueKey
- type ResourceInstance
- func (r ResourceInstance) Absolute(module ModuleInstance) AbsResourceInstance
- func (r ResourceInstance) ContainingResource() Resource
- func (r ResourceInstance) Equal(o ResourceInstance) bool
- func (r ResourceInstance) Less(o ResourceInstance) bool
- func (r ResourceInstance) String() string
- func (r ResourceInstance) UniqueKey() UniqueKey
- type ResourceMode
- type StringKey
- type Target
- type Targetable
- type TargetableAddrType
- type UniqueKey
- type UniqueKeyer
Constants ¶
const BuiltInProviderHost = tfaddr.BuiltInProviderHost
BuiltInProviderHost is the pseudo-hostname used for the "built-in" provider namespace. Built-in provider addresses must also have their namespace set to BuiltInProviderNamespace in order to be considered as built-in.
const BuiltInProviderNamespace = tfaddr.BuiltInProviderNamespace
BuiltInProviderNamespace is the provider namespace used for "built-in" providers. Built-in provider addresses must also have their hostname set to BuiltInProviderHost in order to be considered as built-in.
The this namespace is literally named "builtin", in the hope that users who see FQNs containing this will be able to infer the way in which they are special, even if they haven't encountered the concept formally yet.
const DefaultProviderRegistryHost = tfaddr.DefaultProviderRegistryHost
DefaultProviderRegistryHost is the hostname used for provider addresses that do not have an explicit hostname.
const LegacyProviderNamespace = tfaddr.LegacyProviderNamespace
LegacyProviderNamespace is the special string used in the Namespace field of type Provider to mark a legacy provider address. This special namespace value would normally be invalid, and can be used only when the hostname is DefaultRegistryHost because that host owns the mapping from legacy name to FQN.
Variables ¶
This section is empty.
Functions ¶
func Equivalent ¶
func Equivalent[T UniqueKeyer](a, b T) bool
func InstanceKeyLess ¶
func InstanceKeyLess(i, j InstanceKey) bool
InstanceKeyLess returns true if the first given instance key i should sort before the second key j, and false otherwise.
func IsDefaultProvider ¶
func IsProviderPartNormalized ¶
IsProviderPartNormalized compares a given string to the result of ParseProviderPart(string)
func MustParseProviderPart ¶
MustParseProviderPart is a wrapper around ParseProviderPart that panics if it returns an error.
func ParseProviderPart ¶
ParseProviderPart processes an addrs.Provider namespace or type string provided by an end-user, producing a normalized version if possible or an error if the string contains invalid characters.
A provider part is processed in the same way as an individual label in a DNS domain name: it is transformed to lowercase per the usual DNS case mapping and normalization rules and may contain only letters, digits, and dashes. Additionally, dashes may not appear at the start or end of the string.
These restrictions are intended to allow these names to appear in fussy contexts such as directory/file names on case-insensitive filesystems, repository names on GitHub, etc. We're using the DNS rules in particular, rather than some similar rules defined locally, because the hostname part of an addrs.Provider is already a hostname and it's ideal to use exactly the same case folding and normalization rules for all of the parts.
In practice a provider type string conventionally does not contain dashes either. Such names are permitted, but providers with such type names will be hard to use because their resource type names will not be able to contain the provider type name and thus each resource will need an explicit provider address specified. (A real-world example of such a provider is the "google-beta" variant of the GCP provider, which has resource types that start with the "google_" prefix instead.)
It's valid to pass the result of this function as the argument to a subsequent call, in which case the result will be identical.
func ParseProviderSourceString ¶
func ParseProviderSourceString(str string) (tfaddr.Provider, tfdiags.Diagnostics)
ParseProviderSourceString parses a value of the form expected in the "source" argument of a required_providers entry and returns the corresponding fully-qualified provider address. This is intended primarily to parse the FQN-like strings returned by terraform-config-inspect.
The following are valid source string formats:
- name
- namespace/name
- hostname/namespace/name
Types ¶
type AbsCheck ¶
type AbsCheck struct { Module ModuleInstance Check Check }
AbsCheck is an absolute address for a check block under a given module path.
This contains an actual ModuleInstance address (compared to the Module within a ConfigCheck), meaning this uniquely describes a check block within the entire configuration after any "count" or "foreach" meta arguments have been evaluated on the containing module.
func (AbsCheck) CheckRule ¶
func (c AbsCheck) CheckRule(typ CheckRuleType, i int) CheckRule
CheckRule returns an address for a given rule type within the check block.
There will be at most one CheckDataResource rule within a check block (with an index of 0). There will be at least one, but potentially many, CheckAssertion rules within a check block.
func (AbsCheck) CheckableKind ¶
func (c AbsCheck) CheckableKind() CheckableKind
func (AbsCheck) ConfigCheckable ¶
func (c AbsCheck) ConfigCheckable() ConfigCheckable
ConfigCheckable returns the ConfigCheck address for this absolute reference.
type AbsInputVariableInstance ¶
type AbsInputVariableInstance struct { Module ModuleInstance Variable InputVariable }
AbsInputVariableInstance is the address of an input variable within a particular module instance.
func (AbsInputVariableInstance) CheckRule ¶
func (v AbsInputVariableInstance) CheckRule(typ CheckRuleType, i int) CheckRule
func (AbsInputVariableInstance) CheckableKind ¶
func (v AbsInputVariableInstance) CheckableKind() CheckableKind
func (AbsInputVariableInstance) ConfigCheckable ¶
func (v AbsInputVariableInstance) ConfigCheckable() ConfigCheckable
func (AbsInputVariableInstance) String ¶
func (v AbsInputVariableInstance) String() string
func (AbsInputVariableInstance) UniqueKey ¶
func (v AbsInputVariableInstance) UniqueKey() UniqueKey
type AbsModuleCall ¶
type AbsModuleCall struct { Module ModuleInstance Call ModuleCall }
AbsModuleCall is the address of a "module" block relative to the root of the configuration.
This is similar to ModuleInstance alone, but specifically represents the module block itself rather than any one of the instances that module block declares.
func (AbsModuleCall) Equal ¶
func (c AbsModuleCall) Equal(other AbsModuleCall) bool
func (AbsModuleCall) Instance ¶
func (c AbsModuleCall) Instance(key InstanceKey) ModuleInstance
func (AbsModuleCall) String ¶
func (c AbsModuleCall) String() string
func (AbsModuleCall) UniqueKey ¶
func (c AbsModuleCall) UniqueKey() UniqueKey
type AbsOutputValue ¶
type AbsOutputValue struct { Module ModuleInstance OutputValue OutputValue }
AbsOutputValue is the absolute address of an output value within a module instance.
This represents an output globally within the namespace of a particular configuration. It is related to but separate from ModuleCallOutput, which represents a module output from the perspective of its parent module.
func ParseAbsOutputValue ¶
func ParseAbsOutputValue(traversal hcl.Traversal) (AbsOutputValue, tfdiags.Diagnostics)
func ParseAbsOutputValueStr ¶
func ParseAbsOutputValueStr(str string) (AbsOutputValue, tfdiags.Diagnostics)
func (AbsOutputValue) CheckRule ¶
func (v AbsOutputValue) CheckRule(t CheckRuleType, i int) CheckRule
func (AbsOutputValue) CheckableKind ¶
func (v AbsOutputValue) CheckableKind() CheckableKind
func (AbsOutputValue) ConfigCheckable ¶
func (v AbsOutputValue) ConfigCheckable() ConfigCheckable
func (AbsOutputValue) ConfigOutputValue ¶
func (v AbsOutputValue) ConfigOutputValue() ConfigOutputValue
func (AbsOutputValue) Equal ¶
func (v AbsOutputValue) Equal(o AbsOutputValue) bool
func (AbsOutputValue) ModuleCallOutput ¶
func (v AbsOutputValue) ModuleCallOutput() (ModuleInstance, ModuleCallInstanceOutput)
ModuleCallOutput converts an AbsModuleOutput into a ModuleCallOutput, returning also the module instance that the ModuleCallOutput is relative to.
The root module does not have a call, and so this method cannot be used with outputs in the root module, and will panic in that case.
func (AbsOutputValue) String ¶
func (v AbsOutputValue) String() string
func (AbsOutputValue) UniqueKey ¶
func (v AbsOutputValue) UniqueKey() UniqueKey
type AbsResource ¶
type AbsResource struct { Module ModuleInstance Resource Resource // contains filtered or unexported fields }
AbsResource is an absolute address for a resource under a given module path.
func ParseAbsResource ¶
func ParseAbsResource(traversal hcl.Traversal) (AbsResource, tfdiags.Diagnostics)
ParseAbsResource attempts to interpret the given traversal as an absolute resource address, using the same syntax as expected by ParseTarget.
If no error diagnostics are returned, the returned target includes the address that was extracted and the source range it was extracted from.
If error diagnostics are returned then the AbsResource value is invalid and must not be used.
func ParseAbsResourceStr ¶
func ParseAbsResourceStr(str string) (AbsResource, tfdiags.Diagnostics)
ParseAbsResourceStr is a helper wrapper around ParseAbsResource that takes a string and parses it with the HCL native syntax traversal parser before interpreting it.
Error diagnostics are returned if either the parsing fails or the analysis of the traversal fails. There is no way for the caller to distinguish the two kinds of diagnostics programmatically. If error diagnostics are returned the returned address may be incomplete.
Since this function has no context about the source of the given string, any returned diagnostics will not have meaningful source location information.
func (AbsResource) AddrType ¶
func (r AbsResource) AddrType() TargetableAddrType
func (AbsResource) AffectedAbsResource ¶
func (r AbsResource) AffectedAbsResource() AbsResource
AffectedAbsResource returns the AbsResource.
func (AbsResource) Config ¶
func (r AbsResource) Config() ConfigResource
Config returns the unexpanded ConfigResource for this AbsResource.
func (AbsResource) Equal ¶
func (r AbsResource) Equal(o AbsResource) bool
func (AbsResource) Instance ¶
func (r AbsResource) Instance(key InstanceKey) AbsResourceInstance
Instance produces the address for a specific instance of the receiver that is idenfied by the given key.
func (AbsResource) Less ¶
func (r AbsResource) Less(o AbsResource) bool
func (AbsResource) String ¶
func (r AbsResource) String() string
func (AbsResource) TargetContains ¶
func (r AbsResource) TargetContains(other Targetable) bool
TargetContains implements Targetable by returning true if the given other address is either equal to the receiver or is an instance of the receiver.
func (AbsResource) UniqueKey ¶
func (r AbsResource) UniqueKey() UniqueKey
type AbsResourceInstance ¶
type AbsResourceInstance struct { Module ModuleInstance Resource ResourceInstance // contains filtered or unexported fields }
AbsResourceInstance is an absolute address for a resource instance under a given module path.
func ParseAbsResourceInstance ¶
func ParseAbsResourceInstance(traversal hcl.Traversal) (AbsResourceInstance, tfdiags.Diagnostics)
ParseAbsResourceInstance attempts to interpret the given traversal as an absolute resource instance address, using the same syntax as expected by ParseTarget.
If no error diagnostics are returned, the returned target includes the address that was extracted and the source range it was extracted from.
If error diagnostics are returned then the AbsResource value is invalid and must not be used.
func ParseAbsResourceInstanceStr ¶
func ParseAbsResourceInstanceStr(str string) (AbsResourceInstance, tfdiags.Diagnostics)
ParseAbsResourceInstanceStr is a helper wrapper around ParseAbsResourceInstance that takes a string and parses it with the HCL native syntax traversal parser before interpreting it.
Error diagnostics are returned if either the parsing fails or the analysis of the traversal fails. There is no way for the caller to distinguish the two kinds of diagnostics programmatically. If error diagnostics are returned the returned address may be incomplete.
Since this function has no context about the source of the given string, any returned diagnostics will not have meaningful source location information.
func (AbsResourceInstance) AddrType ¶
func (r AbsResourceInstance) AddrType() TargetableAddrType
func (AbsResourceInstance) AffectedAbsResource ¶
func (r AbsResourceInstance) AffectedAbsResource() AbsResource
AffectedAbsResource returns the AbsResource for the instance.
func (AbsResourceInstance) CheckRule ¶
func (r AbsResourceInstance) CheckRule(t CheckRuleType, i int) CheckRule
func (AbsResourceInstance) CheckableKind ¶
func (v AbsResourceInstance) CheckableKind() CheckableKind
func (AbsResourceInstance) ConfigCheckable ¶
func (r AbsResourceInstance) ConfigCheckable() ConfigCheckable
func (AbsResourceInstance) ConfigResource ¶
func (r AbsResourceInstance) ConfigResource() ConfigResource
ConfigResource returns the address of the configuration block that declared this instance.
func (AbsResourceInstance) ContainingResource ¶
func (r AbsResourceInstance) ContainingResource() AbsResource
ContainingResource returns the address of the resource that contains the receving resource instance. In other words, it discards the key portion of the address to produce an AbsResource value.
func (AbsResourceInstance) Equal ¶
func (r AbsResourceInstance) Equal(o AbsResourceInstance) bool
func (AbsResourceInstance) Less ¶
func (r AbsResourceInstance) Less(o AbsResourceInstance) bool
Less returns true if the receiver should sort before the given other value in a sorted list of addresses.
func (AbsResourceInstance) String ¶
func (r AbsResourceInstance) String() string
func (AbsResourceInstance) TargetContains ¶
func (r AbsResourceInstance) TargetContains(other Targetable) bool
TargetContains implements Targetable by returning true if the given other address is equal to the receiver.
func (AbsResourceInstance) UniqueKey ¶
func (r AbsResourceInstance) UniqueKey() UniqueKey
type Check ¶
type Check struct { Name string // contains filtered or unexported fields }
Check is the address of a check block within a module.
For now, checks do not support meta arguments such as "count" or "for_each" so this address uniquely describes a single check within a module.
func (Check) Absolute ¶
func (c Check) Absolute(modAddr ModuleInstance) AbsCheck
Absolute returns an AbsCheck from the receiver and the given module instance address.
func (Check) InModule ¶
func (c Check) InModule(modAddr Module) ConfigCheck
InModule returns a ConfigCheck from the receiver and the given module address.
type CheckRule ¶
type CheckRule struct { Container Checkable Type CheckRuleType Index int }
CheckRule is the address of a check rule within a checkable object.
This represents the check rule globally within a configuration, and is used during graph evaluation to identify a condition result object to update with the result of check rule evaluation.
The check address is not distinct from resource traversals, and check rule values are not intended to be available to the language, so the address is not Referenceable.
Note also that the check address is only relevant within the scope of a run, as reordering check blocks between runs will result in their addresses changing. CheckRule is therefore for internal use only and should not be exposed in durable artifacts such as state snapshots.
func NewCheckRule ¶
func NewCheckRule(container Checkable, typ CheckRuleType, index int) CheckRule
type CheckRuleType ¶
type CheckRuleType int
CheckRuleType describes a category of check. We use this only to establish uniqueness for Check values, and do not expose this concept of "check types" (which is subject to change in future) in any durable artifacts such as state snapshots.
(See CheckableKind for an enumeration that we _do_ use externally, to describe the type of object being checked rather than the type of the check itself.)
const ( InvalidCondition CheckRuleType = 0 ResourcePrecondition CheckRuleType = 1 ResourcePostcondition CheckRuleType = 2 OutputPrecondition CheckRuleType = 3 CheckDataResource CheckRuleType = 4 CheckAssertion CheckRuleType = 5 InputValidation CheckRuleType = 6 )
func (CheckRuleType) Description ¶
func (c CheckRuleType) Description() string
Description returns a human-readable description of the check type. This is presented in the user interface through a diagnostic summary.
type Checkable ¶
type Checkable interface { UniqueKeyer // CheckRule returns the address of an individual check rule of a specified // type and index within this checkable container. CheckRule(CheckRuleType, int) CheckRule // ConfigCheckable returns the address of the configuration construct that // this Checkable belongs to. // // Checkable objects can potentially be dynamically declared during a // plan operation using constructs like resource for_each, and so // ConfigCheckable gives us a way to talk about the static containers // those dynamic objects belong to, in case we wish to group together // dynamic checkable objects into their static checkable for reporting // purposes. ConfigCheckable() ConfigCheckable CheckableKind() CheckableKind String() string // contains filtered or unexported methods }
Checkable is an interface implemented by all address types that can contain condition blocks.
func ParseCheckableStr ¶
func ParseCheckableStr(kind CheckableKind, src string) (Checkable, tfdiags.Diagnostics)
ParseCheckableStr attempts to parse the given string as a Checkable address of the given kind.
This should be the opposite of Checkable.String for any Checkable address type, as long as "kind" is set to the value returned by the address's CheckableKind method.
We do not typically expect users to write out checkable addresses as input, but we use them as part of some of our wire formats for persisting check results between runs.
type CheckableKind ¶
type CheckableKind rune
CheckableKind describes the different kinds of checkable objects.
const ( CheckableKindInvalid CheckableKind = 0 CheckableResource CheckableKind = 'R' CheckableOutputValue CheckableKind = 'O' CheckableCheck CheckableKind = 'C' CheckableInputVariable CheckableKind = 'I' )
type ConfigCheck ¶
ConfigCheck is an address for a check block within a configuration.
This contains a Check address and a Module address, meaning this describes a check block within the entire configuration.
func (ConfigCheck) CheckableKind ¶
func (c ConfigCheck) CheckableKind() CheckableKind
func (ConfigCheck) String ¶
func (c ConfigCheck) String() string
func (ConfigCheck) UniqueKey ¶
func (c ConfigCheck) UniqueKey() UniqueKey
type ConfigCheckable ¶
type ConfigCheckable interface { UniqueKeyer CheckableKind() CheckableKind String() string // contains filtered or unexported methods }
ConfigCheckable is an interfaces implemented by address types that represent configuration constructs that can have Checkable addresses associated with them.
This address type therefore in a sense represents a container for zero or more checkable objects all declared by the same configuration construct, so that we can talk about these groups of checkable objects before we're ready to decide how many checkable objects belong to each one.
type ConfigInputVariable ¶
type ConfigInputVariable struct { Module Module Variable InputVariable }
func (ConfigInputVariable) CheckableKind ¶
func (v ConfigInputVariable) CheckableKind() CheckableKind
func (ConfigInputVariable) String ¶
func (v ConfigInputVariable) String() string
func (ConfigInputVariable) UniqueKey ¶
func (v ConfigInputVariable) UniqueKey() UniqueKey
type ConfigOutputValue ¶
type ConfigOutputValue struct { Module Module OutputValue OutputValue }
ConfigOutputValue represents a particular "output" block in the configuration, which might have many AbsOutputValue addresses associated with it at runtime if it belongs to a module that was called using "count" or "for_each".
func (ConfigOutputValue) CheckableKind ¶
func (v ConfigOutputValue) CheckableKind() CheckableKind
func (ConfigOutputValue) String ¶
func (v ConfigOutputValue) String() string
func (ConfigOutputValue) UniqueKey ¶
func (v ConfigOutputValue) UniqueKey() UniqueKey
type ConfigResource ¶
type ConfigResource struct { Module Module Resource Resource // contains filtered or unexported fields }
ConfigResource is an address for a resource within a configuration.
func (ConfigResource) Absolute ¶
func (r ConfigResource) Absolute(module ModuleInstance) AbsResource
Absolute produces the address for the receiver within a specific module instance.
func (ConfigResource) AddrType ¶
func (r ConfigResource) AddrType() TargetableAddrType
func (ConfigResource) CheckableKind ¶
func (v ConfigResource) CheckableKind() CheckableKind
func (ConfigResource) Equal ¶
func (r ConfigResource) Equal(o ConfigResource) bool
func (ConfigResource) String ¶
func (r ConfigResource) String() string
func (ConfigResource) TargetContains ¶
func (r ConfigResource) TargetContains(other Targetable) bool
TargetContains implements Targetable by returning true if the given other address is either equal to the receiver or is an instance of the receiver.
func (ConfigResource) UniqueKey ¶
func (r ConfigResource) UniqueKey() UniqueKey
type InputVariable ¶
type InputVariable struct { Name string // contains filtered or unexported fields }
InputVariable is the address of an input variable.
func (InputVariable) Absolute ¶
func (v InputVariable) Absolute(m ModuleInstance) AbsInputVariableInstance
Absolute converts the receiver into an absolute address within the given module instance.
func (InputVariable) InModule ¶
func (v InputVariable) InModule(module Module) ConfigInputVariable
func (InputVariable) String ¶
func (v InputVariable) String() string
func (InputVariable) UniqueKey ¶
func (v InputVariable) UniqueKey() UniqueKey
type InstanceKey ¶
type InstanceKey interface { String() string // Value returns the cty.Value of the appropriate type for the InstanceKey // value. Value() cty.Value // contains filtered or unexported methods }
InstanceKey represents the key of an instance within an object that contains multiple instances due to using "count" or "for_each" arguments in configuration.
IntKey and StringKey are the two implementations of this type. No other implementations are allowed. The single instance of an object that _isn't_ using "count" or "for_each" is represented by NoKey, which is a nil InstanceKey.
var NoKey InstanceKey
NoKey represents the absense of an InstanceKey, for the single instance of a configuration object that does not use "count" or "for_each" at all.
func ParseInstanceKey ¶
func ParseInstanceKey(key cty.Value) (InstanceKey, error)
ParseInstanceKey returns the instance key corresponding to the given value, which must be known and non-null.
If an unknown or null value is provided then this function will panic. This function is intended to deal with the values that would naturally be found in a hcl.TraverseIndex, which (when parsed from source, at least) can never contain unknown or null values.
type InstanceKeyType ¶
type InstanceKeyType rune
InstanceKeyType represents the different types of instance key that are supported. Usually it is sufficient to simply type-assert an InstanceKey value to either IntKey or StringKey, but this type and its values can be used to represent the types themselves, rather than specific values of those types.
const ( NoKeyType InstanceKeyType = 0 IntKeyType InstanceKeyType = 'I' StringKeyType InstanceKeyType = 'S' )
type IntKey ¶
type IntKey int
IntKey is the InstanceKey representation representing integer indices, as used when the "count" argument is specified or if for_each is used with a sequence type.
type Module ¶
type Module []string
Module is an address for a module call within configuration. This is the static counterpart of ModuleInstance, representing a traversal through the static module call tree in configuration and does not take into account the potentially-multiple instances of a module that might be created by "count" and "for_each" arguments within those calls.
This type should be used only in very specialized cases when working with the static module call tree. Type ModuleInstance is appropriate in more cases.
Although Module is a slice, it should be treated as immutable after creation.
var RootModule Module
RootModule is the module address representing the root of the static module call tree, which is also the zero value of Module.
Note that this is not the root of the dynamic module tree, which is instead represented by RootModuleInstance.
func (Module) AddrType ¶
func (m Module) AddrType() TargetableAddrType
func (Module) Ancestors ¶
Ancestors returns a slice containing the receiver and all of its ancestor modules, all the way up to (and including) the root module. The result is ordered by depth, with the root module always first.
Since the result always includes the root module, a caller may choose to ignore it by slicing the result with [1:].
func (Module) Call ¶
func (m Module) Call() (Module, ModuleCall)
Call returns the module call address that corresponds to the given module instance, along with the address of the module that contains it.
There is no call for the root module, so this method will panic if called on the root module address.
In practice, this just turns the last element of the receiver into a ModuleCall and then returns a slice of the receiever that excludes that last part. This is just a convenience for situations where a call address is required, such as when dealing with *Reference and Referencable values.
func (Module) Child ¶
Child returns the address of a child call in the receiver, identified by the given name.
func (Module) IsRoot ¶
IsRoot returns true if the receiver is the address of the root module, or false otherwise.
func (Module) Parent ¶
Parent returns the address of the parent module of the receiver, or the receiver itself if there is no parent (if it's the root module address).
func (Module) Resource ¶
func (m Module) Resource(mode ResourceMode, typeName string, name string) ConfigResource
Resource returns the address of a particular resource within the module.
func (Module) TargetContains ¶
func (m Module) TargetContains(other Targetable) bool
TargetContains implements Targetable for Module by returning true if the given other address either matches the receiver, is a sub-module-instance of the receiver, or is a targetable absolute address within a module that is contained within the receiver.
func (Module) UnkeyedInstanceShim ¶
func (m Module) UnkeyedInstanceShim() ModuleInstance
UnkeyedInstanceShim is a shim method for converting a Module address to the equivalent ModuleInstance address that assumes that no modules have keyed instances.
This is a temporary allowance for the fact that OpenTofu does not presently support "count" and "for_each" on modules, and thus graph building code that derives graph nodes from configuration must just assume unkeyed modules in order to construct the graph. At a later time when "count" and "for_each" support is added for modules, all callers of this method will need to be reworked to allow for keyed module instances.
type ModuleCall ¶
type ModuleCall struct { Name string // contains filtered or unexported fields }
ModuleCall is the address of a call from the current module to a child module.
func (ModuleCall) Absolute ¶
func (c ModuleCall) Absolute(moduleAddr ModuleInstance) AbsModuleCall
func (ModuleCall) Equal ¶
func (c ModuleCall) Equal(other ModuleCall) bool
func (ModuleCall) Instance ¶
func (c ModuleCall) Instance(key InstanceKey) ModuleCallInstance
Instance returns the address of an instance of the receiver identified by the given key.
func (ModuleCall) String ¶
func (c ModuleCall) String() string
func (ModuleCall) UniqueKey ¶
func (c ModuleCall) UniqueKey() UniqueKey
type ModuleCallInstance ¶
type ModuleCallInstance struct { Call ModuleCall Key InstanceKey // contains filtered or unexported fields }
ModuleCallInstance is the address of one instance of a module created from a module call, which might create multiple instances using "count" or "for_each" arguments.
There is no "Abs" version of ModuleCallInstance because an absolute module path is represented by ModuleInstance.
func (ModuleCallInstance) Absolute ¶
func (c ModuleCallInstance) Absolute(moduleAddr ModuleInstance) ModuleInstance
func (ModuleCallInstance) ModuleInstance ¶
func (c ModuleCallInstance) ModuleInstance(caller ModuleInstance) ModuleInstance
ModuleInstance returns the address of the module instance that corresponds to the receiving call instance when resolved in the given calling module. In other words, it returns the child module instance that the receving call instance creates.
func (ModuleCallInstance) Output ¶
func (c ModuleCallInstance) Output(name string) ModuleCallInstanceOutput
Output returns the absolute address of an output of the receiver identified by its name.
func (ModuleCallInstance) String ¶
func (c ModuleCallInstance) String() string
func (ModuleCallInstance) UniqueKey ¶
func (c ModuleCallInstance) UniqueKey() UniqueKey
type ModuleCallInstanceOutput ¶
type ModuleCallInstanceOutput struct { Call ModuleCallInstance Name string // contains filtered or unexported fields }
ModuleCallInstanceOutput is the address of a particular named output produced by an instance of a module call.
func (ModuleCallInstanceOutput) AbsOutputValue ¶
func (co ModuleCallInstanceOutput) AbsOutputValue(caller ModuleInstance) AbsOutputValue
AbsOutputValue returns the absolute output value address that corresponds to the receving module call output address, once resolved in the given calling module.
func (ModuleCallInstanceOutput) ModuleCallOutput ¶
func (co ModuleCallInstanceOutput) ModuleCallOutput() ModuleCallOutput
ModuleCallOutput returns the referenceable ModuleCallOutput for this particular instance.
func (ModuleCallInstanceOutput) String ¶
func (co ModuleCallInstanceOutput) String() string
func (ModuleCallInstanceOutput) UniqueKey ¶
func (co ModuleCallInstanceOutput) UniqueKey() UniqueKey
type ModuleCallOutput ¶
type ModuleCallOutput struct { Call ModuleCall Name string // contains filtered or unexported fields }
ModuleCallOutput is the address of a named output and its associated ModuleCall, which may expand into multiple module instances
func (ModuleCallOutput) String ¶
func (m ModuleCallOutput) String() string
func (ModuleCallOutput) UniqueKey ¶
func (m ModuleCallOutput) UniqueKey() UniqueKey
type ModuleInstance ¶
type ModuleInstance []ModuleInstanceStep
ModuleInstance is an address for a particular module instance within the dynamic module tree. This is an extension of the static traversals represented by type Module that deals with the possibility of a single module call producing multiple instances via the "count" and "for_each" arguments.
Although ModuleInstance is a slice, it should be treated as immutable after creation.
var RootModuleInstance ModuleInstance
RootModuleInstance is the module instance address representing the root module, which is also the zero value of ModuleInstance.
func ParseModuleInstance ¶
func ParseModuleInstance(traversal hcl.Traversal) (ModuleInstance, tfdiags.Diagnostics)
func ParseModuleInstanceStr ¶
func ParseModuleInstanceStr(str string) (ModuleInstance, tfdiags.Diagnostics)
ParseModuleInstanceStr is a helper wrapper around ParseModuleInstance that takes a string and parses it with the HCL native syntax traversal parser before interpreting it.
This should be used only in specialized situations since it will cause the created references to not have any meaningful source location information. If a reference string is coming from a source that should be identified in error messages then the caller should instead parse it directly using a suitable function from the HCL API and pass the traversal itself to ParseModuleInstance.
Error diagnostics are returned if either the parsing fails or the analysis of the traversal fails. There is no way for the caller to distinguish the two kinds of diagnostics programmatically. If error diagnostics are returned then the returned address is invalid.
func (ModuleInstance) AddrType ¶
func (m ModuleInstance) AddrType() TargetableAddrType
func (ModuleInstance) Ancestors ¶
func (m ModuleInstance) Ancestors() []ModuleInstance
Ancestors returns a slice containing the receiver and all of its ancestor module instances, all the way up to (and including) the root module. The result is ordered by depth, with the root module always first.
Since the result always includes the root module, a caller may choose to ignore it by slicing the result with [1:].
func (ModuleInstance) Call ¶
func (m ModuleInstance) Call() (ModuleInstance, ModuleCall)
Call returns the module call address that corresponds to the given module instance, along with the address of the module instance that contains it.
There is no call for the root module, so this method will panic if called on the root module address.
A single module call can produce potentially many module instances, so the result discards any instance key that might be present on the last step of the instance. To retain this, use CallInstance instead.
In practice, this just turns the last element of the receiver into a ModuleCall and then returns a slice of the receiever that excludes that last part. This is just a convenience for situations where a call address is required, such as when dealing with *Reference and Referencable values.
func (ModuleInstance) CallInstance ¶
func (m ModuleInstance) CallInstance() (ModuleInstance, ModuleCallInstance)
CallInstance returns the module call instance address that corresponds to the given module instance, along with the address of the module instance that contains it.
There is no call for the root module, so this method will panic if called on the root module address.
In practice, this just turns the last element of the receiver into a ModuleCallInstance and then returns a slice of the receiever that excludes that last part. This is just a convenience for situations where a call\ address is required, such as when dealing with *Reference and Referencable values.
func (ModuleInstance) Child ¶
func (m ModuleInstance) Child(name string, key InstanceKey) ModuleInstance
Child returns the address of a child module instance of the receiver, identified by the given name and key.
func (ModuleInstance) ChildCall ¶
func (m ModuleInstance) ChildCall(name string) AbsModuleCall
ChildCall returns the address of a module call within the receiver, identified by the given name.
func (ModuleInstance) Equal ¶
func (m ModuleInstance) Equal(o ModuleInstance) bool
Equal returns true if the receiver and the given other value contains the exact same parts.
func (ModuleInstance) InputVariable ¶
func (m ModuleInstance) InputVariable(name string) AbsInputVariableInstance
InputVariable returns the absolute address of the input variable of the given name inside the receiving module instance.
func (ModuleInstance) IsAncestor ¶
func (m ModuleInstance) IsAncestor(o ModuleInstance) bool
IsAncestor returns true if the receiver is an ancestor of the given other value.
func (ModuleInstance) IsDeclaredByCall ¶
func (m ModuleInstance) IsDeclaredByCall(other AbsModuleCall) bool
IsDeclaredByCall returns true if the receiver is an instance of the given AbsModuleCall.
func (ModuleInstance) IsRoot ¶
func (m ModuleInstance) IsRoot() bool
IsRoot returns true if the receiver is the address of the root module instance, or false otherwise.
func (ModuleInstance) Less ¶
func (m ModuleInstance) Less(o ModuleInstance) bool
Less returns true if the receiver should sort before the given other value in a sorted list of addresses.
func (ModuleInstance) Module ¶
func (m ModuleInstance) Module() Module
Module returns the address of the module that this instance is an instance of.
func (ModuleInstance) OutputValue ¶
func (m ModuleInstance) OutputValue(name string) AbsOutputValue
OutputValue returns the absolute address of an output value of the given name within the receiving module instance.
func (ModuleInstance) Parent ¶
func (m ModuleInstance) Parent() ModuleInstance
Parent returns the address of the parent module instance of the receiver, or the receiver itself if there is no parent (if it's the root module address).
func (ModuleInstance) Resource ¶
func (m ModuleInstance) Resource(mode ResourceMode, typeName string, name string) AbsResource
Resource returns the address of a particular resource within the receiver.
func (ModuleInstance) ResourceInstance ¶
func (m ModuleInstance) ResourceInstance(mode ResourceMode, typeName string, name string, key InstanceKey) AbsResourceInstance
ResourceInstance returns the address of a particular resource instance within the receiver.
func (ModuleInstance) String ¶
func (m ModuleInstance) String() string
String returns a string representation of the receiver, in the format used within e.g. user-provided resource addresses.
The address of the root module has the empty string as its representation.
func (ModuleInstance) TargetContains ¶
func (m ModuleInstance) TargetContains(other Targetable) bool
TargetContains implements Targetable by returning true if the given other address either matches the receiver, is a sub-module-instance of the receiver, or is a targetable absolute address within a module that is contained within the reciever.
func (ModuleInstance) UniqueKey ¶
func (m ModuleInstance) UniqueKey() UniqueKey
type ModuleInstanceStep ¶
type ModuleInstanceStep struct { Name string InstanceKey InstanceKey }
ModuleInstanceStep is a single traversal step through the dynamic module tree. It is used only as part of ModuleInstance.
func (ModuleInstanceStep) String ¶
func (s ModuleInstanceStep) String() string
type OutputValue ¶
type OutputValue struct { Name string // contains filtered or unexported fields }
OutputValue is the address of an output value, in the context of the module that is defining it.
This is related to but separate from ModuleCallOutput, which represents a module output from the perspective of its parent module. Outputs are referencable from the testing scope, in general tofu operation users will be referencing ModuleCallOutput.
func (OutputValue) Absolute ¶
func (v OutputValue) Absolute(m ModuleInstance) AbsOutputValue
Absolute converts the receiver into an absolute address within the given module instance.
func (OutputValue) Equal ¶
func (v OutputValue) Equal(o OutputValue) bool
func (OutputValue) InModule ¶
func (v OutputValue) InModule(m Module) ConfigOutputValue
InModule converts the receiver into a config address within the given module.
func (OutputValue) String ¶
func (v OutputValue) String() string
func (OutputValue) UniqueKey ¶
func (v OutputValue) UniqueKey() UniqueKey
type Provider ¶
Provider encapsulates a single provider type. In the future this will be extended to include additional fields including Namespace and SourceHost
func ImpliedProviderForUnqualifiedType ¶
ImpliedProviderForUnqualifiedType represents the rules for inferring what provider FQN a user intended when only a naked type name is available.
For all except the type name "terraform" this returns a so-called "default" provider, which is under the registry.terraform.io/hashicorp/ namespace.
As a special case, the string "terraform" maps to "terraform.io/builtin/terraform" because that is the more likely user intent than the now-unmaintained "registry.terraform.io/hashicorp/terraform" which remains only for compatibility with older OpenTofu versions.
func MustParseProviderSourceString ¶
MustParseProviderSourceString is a wrapper around ParseProviderSourceString that panics if it returns an error.
func NewBuiltInProvider ¶
NewBuiltInProvider returns the address of a "built-in" provider. See the docs for Provider.IsBuiltIn for more information.
func NewDefaultProvider ¶
NewDefaultProvider returns the default address of a HashiCorp-maintained, Registry-hosted provider.
func NewLegacyProvider ¶
NewLegacyProvider returns a mock address for a provider. This will be removed when ProviderType is fully integrated.
func NewProvider ¶
NewProvider constructs a provider address from its parts, and normalizes the namespace and type parts to lowercase using unicode case folding rules so that resulting addrs.Provider values can be compared using standard Go equality rules (==).
The hostname is given as a svchost.Hostname, which is required by the contract of that type to have already been normalized for equality testing.
This function will panic if the given namespace or type name are not valid. When accepting namespace or type values from outside the program, use ParseProviderPart first to check that the given value is valid.
type Referenceable ¶
type Referenceable interface { // All Referenceable address types must have unique keys. UniqueKeyer // String produces a string representation of the address that could be // parsed as a HCL traversal and passed to ParseRef to produce an identical // result. String() string // contains filtered or unexported methods }
Referenceable is an interface implemented by all address types that can appear as references in configuration language expressions.
type Resource ¶
type Resource struct { Mode ResourceMode Type string Name string // contains filtered or unexported fields }
Resource is an address for a resource block within configuration, which contains potentially-multiple resource instances if that configuration block uses "count" or "for_each".
func (Resource) Absolute ¶
func (r Resource) Absolute(module ModuleInstance) AbsResource
Absolute returns an AbsResource from the receiver and the given module instance address.
func (Resource) ImpliedProvider ¶
ImpliedProvider returns the implied provider type name, for e.g. the "aws" in "aws_instance"
func (Resource) InModule ¶
func (r Resource) InModule(module Module) ConfigResource
InModule returns a ConfigResource from the receiver and the given module address.
func (Resource) Instance ¶
func (r Resource) Instance(key InstanceKey) ResourceInstance
Instance produces the address for a specific instance of the receiver that is idenfied by the given key.
type ResourceInstance ¶
type ResourceInstance struct { Resource Resource Key InstanceKey // contains filtered or unexported fields }
ResourceInstance is an address for a specific instance of a resource. When a resource is defined in configuration with "count" or "for_each" it produces zero or more instances, which can be addressed using this type.
func (ResourceInstance) Absolute ¶
func (r ResourceInstance) Absolute(module ModuleInstance) AbsResourceInstance
Absolute returns an AbsResourceInstance from the receiver and the given module instance address.
func (ResourceInstance) ContainingResource ¶
func (r ResourceInstance) ContainingResource() Resource
func (ResourceInstance) Equal ¶
func (r ResourceInstance) Equal(o ResourceInstance) bool
func (ResourceInstance) Less ¶
func (r ResourceInstance) Less(o ResourceInstance) bool
func (ResourceInstance) String ¶
func (r ResourceInstance) String() string
func (ResourceInstance) UniqueKey ¶
func (r ResourceInstance) UniqueKey() UniqueKey
type ResourceMode ¶
type ResourceMode rune
ResourceMode defines which lifecycle applies to a given resource. Each resource lifecycle has a slightly different address format.
const ( // InvalidResourceMode is the zero value of ResourceMode and is not // a valid resource mode. InvalidResourceMode ResourceMode = 0 // ManagedResourceMode indicates a managed resource, as defined by // "resource" blocks in configuration. ManagedResourceMode ResourceMode = 'M' // DataResourceMode indicates a data resource, as defined by // "data" blocks in configuration. DataResourceMode ResourceMode = 'D' )
type StringKey ¶
type StringKey string
StringKey is the InstanceKey representation representing string indices, as used when the "for_each" argument is specified with a map or object type.
type Target ¶
type Target struct { Subject Targetable SourceRange tfdiags.SourceRange }
Target describes a targeted address with source location information.
func ParseTarget ¶
func ParseTarget(traversal hcl.Traversal) (*Target, tfdiags.Diagnostics)
ParseTarget attempts to interpret the given traversal as a targetable address. The given traversal must be absolute, or this function will panic.
If no error diagnostics are returned, the returned target includes the address that was extracted and the source range it was extracted from.
If error diagnostics are returned then the Target value is invalid and must not be used.
func ParseTargetStr ¶
func ParseTargetStr(str string) (*Target, tfdiags.Diagnostics)
ParseTargetStr is a helper wrapper around ParseTarget that takes a string and parses it with the HCL native syntax traversal parser before interpreting it.
This should be used only in specialized situations since it will cause the created references to not have any meaningful source location information. If a target string is coming from a source that should be identified in error messages then the caller should instead parse it directly using a suitable function from the HCL API and pass the traversal itself to ParseTarget.
Error diagnostics are returned if either the parsing fails or the analysis of the traversal fails. There is no way for the caller to distinguish the two kinds of diagnostics programmatically. If error diagnostics are returned the returned target may be nil or incomplete.
func (*Target) ModuleAddr ¶
func (t *Target) ModuleAddr() ModuleInstance
ModuleAddr returns the module address portion of the subject of the recieving target.
Regardless of specific address type, all targets always include a module address. They might also include something in that module, which this method always discards if so.
type Targetable ¶
type Targetable interface { // TargetContains returns true if the receiver is considered to contain // the given other address. Containment, for the purpose of targeting, // means that if a container address is targeted then all of the // addresses within it are also implicitly targeted. // // A targetable address always contains at least itself. TargetContains(other Targetable) bool // AddrType returns the address type for comparison with other Targetable // addresses. AddrType() TargetableAddrType // String produces a string representation of the address that could be // parsed as a HCL traversal and passed to ParseTarget to produce an // identical result. String() string // contains filtered or unexported methods }
Targetable is an interface implemented by all address types that can be used as "targets" for selecting sub-graphs of a graph.
type TargetableAddrType ¶
type TargetableAddrType int
const ( ConfigResourceAddrType TargetableAddrType = iota AbsResourceInstanceAddrType AbsResourceAddrType ModuleAddrType ModuleInstanceAddrType )
type UniqueKey ¶
type UniqueKey interface {
// contains filtered or unexported methods
}
UniqueKey is an interface implemented by values that serve as unique map keys for particular addresses.
All implementations of UniqueKey are comparable and can thus be used as map keys. Unique keys generated from different address types are always distinct. All functionally-equivalent keys for the same address type always compare equal, and likewise functionally-different values do not.
type UniqueKeyer ¶
type UniqueKeyer interface {
UniqueKey() UniqueKey
}
UniqueKeyer is an interface implemented by types that can be represented by a unique key.
Some address types naturally comply with the expectations of a UniqueKey and may thus be their own unique key type. However, address types that are not naturally comparable can implement this interface by returning proxy values.