From b9ddec33e94c371bff79106437bf0cc7af52c11e Mon Sep 17 00:00:00 2001 From: James Bardin Date: Thu, 9 Apr 2020 15:40:28 -0400 Subject: [PATCH] de-specify module output references Like resource references, we need to make instance references less specific when they aren't expanded yet during plan. --- addrs/module_call.go | 9 +++++++++ terraform/transform_reference.go | 5 +++++ 2 files changed, 14 insertions(+) diff --git a/addrs/module_call.go b/addrs/module_call.go index c496cdc46..1031d792a 100644 --- a/addrs/module_call.go +++ b/addrs/module_call.go @@ -80,6 +80,15 @@ type AbsModuleCallOutput struct { Name string } +// ModuelCallOutput returns the referenceable ModuleCallOutput for this +// particular instance. +func (co AbsModuleCallOutput) ModuleCallOutput() ModuleCallOutput { + return ModuleCallOutput{ + Call: co.Call.Call, + Name: co.Name, + } +} + func (co AbsModuleCallOutput) String() string { return fmt.Sprintf("%s.%s", co.Call.String(), co.Name) } diff --git a/terraform/transform_reference.go b/terraform/transform_reference.go index 74df6628a..ef64eb2c1 100644 --- a/terraform/transform_reference.go +++ b/terraform/transform_reference.go @@ -262,6 +262,11 @@ func (m *ReferenceMap) References(v dag.Vertex) []dag.Vertex { subject = ri.ContainingResource() case addrs.ResourceInstancePhase: subject = ri.ContainingResource() + case addrs.AbsModuleCallOutput: + subject = ri.ModuleCallOutput() + default: + log.Printf("[WARN] ReferenceTransformer: reference not found: %q", subject) + continue } key = m.referenceMapKey(v, subject) }