add DependsOn method to moduleExpandModule

We'll need this again for getting the transitive depends_on references
from parent module calls. This is needed to inform us how to handle data
sources during refresh and plan.
This commit is contained in:
James Bardin 2020-06-03 19:45:59 -04:00
parent 535267e986
commit a03c86f612
1 changed files with 23 additions and 12 deletions

View File

@ -47,18 +47,7 @@ func (n *nodeExpandModule) References() []*addrs.Reference {
return nil return nil
} }
for _, traversal := range n.ModuleCall.DependsOn { refs = append(refs, n.DependsOn()...)
ref, diags := addrs.ParseRef(traversal)
if diags.HasErrors() {
// We ignore this here, because this isn't a suitable place to return
// errors. This situation should be caught and rejected during
// validation.
log.Printf("[ERROR] Can't parse %#v from depends_on as reference: %s", traversal, diags.Err())
continue
}
refs = append(refs, ref)
}
// Expansion only uses the count and for_each expressions, so this // Expansion only uses the count and for_each expressions, so this
// particular graph node only refers to those. // particular graph node only refers to those.
@ -82,6 +71,28 @@ func (n *nodeExpandModule) References() []*addrs.Reference {
return appendResourceDestroyReferences(refs) return appendResourceDestroyReferences(refs)
} }
func (n *nodeExpandModule) DependsOn() []*addrs.Reference {
if n.ModuleCall == nil {
return nil
}
var refs []*addrs.Reference
for _, traversal := range n.ModuleCall.DependsOn {
ref, diags := addrs.ParseRef(traversal)
if diags.HasErrors() {
// We ignore this here, because this isn't a suitable place to return
// errors. This situation should be caught and rejected during
// validation.
log.Printf("[ERROR] Can't parse %#v from depends_on as reference: %s", traversal, diags.Err())
continue
}
refs = append(refs, ref)
}
return refs
}
// GraphNodeReferenceOutside // GraphNodeReferenceOutside
func (n *nodeExpandModule) ReferenceOutside() (selfPath, referencePath addrs.Module) { func (n *nodeExpandModule) ReferenceOutside() (selfPath, referencePath addrs.Module) {
return n.Addr, n.Addr.Parent() return n.Addr, n.Addr.Parent()