states.Resource needs to record its module too
The ModuleInstance is known while building the state resource, but it's not recorded. Since a resource may be retrieved via a ConfigResource address, we need to know from which module instance it was loaded.
This commit is contained in:
parent
3729e6a705
commit
ea51b790bc
|
@ -58,7 +58,7 @@ func (ms *Module) SetResourceMeta(addr addrs.Resource, eachMode EachMode, provid
|
|||
rs := ms.Resource(addr)
|
||||
if rs == nil {
|
||||
rs = &Resource{
|
||||
Addr: addr,
|
||||
Addr: addr.Absolute(ms.Addr),
|
||||
Instances: map[addrs.InstanceKey]*ResourceInstance{},
|
||||
}
|
||||
ms.Resources[addr.String()] = rs
|
||||
|
@ -295,7 +295,7 @@ func (ms *Module) RemoveLocalValue(name string) {
|
|||
func (ms *Module) PruneResourceHusks() {
|
||||
for _, rs := range ms.Resources {
|
||||
if len(rs.Instances) == 0 {
|
||||
ms.RemoveResource(rs.Addr)
|
||||
ms.RemoveResource(rs.Addr.Resource)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,9 +10,9 @@ import (
|
|||
|
||||
// Resource represents the state of a resource.
|
||||
type Resource struct {
|
||||
// Addr is the module-relative address for the resource this state object
|
||||
// Addr is the absolute address for the resource this state object
|
||||
// belongs to.
|
||||
Addr addrs.Resource
|
||||
Addr addrs.AbsResource
|
||||
|
||||
// EachMode is the multi-instance mode currently in use for this resource,
|
||||
// or NoEach if this is a single-instance resource. This dictates what
|
||||
|
|
|
@ -91,7 +91,7 @@ func (m *Module) testString() string {
|
|||
addrsOrder := make([]addrs.AbsResourceInstance, 0, len(m.Resources))
|
||||
for _, rs := range m.Resources {
|
||||
for ik := range rs.Instances {
|
||||
addrsOrder = append(addrsOrder, rs.Addr.Instance(ik).Absolute(addrs.RootModuleInstance))
|
||||
addrsOrder = append(addrsOrder, rs.Addr.Instance(ik))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -67,7 +67,8 @@ func TestState(t *testing.T) {
|
|||
Mode: addrs.ManagedResourceMode,
|
||||
Type: "test_thing",
|
||||
Name: "baz",
|
||||
},
|
||||
}.Absolute(addrs.RootModuleInstance),
|
||||
|
||||
EachMode: EachList,
|
||||
Instances: map[addrs.InstanceKey]*ResourceInstance{
|
||||
addrs.IntKey(0): {
|
||||
|
|
|
@ -371,7 +371,7 @@ func writeStateV4(file *File, w io.Writer) tfdiags.Diagnostics {
|
|||
for _, ms := range file.State.Modules {
|
||||
moduleAddr := ms.Addr
|
||||
for _, rs := range ms.Resources {
|
||||
resourceAddr := rs.Addr
|
||||
resourceAddr := rs.Addr.Resource
|
||||
|
||||
var mode string
|
||||
switch resourceAddr.Mode {
|
||||
|
|
|
@ -472,7 +472,7 @@ func (s *SyncState) RemovePlannedResourceInstanceObjects() {
|
|||
moduleAddr := ms.Addr
|
||||
|
||||
for _, rs := range ms.Resources {
|
||||
resAddr := rs.Addr
|
||||
resAddr := rs.Addr.Resource
|
||||
|
||||
for ik, is := range rs.Instances {
|
||||
instAddr := resAddr.Instance(ik)
|
||||
|
|
Loading…
Reference in New Issue