diff --git a/internal/terraform/context_plan2_test.go b/internal/terraform/context_plan2_test.go index 7706b7604f..e6811f7e8e 100644 --- a/internal/terraform/context_plan2_test.go +++ b/internal/terraform/context_plan2_test.go @@ -4356,7 +4356,7 @@ import { t.Errorf("wrong action reason\ngot: %s\nwant: %s", got, want) } if instPlan.Importing != nil { - t.Errorf("expected non-import change, got import change %+v", instPlan.Importing) + t.Errorf("expected non-import change, got import change %#v", instPlan.Importing) } }) } diff --git a/internal/terraform/node_resource_plan.go b/internal/terraform/node_resource_plan.go index 3e9cd1fd13..960195c508 100644 --- a/internal/terraform/node_resource_plan.go +++ b/internal/terraform/node_resource_plan.go @@ -5,6 +5,7 @@ package terraform import ( "fmt" + "log" "strings" "github.com/hashicorp/hcl/v2" @@ -384,6 +385,15 @@ func (n nodeExpandPlannableResource) expandResourceImports(ctx EvalContext, addr } } + // filter out any import which already exist in state + state := ctx.State() + for _, el := range imports.Elements() { + if state.ResourceInstance(el.Key) != nil { + log.Printf("[DEBUG] import address %s already in state", el.Key) + imports.Remove(el.Key) + } + } + return imports, diags }