mirror of
https://github.com/opentofu/opentofu.git
synced 2024-12-30 10:47:14 -06:00
ed042ab067
Adding walkValidate to the EvalTree operations, and removing the walkValidate guard from the Interpolater.valueModuleVar allows the values to be interpolated for Validate.
107 lines
2.4 KiB
Go
107 lines
2.4 KiB
Go
package terraform
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/hashicorp/terraform/config"
|
|
"github.com/hashicorp/terraform/dag"
|
|
)
|
|
|
|
// GraphNodeConfigOutput represents an output configured within the
|
|
// configuration.
|
|
type GraphNodeConfigOutput struct {
|
|
Output *config.Output
|
|
}
|
|
|
|
func (n *GraphNodeConfigOutput) Name() string {
|
|
return fmt.Sprintf("output.%s", n.Output.Name)
|
|
}
|
|
|
|
func (n *GraphNodeConfigOutput) ConfigType() GraphNodeConfigType {
|
|
return GraphNodeConfigTypeOutput
|
|
}
|
|
|
|
func (n *GraphNodeConfigOutput) OutputName() string {
|
|
return n.Output.Name
|
|
}
|
|
|
|
func (n *GraphNodeConfigOutput) DependableName() []string {
|
|
return []string{n.Name()}
|
|
}
|
|
|
|
func (n *GraphNodeConfigOutput) DependentOn() []string {
|
|
vars := n.Output.RawConfig.Variables
|
|
result := make([]string, 0, len(vars))
|
|
for _, v := range vars {
|
|
if vn := varNameForVar(v); vn != "" {
|
|
result = append(result, vn)
|
|
}
|
|
}
|
|
|
|
return result
|
|
}
|
|
|
|
// GraphNodeEvalable impl.
|
|
func (n *GraphNodeConfigOutput) EvalTree() EvalNode {
|
|
return &EvalOpFilter{
|
|
Ops: []walkOperation{walkRefresh, walkPlan, walkApply,
|
|
walkDestroy, walkInput, walkValidate},
|
|
Node: &EvalSequence{
|
|
Nodes: []EvalNode{
|
|
&EvalWriteOutput{
|
|
Name: n.Output.Name,
|
|
Sensitive: n.Output.Sensitive,
|
|
Value: n.Output.RawConfig,
|
|
},
|
|
},
|
|
},
|
|
}
|
|
}
|
|
|
|
// GraphNodeProxy impl.
|
|
func (n *GraphNodeConfigOutput) Proxy() bool {
|
|
return true
|
|
}
|
|
|
|
// GraphNodeDestroyEdgeInclude impl.
|
|
func (n *GraphNodeConfigOutput) DestroyEdgeInclude(dag.Vertex) bool {
|
|
return false
|
|
}
|
|
|
|
// GraphNodeFlattenable impl.
|
|
func (n *GraphNodeConfigOutput) Flatten(p []string) (dag.Vertex, error) {
|
|
return &GraphNodeConfigOutputFlat{
|
|
GraphNodeConfigOutput: n,
|
|
PathValue: p,
|
|
}, nil
|
|
}
|
|
|
|
// Same as GraphNodeConfigOutput, but for flattening
|
|
type GraphNodeConfigOutputFlat struct {
|
|
*GraphNodeConfigOutput
|
|
|
|
PathValue []string
|
|
}
|
|
|
|
func (n *GraphNodeConfigOutputFlat) Name() string {
|
|
return fmt.Sprintf(
|
|
"%s.%s", modulePrefixStr(n.PathValue), n.GraphNodeConfigOutput.Name())
|
|
}
|
|
|
|
func (n *GraphNodeConfigOutputFlat) Path() []string {
|
|
return n.PathValue
|
|
}
|
|
|
|
func (n *GraphNodeConfigOutputFlat) DependableName() []string {
|
|
return modulePrefixList(
|
|
n.GraphNodeConfigOutput.DependableName(),
|
|
modulePrefixStr(n.PathValue))
|
|
}
|
|
|
|
func (n *GraphNodeConfigOutputFlat) DependentOn() []string {
|
|
prefix := modulePrefixStr(n.PathValue)
|
|
return modulePrefixList(
|
|
n.GraphNodeConfigOutput.DependentOn(),
|
|
prefix)
|
|
}
|