From 08139557f85cc24fb50849565b0814e4bcb3f6d2 Mon Sep 17 00:00:00 2001 From: James Bardin Date: Mon, 29 Jan 2018 18:02:59 -0500 Subject: [PATCH] always evaluate outputs too Always evaluate outputs during destroy, just like we did for locals. This breaks existing tests, which we will handle separately. Don't reverse output/local node evaluation order during destroy, as they are both being evaluated. --- terraform/node_output.go | 8 +------- terraform/transform_reference.go | 5 +++++ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/terraform/node_output.go b/terraform/node_output.go index 4fd246a10..191de839c 100644 --- a/terraform/node_output.go +++ b/terraform/node_output.go @@ -83,19 +83,13 @@ func (n *NodeApplyableOutput) EvalTree() EvalNode { }, }, &EvalOpFilter{ - Ops: []walkOperation{walkRefresh, walkPlan, walkApply, walkValidate}, + Ops: []walkOperation{walkRefresh, walkPlan, walkApply, walkValidate, walkDestroy, walkPlanDestroy}, Node: &EvalWriteOutput{ Name: n.Config.Name, Sensitive: n.Config.Sensitive, Value: n.Config.RawConfig, }, }, - &EvalOpFilter{ - Ops: []walkOperation{walkDestroy, walkPlanDestroy}, - Node: &EvalDeleteOutput{ - Name: n.Config.Name, - }, - }, }, } } diff --git a/terraform/transform_reference.go b/terraform/transform_reference.go index 5ee524818..b1c10d00c 100644 --- a/terraform/transform_reference.go +++ b/terraform/transform_reference.go @@ -96,6 +96,11 @@ func (t *DestroyValueReferenceTransformer) Transform(g *Graph) error { // reverse any outgoing edges so that the value is evaluated first. for _, e := range g.EdgesFrom(v) { target := e.Target() + switch target.(type) { + case *NodeApplyableOutput, *NodeLocal: + // don't reverse other values + continue + } log.Printf("[TRACE] output dep: %s", dag.VertexName(target)) g.RemoveEdge(e)