evaluate vars and outputs during import

Outputs were not being evaluated during import, because it was not added
to the walk filter.

Remove any unnecessary walk filters from all the Execute nodes.
This commit is contained in:
James Bardin 2020-10-06 17:14:53 -04:00
parent bad0adb996
commit a32028aeed
6 changed files with 191 additions and 203 deletions

View File

@ -38,7 +38,7 @@ func TestContextEval(t *testing.T) {
}, },
{ {
`module.child.result`, `module.child.result`,
cty.UnknownVal(cty.Number), cty.NumberIntVal(6),
false, false,
}, },
} }

View File

@ -153,13 +153,13 @@ func (n *nodeModuleVariable) Execute(ctx EvalContext, op walkOperation) error {
var err error var err error
switch op { switch op {
case walkPlan, walkApply, walkDestroy: case walkValidate:
vals, err = n.EvalModuleCallArgument(ctx, false) vals, err = n.EvalModuleCallArgument(ctx, true)
if err != nil { if err != nil {
return err return err
} }
case walkValidate: default:
vals, err = n.EvalModuleCallArgument(ctx, true) vals, err = n.EvalModuleCallArgument(ctx, false)
if err != nil { if err != nil {
return err return err
} }

View File

@ -199,9 +199,6 @@ func (n *NodeApplyableOutput) References() []*addrs.Reference {
// GraphNodeExecutable // GraphNodeExecutable
func (n *NodeApplyableOutput) Execute(ctx EvalContext, op walkOperation) error { func (n *NodeApplyableOutput) Execute(ctx EvalContext, op walkOperation) error {
switch op {
// Everything except walkImport
case walkEval, walkPlan, walkApply, walkValidate, walkDestroy, walkPlanDestroy:
// This has to run before we have a state lock, since evaluation also // This has to run before we have a state lock, since evaluation also
// reads the state // reads the state
val, diags := ctx.EvaluateExpr(n.Config.Expr, cty.DynamicPseudoType, nil) val, diags := ctx.EvaluateExpr(n.Config.Expr, cty.DynamicPseudoType, nil)
@ -251,9 +248,6 @@ func (n *NodeApplyableOutput) Execute(ctx EvalContext, op walkOperation) error {
} }
return nil return nil
default:
return nil
}
} }
// dag.GraphNodeDotter impl. // dag.GraphNodeDotter impl.

View File

@ -136,8 +136,6 @@ func (n *NodeDestroyResourceInstance) Execute(ctx EvalContext, op walkOperation)
var state *states.ResourceInstanceObject var state *states.ResourceInstanceObject
var provisionerErr error var provisionerErr error
switch op {
case walkApply, walkDestroy:
provider, providerSchema, err := GetProvider(ctx, n.ResolvedProvider) provider, providerSchema, err := GetProvider(ctx, n.ResolvedProvider)
if err != nil { if err != nil {
return err return err
@ -263,7 +261,6 @@ func (n *NodeDestroyResourceInstance) Execute(ctx EvalContext, op walkOperation)
if err != nil { if err != nil {
return err return err
} }
}
return nil return nil
} }

View File

@ -76,9 +76,6 @@ func (n *NodePlanDeposedResourceInstanceObject) Execute(ctx EvalContext, op walk
var change *plans.ResourceInstanceChange var change *plans.ResourceInstanceChange
var state *states.ResourceInstanceObject var state *states.ResourceInstanceObject
switch op {
case walkPlan, walkPlanDestroy:
readStateDeposed := &EvalReadStateDeposed{ readStateDeposed := &EvalReadStateDeposed{
Addr: addr.Resource, Addr: addr.Resource,
Output: &state, Output: &state,
@ -113,7 +110,7 @@ func (n *NodePlanDeposedResourceInstanceObject) Execute(ctx EvalContext, op walk
if err != nil { if err != nil {
return err return err
} }
}
return nil return nil
} }

View File

@ -301,7 +301,7 @@ func (m ReferenceMap) References(v dag.Vertex) []dag.Vertex {
case addrs.ModuleCallInstance: case addrs.ModuleCallInstance:
subject = ri.Call subject = ri.Call
default: default:
log.Printf("[WARN] ReferenceTransformer: reference not found: %q", subject) log.Printf("[INFO] ReferenceTransformer: reference not found: %q", subject)
continue continue
} }
key = m.referenceMapKey(v, subject) key = m.referenceMapKey(v, subject)