From 40ff381887085dd58457c8deea9f3e235d968fbc Mon Sep 17 00:00:00 2001 From: CJ Horton Date: Mon, 22 May 2023 22:19:42 -0700 Subject: [PATCH] plumb import changes to and from binary plan --- internal/plans/planfile/tfplan.go | 15 ++++++++++++++ internal/plans/planfile/tfplan_test.go | 27 ++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/internal/plans/planfile/tfplan.go b/internal/plans/planfile/tfplan.go index f16afe800a..d7f5cb0ff3 100644 --- a/internal/plans/planfile/tfplan.go +++ b/internal/plans/planfile/tfplan.go @@ -427,6 +427,13 @@ func changeFromTfplan(rawChange *planproto.Change) (*plans.ChangeSrc, error) { } } + if rawChange.Importing != nil { + ret.Importing = &plans.ImportingSrc{ + ID: rawChange.Importing.Id, + } + } + ret.GeneratedConfig = rawChange.GeneratedConfig + sensitive := cty.NewValueMarks(marks.Sensitive) beforeValMarks, err := pathValueMarksFromTfplan(rawChange.BeforeSensitivePaths, sensitive) if err != nil { @@ -759,6 +766,14 @@ func changeToTfplan(change *plans.ChangeSrc) (*planproto.Change, error) { ret.BeforeSensitivePaths = beforeSensitivePaths ret.AfterSensitivePaths = afterSensitivePaths + if change.Importing != nil { + ret.Importing = &planproto.Importing{ + Id: change.Importing.ID, + } + + } + ret.GeneratedConfig = change.GeneratedConfig + switch change.Action { case plans.NoOp: ret.Action = planproto.Action_NOOP diff --git a/internal/plans/planfile/tfplan_test.go b/internal/plans/planfile/tfplan_test.go index 3e58a88e9d..2374fbe914 100644 --- a/internal/plans/planfile/tfplan_test.go +++ b/internal/plans/planfile/tfplan_test.go @@ -122,6 +122,33 @@ func TestTFPlanRoundTrip(t *testing.T) { }), objTy), }, }, + { + Addr: addrs.Resource{ + Mode: addrs.ManagedResourceMode, + Type: "test_thing", + Name: "importing", + }.Instance(addrs.IntKey(1)).Absolute(addrs.RootModuleInstance), + PrevRunAddr: addrs.Resource{ + Mode: addrs.ManagedResourceMode, + Type: "test_thing", + Name: "importing", + }.Instance(addrs.IntKey(1)).Absolute(addrs.RootModuleInstance), + ProviderAddr: addrs.AbsProviderConfig{ + Provider: addrs.NewDefaultProvider("test"), + Module: addrs.RootModule, + }, + ChangeSrc: plans.ChangeSrc{ + Action: plans.NoOp, + Before: mustNewDynamicValue(cty.ObjectVal(map[string]cty.Value{ + "id": cty.StringVal("testing"), + }), objTy), + After: mustNewDynamicValue(cty.ObjectVal(map[string]cty.Value{ + "id": cty.StringVal("testing"), + }), objTy), + Importing: &plans.ImportingSrc{ID: "testing"}, + GeneratedConfig: "resource \\\"test_thing\\\" \\\"importing\\\" {}", + }, + }, }, }, DriftedResources: []*plans.ResourceInstanceChangeSrc{