mirror of
https://github.com/hashicorp/terraform.git
synced 2026-05-28 04:03:27 -04:00
addrs: PartialExpandedResource module address accessors
This is kinda awkward because this address type represents both resources whose own instances are not expanded yet and resources belonging to whole modules whose instance keys haven't been expanded yet, and those two cases have different address types. However, in return for this awkward API only for the rare case where we need to isolate the module instance address, the rest of the system gets to not worry very much about this distinction: it can share most code between the two cases, since they both need similar evaluation treatment anyway.
This commit is contained in:
parent
67d8a5137b
commit
8e02f5dd21
1 changed files with 28 additions and 0 deletions
|
|
@ -323,6 +323,34 @@ func (per PartialExpandedResource) KnownModuleInstancePrefix() ModuleInstance {
|
|||
return per.module.KnownPrefix()
|
||||
}
|
||||
|
||||
// ModuleInstance returns the fully-qualified [ModuleInstance] that this
|
||||
// partial-expanded resource belongs to, but only if its module instance
|
||||
// address is fully known.
|
||||
//
|
||||
// The second return value is false if the module instance address is not
|
||||
// fully expanded, in which case the first return value is invalid. Use
|
||||
// [PartialExpandedResource.PartialExpandedModule] instead in that case.
|
||||
func (per PartialExpandedResource) ModuleInstance() (ModuleInstance, bool) {
|
||||
if len(per.module.unexpandedSuffix) != 0 {
|
||||
return nil, false
|
||||
}
|
||||
return per.module.expandedPrefix, true
|
||||
}
|
||||
|
||||
// PartialExpandedModule returns a [PartialExpandedModule] address describing
|
||||
// the partially-unknown module instance address that the resource belongs to,
|
||||
// but only if the module instance address is not fully known.
|
||||
//
|
||||
// The second return value is false if the module instance address is actually
|
||||
// fully expanded, in which case the first return value is invalid. Use
|
||||
// [PartialExpandedResource.ModuleInstance] instead in that case.
|
||||
func (per PartialExpandedResource) PartialExpandedModule() (PartialExpandedModule, bool) {
|
||||
if len(per.module.unexpandedSuffix) == 0 {
|
||||
return PartialExpandedModule{}, false
|
||||
}
|
||||
return per.module, true
|
||||
}
|
||||
|
||||
// String returns a string representation of the pattern which uses the special
|
||||
// placeholder "[*]" to represent positions where instance keys are not yet
|
||||
// known.
|
||||
|
|
|
|||
Loading…
Reference in a new issue