diff --git a/internal/terraform/node_resource_abstract_instance.go b/internal/terraform/node_resource_abstract_instance.go index 3aee2791ef..b0a6eddbab 100644 --- a/internal/terraform/node_resource_abstract_instance.go +++ b/internal/terraform/node_resource_abstract_instance.go @@ -454,13 +454,9 @@ func (n *NodeAbstractResourceInstance) planDestroy(ctx EvalContext, currentState return plan, deferred, diags } - if resp.Deferred != nil { - return plan, deferred, diags - } - // Check that the provider returned a null value here, since that is the // only valid value for a destroy plan. - if !resp.PlannedState.IsNull() { + if !resp.PlannedState.IsNull() && deferred == nil { diags = diags.Append(tfdiags.Sourceless( tfdiags.Error, "Provider produced invalid plan", @@ -956,7 +952,7 @@ func (n *NodeAbstractResourceInstance) plan( Change: plans.Change{ Action: action, Before: priorVal, - After: origConfigVal, + After: unmarkedConfigVal, }, }) return nil, nil, keyData, diags diff --git a/internal/terraform/node_resource_destroy_deposed.go b/internal/terraform/node_resource_destroy_deposed.go index c844c5ab9a..07b9bb5cb2 100644 --- a/internal/terraform/node_resource_destroy_deposed.go +++ b/internal/terraform/node_resource_destroy_deposed.go @@ -174,11 +174,8 @@ func (n *NodePlanDeposedResourceInstanceObject) Execute(ctx EvalContext, op walk } if deferred != nil { ctx.Deferrals().ReportResourceInstanceDeferred(n.Addr, deferred.Reason, &plans.ResourceInstanceChange{ - Addr: n.Addr, - Change: plans.Change{ - Action: plans.Delete, - Before: state.Value, - }, + Addr: n.Addr, + Change: change.Change, }) return diags } @@ -295,11 +292,8 @@ func (n *NodeDestroyDeposedResourceInstanceObject) Execute(ctx EvalContext, op w if deferred != nil { ctx.Deferrals().ReportResourceInstanceDeferred(n.Addr, deferred.Reason, &plans.ResourceInstanceChange{ - Addr: n.Addr, - Change: plans.Change{ - Action: plans.Delete, - Before: state.Value, - }, + Addr: n.Addr, + Change: change.Change, }) return diags } diff --git a/internal/terraform/node_resource_plan_destroy.go b/internal/terraform/node_resource_plan_destroy.go index 98734a2e76..f5f5c89dc7 100644 --- a/internal/terraform/node_resource_plan_destroy.go +++ b/internal/terraform/node_resource_plan_destroy.go @@ -98,11 +98,8 @@ func (n *NodePlanDestroyableResourceInstance) managedResourceExecute(ctx EvalCon if deferred != nil { ctx.Deferrals().ReportResourceInstanceDeferred(n.Addr, deferred.Reason, &plans.ResourceInstanceChange{ - Addr: n.Addr, - Change: plans.Change{ - Action: plans.Delete, - Before: state.Value, - }, + Addr: n.Addr, + Change: change.Change, }) return diags } diff --git a/internal/terraform/node_resource_plan_orphan.go b/internal/terraform/node_resource_plan_orphan.go index ba028a086f..a3c7092f3b 100644 --- a/internal/terraform/node_resource_plan_orphan.go +++ b/internal/terraform/node_resource_plan_orphan.go @@ -175,11 +175,8 @@ func (n *NodePlannableResourceInstanceOrphan) managedResourceExecute(ctx EvalCon if deferred != nil { ctx.Deferrals().ReportResourceInstanceDeferred(n.Addr, deferred.Reason, &plans.ResourceInstanceChange{ - Addr: n.Addr, - Change: plans.Change{ - Action: plans.Delete, - Before: oldState.Value, - }, + Addr: n.Addr, + Change: change.Change, }) return diags }