diff --git a/internal/addrs/module_call.go b/internal/addrs/module_call.go index d80b35a589..4e8ce34f2b 100644 --- a/internal/addrs/module_call.go +++ b/internal/addrs/module_call.go @@ -70,6 +70,14 @@ func (c AbsModuleCall) Instance(key InstanceKey) ModuleInstance { return ret } +type absModuleCallInstanceKey string + +func (c AbsModuleCall) UniqueKey() UniqueKey { + return absModuleCallInstanceKey(c.String()) +} + +func (mk absModuleCallInstanceKey) uniqueKeySigil() {} + // ModuleCallInstance is the address of one instance of a module created from // a module call, which might create multiple instances using "count" or // "for_each" arguments. diff --git a/internal/addrs/moveable.go b/internal/addrs/moveable.go index fd93b58dca..a85fe72c1c 100644 --- a/internal/addrs/moveable.go +++ b/internal/addrs/moveable.go @@ -11,6 +11,7 @@ package addrs // the current module where the address is defined. The type MoveEndpoint type AbsMoveable interface { absMoveableSigil() + UniqueKeyer String() string } diff --git a/internal/addrs/resource.go b/internal/addrs/resource.go index a7b7ee308d..a26f941c94 100644 --- a/internal/addrs/resource.go +++ b/internal/addrs/resource.go @@ -194,6 +194,14 @@ func (r AbsResource) absMoveableSigil() { // AbsResource is moveable } +type absResourceKey string + +func (r AbsResource) UniqueKey() UniqueKey { + return absResourceInstanceKey(r.String()) +} + +func (rk absResourceKey) uniqueKeySigil() {} + // AbsResourceInstance is an absolute address for a resource instance under a // given module path. type AbsResourceInstance struct {