Documentation ¶
Index ¶
- Variables
- func ParseProviderConfigCompact(traversal hcl.Traversal) (addrs.LocalProviderConfig, tfdiags.Diagnostics)
- func ParseProviderConfigCompactStr(str string) (addrs.LocalProviderConfig, tfdiags.Diagnostics)
- type Check
- type CheckRule
- type Connection
- type Container
- type Local
- type ManagedResource
- type ModuleCall
- type Output
- type PassedProviderConfig
- type Provider
- type ProviderConfigRef
- type Provisioner
- type ProvisionerOnFailure
- type ProvisionerWhen
- type Resource
- type Variable
- type VariableParsingMode
- type VersionConstraint
Constants ¶
This section is empty.
Variables ¶
var ResourceBlockSchema = &hcl.BodySchema{ Attributes: commonResourceAttributes, Blocks: []hcl.BlockHeaderSchema{ {Type: "locals"}, {Type: "lifecycle"}, {Type: "connection"}, {Type: "provisioner", LabelNames: []string{"type"}}, {Type: "_"}, }, }
ResourceBlockSchema is the schema for a resource or data resource type within Terraform.
This schema is public as it is required elsewhere in order to validate and use generated config.
Functions ¶
func ParseProviderConfigCompact ¶
func ParseProviderConfigCompact(traversal hcl.Traversal) (addrs.LocalProviderConfig, tfdiags.Diagnostics)
ParseProviderConfigCompact parses the given absolute traversal as a relative provider address in compact form. The following are examples of traversals that can be successfully parsed as compact relative provider configuration addresses:
- aws
- aws.foo
This function will panic if given a relative traversal.
If the returned diagnostics contains errors then the result value is invalid and must not be used.
func ParseProviderConfigCompactStr ¶
func ParseProviderConfigCompactStr(str string) (addrs.LocalProviderConfig, tfdiags.Diagnostics)
ParseProviderConfigCompactStr is a helper wrapper around ParseProviderConfigCompact 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 ParseProviderConfigCompact.
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.
Types ¶
type Check ¶
Check represents a configuration defined check block.
A check block contains 0-1 data blocks, and 0-n assert blocks. The check block will load the data block, and execute the assert blocks as check rules during the plan and apply Terraform operations.
func (Check) Accessible ¶
func (c Check) Accessible(addr addrs.Referenceable) bool
type CheckRule ¶
type CheckRule struct { // Condition is an expression that must evaluate to true if the condition // holds or false if it does not. If the expression produces an error then // that's considered to be a bug in the module defining the check. // // The available variables in a condition expression vary depending on what // a check is attached to. For example, validation rules attached to // input variables can only refer to the variable that is being validated. Condition hcl.Expression // ErrorMessage should be one or more full sentences, which should be in // English for consistency with the rest of the error message output but // can in practice be in any language. The message should describe what is // required for the condition to return true in a way that would make sense // to a caller of the module. // // The error message expression has the same variables available for // interpolation as the corresponding condition. ErrorMessage hcl.Expression DeclRange hcl.Range }
CheckRule represents a configuration-defined validation rule, precondition, or postcondition. Blocks of this sort can appear in a few different places in configuration, including "validation" blocks for variables, and "precondition" and "postcondition" blocks for resources.
type Connection ¶
type Connection struct { Config hcl.Body DeclRange hcl.Range }
Connection represents a "connection" block when used within either a "resource" or "provisioner" block in a module or file.
type Container ¶
type Container interface { // Accessible should return true if the resource specified by addr can // reference other items within this Container. // // Typically, that means that addr will either be the container itself or // something within the container. Accessible(addr addrs.Referenceable) bool }
Container provides an interface for scoped resources.
Any resources contained within a Container should not be accessible from outside the container.
type Local ¶
type Local struct { Name string Expr hcl.Expression DeclRange hcl.Range }
Local represents a single entry from a "locals" block in a module or file. The "locals" block itself is not represented, because it serves only to provide context for us to interpret its contents.
func (*Local) Addr ¶
func (l *Local) Addr() addrs.LocalValue
Addr returns the address of the local value declared by the receiver, relative to its containing module.
type ManagedResource ¶
type ManagedResource struct { Connection *Connection Provisioners []*Provisioner CreateBeforeDestroy bool PreventDestroy bool IgnoreChanges []hcl.Traversal IgnoreAllChanges bool CreateBeforeDestroySet bool PreventDestroySet bool }
ManagedResource represents a "resource" block in a module or file.
type ModuleCall ¶
type ModuleCall struct { Name string SourceAddr addrs.ModuleSource SourceAddrRaw string SourceAddrRange hcl.Range SourceSet bool Config hcl.Body Version VersionConstraint Count hcl.Expression ForEach hcl.Expression Providers []PassedProviderConfig DependsOn []hcl.Traversal DeclRange hcl.Range }
ModuleCall represents a "module" block in a module or file.
func (*ModuleCall) EntersNewPackage ¶
func (mc *ModuleCall) EntersNewPackage() bool
EntersNewPackage returns true if this call is to an external module, either directly via a remote source address or indirectly via a registry source address.
Other behaviors in Terraform may treat package crossings as a special situation, because that indicates that the caller and callee can change independently of one another and thus we should disallow using any features where the caller assumes anything about the callee other than its input variables, required provider configurations, and output values.
type Output ¶
type Output struct { Name string Description string Expr hcl.Expression DependsOn []hcl.Traversal Sensitive bool Preconditions []*CheckRule DescriptionSet bool SensitiveSet bool DeclRange hcl.Range }
Output represents an "output" block in a module or file.
func DecodeOutputBlock ¶
func (*Output) Addr ¶
func (o *Output) Addr() addrs.OutputValue
type PassedProviderConfig ¶
type PassedProviderConfig struct { InChild *ProviderConfigRef InParent *ProviderConfigRef }
PassedProviderConfig represents a provider config explicitly passed down to a child module, possibly giving it a new local address in the process.
type Provider ¶
type Provider struct { Name string NameRange hcl.Range Alias string AliasRange *hcl.Range // nil if no alias set Version VersionConstraint Config hcl.Body DeclRange hcl.Range // contains filtered or unexported fields }
Provider represents a "provider" block in a module or file. A provider block is a provider configuration, and there can be zero or more configurations for each actual provider.
func (*Provider) Addr ¶
func (p *Provider) Addr() addrs.LocalProviderConfig
Addr returns the address of the receiving provider configuration, relative to its containing module.
type ProviderConfigRef ¶
type ProviderConfigRef struct { Name string NameRange hcl.Range Alias string AliasRange *hcl.Range // nil if alias not set // contains filtered or unexported fields }
func (*ProviderConfigRef) Addr ¶
func (r *ProviderConfigRef) Addr() addrs.LocalProviderConfig
Addr returns the provider config address corresponding to the receiving config reference.
This is a trivial conversion, essentially just discarding the source location information and keeping just the addressing information.
func (*ProviderConfigRef) String ¶
func (r *ProviderConfigRef) String() string
type Provisioner ¶
type Provisioner struct { Type string Config hcl.Body Connection *Connection When ProvisionerWhen OnFailure ProvisionerOnFailure DeclRange hcl.Range TypeRange hcl.Range }
Provisioner represents a "provisioner" block when used within a "resource" block in a module or file.
type ProvisionerOnFailure ¶
type ProvisionerOnFailure int
ProvisionerOnFailure is an enum for valid values for on_failure options for provisioners.
const ( ProvisionerOnFailureInvalid ProvisionerOnFailure = iota ProvisionerOnFailureContinue ProvisionerOnFailureFail )
type ProvisionerWhen ¶
type ProvisionerWhen int
ProvisionerWhen is an enum for valid values for when to run provisioners.
const ( ProvisionerWhenInvalid ProvisionerWhen = iota ProvisionerWhenCreate ProvisionerWhenDestroy )
type Resource ¶
type Resource struct { Mode addrs.ResourceMode Name string Type string Config hcl.Body Count hcl.Expression ForEach hcl.Expression ProviderConfigRef *ProviderConfigRef Provider addrs.Provider Preconditions []*CheckRule Postconditions []*CheckRule DependsOn []hcl.Traversal TriggersReplacement []hcl.Expression // Managed is populated only for Mode = addrs.ManagedResourceMode, // containing the additional fields that apply to managed resources. // For all other resource modes, this field is nil. Managed *ManagedResource // Container links a scoped resource back up to the resources that contains // it. This field is referenced during static analysis to check whether any // references are also made from within the same container. // // If this is nil, then this resource is essentially public. Container Container DeclRange hcl.Range TypeRange hcl.Range }
Resource represents a "resource" or "data" block in a module or file.
func (*Resource) Addr ¶
Addr returns a resource address for the receiver that is relative to the resource's containing module.
func (*Resource) HasCustomConditions ¶
HasCustomConditions returns true if and only if the resource has at least one author-specified custom condition.
func (*Resource) ProviderConfigAddr ¶
func (r *Resource) ProviderConfigAddr() addrs.LocalProviderConfig
ProviderConfigAddr returns the address for the provider configuration that should be used for this resource. This function returns a default provider config addr if an explicit "provider" argument was not provided.
type Variable ¶
type Variable struct { Name string Description string Default cty.Value // Type is the concrete type of the variable value. Type cty.Type // ConstraintType is used for decoding and type conversions, and may // contain nested ObjectWithOptionalAttr types. ConstraintType cty.Type TypeDefaults *typeexpr.Defaults ParsingMode VariableParsingMode Validations []*CheckRule Sensitive bool DescriptionSet bool SensitiveSet bool // Nullable indicates that null is a valid value for this variable. Setting // Nullable to false means that the module can expect this variable to // never be null. Nullable bool NullableSet bool DeclRange hcl.Range }
Variable represents a "variable" block in a module or file.
func DecodeVariableBlock ¶
func (*Variable) Addr ¶
func (v *Variable) Addr() addrs.InputVariable
type VariableParsingMode ¶
type VariableParsingMode rune
VariableParsingMode defines how values of a particular variable given by text-only mechanisms (command line arguments and environment variables) should be parsed to produce the final value.
const VariableParseHCL VariableParsingMode = 'H'
VariableParseHCL is a variable parsing mode that attempts to parse the given string as an HCL expression and returns the result.
const VariableParseLiteral VariableParsingMode = 'L'
VariableParseLiteral is a variable parsing mode that just takes the given string directly as a cty.String value.
func (VariableParsingMode) Parse ¶
func (m VariableParsingMode) Parse(name, value string) (cty.Value, hcl.Diagnostics)
Parse uses the receiving parsing mode to process the given variable value string, returning the result along with any diagnostics.
A VariableParsingMode does not know the expected type of the corresponding variable, so it's the caller's responsibility to attempt to convert the result to the appropriate type and return to the user any diagnostics that conversion may produce.
The given name is used to create a synthetic filename in case any diagnostics must be generated about the given string value. This should be the name of the root module variable whose value will be populated from the given string.
If the returned diagnostics has errors, the returned value may not be valid.
type VersionConstraint ¶
type VersionConstraint struct { Required version.Constraints DeclRange hcl.Range }
VersionConstraint represents a version constraint on some resource (e.g. Terraform Core, a provider, a module, ...) that carries with it a source range so that a helpful diagnostic can be printed in the event that a particular constraint does not match.
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package configschema contains types for describing the expected structure of a configuration block whose shape is not known until runtime.
|
Package configschema contains types for describing the expected structure of a configuration block whose shape is not known until runtime. |