diff --git a/internal/terraform/node_resource_abstract_instance.go b/internal/terraform/node_resource_abstract_instance.go index 45469e5a21..c3c28e2c68 100644 --- a/internal/terraform/node_resource_abstract_instance.go +++ b/internal/terraform/node_resource_abstract_instance.go @@ -399,7 +399,6 @@ func (n *NodeAbstractResourceInstance) planDestroy(ctx EvalContext, currentState Before: cty.NullVal(cty.DynamicPseudoType), After: cty.NullVal(cty.DynamicPseudoType), }, - Private: currentState.Private, ProviderAddr: n.ResolvedProvider, } return noop, nil diff --git a/internal/terraform/transform_orphan_resource.go b/internal/terraform/transform_orphan_resource.go index b52334ea25..af8302c492 100644 --- a/internal/terraform/transform_orphan_resource.go +++ b/internal/terraform/transform_orphan_resource.go @@ -79,7 +79,12 @@ func (t *OrphanResourceInstanceTransformer) transform(g *Graph, ms *states.Modul } } - for key := range rs.Instances { + for key, inst := range rs.Instances { + // deposed instances will be taken care of separately + if inst.Current == nil { + continue + } + addr := rs.Addr.Instance(key) abstract := NewNodeAbstractResourceInstance(addr) var node dag.Vertex = abstract diff --git a/internal/terraform/transform_orphan_resource_test.go b/internal/terraform/transform_orphan_resource_test.go index 2f638276ee..f44f081525 100644 --- a/internal/terraform/transform_orphan_resource_test.go +++ b/internal/terraform/transform_orphan_resource_test.go @@ -50,6 +50,26 @@ func TestOrphanResourceInstanceTransformer(t *testing.T) { Module: addrs.RootModule, }, ) + + // A deposed orphan should not be handled by this transformer + s.SetResourceInstanceDeposed( + addrs.Resource{ + Mode: addrs.ManagedResourceMode, + Type: "test_instance", + Name: "deposed", + }.Instance(addrs.NoKey).Absolute(addrs.RootModuleInstance), + states.NewDeposedKey(), + &states.ResourceInstanceObjectSrc{ + AttrsFlat: map[string]string{ + "id": "foo", + }, + Status: states.ObjectReady, + }, + addrs.AbsProviderConfig{ + Provider: addrs.NewDefaultProvider("test"), + Module: addrs.RootModule, + }, + ) }) g := Graph{Path: addrs.RootModuleInstance}