From dd8b3ab722db555e6237796b77a9b25fede83b7d Mon Sep 17 00:00:00 2001 From: Martin Atkins Date: Tue, 2 Oct 2018 16:56:36 -0700 Subject: [PATCH] core: Reinstate state-based tracking of data resource dependencies This was inadvertently lost in the consoliation of EvalReadDataDiff and EvalReadDataApply into a single EvalReadData. --- terraform/eval_read_data.go | 11 +++++++---- terraform/node_data_refresh.go | 1 + terraform/node_resource_apply_instance.go | 1 + terraform/node_resource_plan_instance.go | 1 + 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/terraform/eval_read_data.go b/terraform/eval_read_data.go index c78e1b52a..773ac452a 100644 --- a/terraform/eval_read_data.go +++ b/terraform/eval_read_data.go @@ -21,6 +21,7 @@ import ( type EvalReadData struct { Addr addrs.ResourceInstance Config *configs.Resource + Dependencies []addrs.Referenceable Provider *providers.Interface ProviderAddr addrs.AbsProviderConfig ProviderSchema **ProviderSchema @@ -155,8 +156,9 @@ func (n *EvalReadData) Eval(ctx EvalContext) (interface{}, error) { } if n.OutputState != nil { state := &states.ResourceInstanceObject{ - Value: change.After, - Status: states.ObjectPlanned, // because the partial value in the plan must be used for now + Value: change.After, + Status: states.ObjectPlanned, // because the partial value in the plan must be used for now + Dependencies: n.Dependencies, } *n.OutputState = state } @@ -239,8 +241,9 @@ func (n *EvalReadData) Eval(ctx EvalContext) (interface{}, error) { }, } state := &states.ResourceInstanceObject{ - Value: change.After, - Status: states.ObjectReady, // because we completed the read from the provider + Value: change.After, + Status: states.ObjectReady, // because we completed the read from the provider + Dependencies: n.Dependencies, } err = ctx.Hook(func(h Hook) (HookAction, error) { diff --git a/terraform/node_data_refresh.go b/terraform/node_data_refresh.go index 057207824..6a008d74b 100644 --- a/terraform/node_data_refresh.go +++ b/terraform/node_data_refresh.go @@ -166,6 +166,7 @@ func (n *NodeRefreshableDataResourceInstance) EvalTree() EvalNode { &EvalReadData{ Addr: addr.Resource, Config: n.Config, + Dependencies: n.StateReferences(), Provider: &provider, ProviderAddr: n.ResolvedProvider, ProviderSchema: &providerSchema, diff --git a/terraform/node_resource_apply_instance.go b/terraform/node_resource_apply_instance.go index 55df4d8b1..4209605e2 100644 --- a/terraform/node_resource_apply_instance.go +++ b/terraform/node_resource_apply_instance.go @@ -156,6 +156,7 @@ func (n *NodeApplyableResourceInstance) evalTreeDataResource(addr addrs.AbsResou &EvalReadData{ Addr: addr.Resource, Config: n.Config, + Dependencies: n.StateReferences(), Planned: &change, // setting this indicates that the result must be complete Provider: &provider, ProviderAddr: n.ResolvedProvider, diff --git a/terraform/node_resource_plan_instance.go b/terraform/node_resource_plan_instance.go index b8b6a3a64..d69472f82 100644 --- a/terraform/node_resource_plan_instance.go +++ b/terraform/node_resource_plan_instance.go @@ -98,6 +98,7 @@ func (n *NodePlannableResourceInstance) evalTreeDataResource(addr addrs.AbsResou &EvalReadData{ Addr: addr.Resource, Config: n.Config, + Dependencies: n.StateReferences(), Provider: &provider, ProviderAddr: n.ResolvedProvider, ProviderSchema: &providerSchema,