From 42ebb3855790b280e83d14dba8771b49a9807778 Mon Sep 17 00:00:00 2001 From: Steph Date: Thu, 13 Nov 2025 15:22:35 +0100 Subject: [PATCH 1/4] marshal state and set in the proto req for generate resource config --- internal/plugin/grpc_provider.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/internal/plugin/grpc_provider.go b/internal/plugin/grpc_provider.go index 9874b1abdfbc..76454de22a9d 100644 --- a/internal/plugin/grpc_provider.go +++ b/internal/plugin/grpc_provider.go @@ -940,9 +940,15 @@ func (p *GRPCProvider) GenerateResourceConfig(r providers.GenerateResourceConfig return resp } + mp, err := msgpack.Marshal(r.State, resSchema.Body.ImpliedType()) + if err != nil { + resp.Diagnostics = resp.Diagnostics.Append(err) + return resp + } + protoReq := &proto.GenerateResourceConfig_Request{ TypeName: r.TypeName, - State: nil, + State: &proto.DynamicValue{Msgpack: mp}, } protoResp, err := p.client.GenerateResourceConfig(p.ctx, protoReq) From 8932bbe5c2a5520853454a31e4ad51e7f5507486 Mon Sep 17 00:00:00 2001 From: Steph Date: Thu, 13 Nov 2025 16:00:40 +0100 Subject: [PATCH 2/4] set state in the proto req for generate resource config in plugin6 --- internal/plugin6/grpc_provider.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/internal/plugin6/grpc_provider.go b/internal/plugin6/grpc_provider.go index b01aca3f9953..9c263d7ae02f 100644 --- a/internal/plugin6/grpc_provider.go +++ b/internal/plugin6/grpc_provider.go @@ -934,9 +934,15 @@ func (p *GRPCProvider) GenerateResourceConfig(r providers.GenerateResourceConfig return resp } + mp, err := msgpack.Marshal(r.State, resSchema.Body.ImpliedType()) + if err != nil { + resp.Diagnostics = resp.Diagnostics.Append(err) + return resp + } + protoReq := &proto6.GenerateResourceConfig_Request{ TypeName: r.TypeName, - State: nil, + State: &proto6.DynamicValue{Msgpack: mp}, } protoResp, err := p.client.GenerateResourceConfig(p.ctx, protoReq) From 19c24298e1d1139659faad1d70eb91eada01e372 Mon Sep 17 00:00:00 2001 From: Steph Date: Fri, 14 Nov 2025 08:42:15 +0100 Subject: [PATCH 3/4] add GRPC tests for GenerateResourceConfig --- internal/plugin/grpc_provider_test.go | 33 ++++++++++++++++++++++++++ internal/plugin6/grpc_provider_test.go | 33 ++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) diff --git a/internal/plugin/grpc_provider_test.go b/internal/plugin/grpc_provider_test.go index 34017d724406..757cc9f49a48 100644 --- a/internal/plugin/grpc_provider_test.go +++ b/internal/plugin/grpc_provider_test.go @@ -2102,3 +2102,36 @@ func TestGRPCProvider_ListResource_Limit(t *testing.T) { t.Fatalf("Expected 2 events, got %d", len(results)) } } + +func TestGRPCProvider_GenerateResourceConfig(t *testing.T) { + client := mockProviderClient(t) + p := &GRPCProvider{ + client: client, + } + client.EXPECT().GenerateResourceConfig( + gomock.Any(), + gomock.Cond[any](func(x any) bool { + req := x.(*proto.GenerateResourceConfig_Request) + if req.TypeName != "resource" { + return false + } + if req.State == nil { + t.Log("GenerateResourceConfig state is nil") + return false + } + return true + }), + ).Return(&proto.GenerateResourceConfig_Response{ + Config: &proto.DynamicValue{ + Msgpack: []byte("\x81\xa4attr\xa3bar"), + }, + }, nil) + resp := p.GenerateResourceConfig(providers.GenerateResourceConfigRequest{ + TypeName: "resource", + State: cty.ObjectVal(map[string]cty.Value{ + "computed": cty.StringVal("computed"), + "attr": cty.StringVal("foo"), + }), + }) + checkDiags(t, resp.Diagnostics) +} diff --git a/internal/plugin6/grpc_provider_test.go b/internal/plugin6/grpc_provider_test.go index 44fb722dcff3..6c9e1798c348 100644 --- a/internal/plugin6/grpc_provider_test.go +++ b/internal/plugin6/grpc_provider_test.go @@ -2556,3 +2556,36 @@ func TestGRPCProvider_DeleteState(t *testing.T) { } }) } + +func TestGRPCProvider_GenerateResourceConfig(t *testing.T) { + client := mockProviderClient(t) + p := &GRPCProvider{ + client: client, + } + client.EXPECT().GenerateResourceConfig( + gomock.Any(), + gomock.Cond[any](func(x any) bool { + req := x.(*proto.GenerateResourceConfig_Request) + if req.TypeName != "resource" { + return false + } + if req.State == nil { + t.Log("GenerateResourceConfig state is nil") + return false + } + return true + }), + ).Return(&proto.GenerateResourceConfig_Response{ + Config: &proto.DynamicValue{ + Msgpack: []byte("\x81\xa4attr\xa3bar"), + }, + }, nil) + resp := p.GenerateResourceConfig(providers.GenerateResourceConfigRequest{ + TypeName: "resource", + State: cty.ObjectVal(map[string]cty.Value{ + "computed": cty.StringVal("computed"), + "attr": cty.StringVal("foo"), + }), + }) + checkDiags(t, resp.Diagnostics) +} From 47ecbab008da84d4ec213c71faae1198bb5bdc35 Mon Sep 17 00:00:00 2001 From: Steph Date: Fri, 14 Nov 2025 09:06:30 +0100 Subject: [PATCH 4/4] changelog --- .changes/v1.14/BUG FIXES-20251114-090620.yaml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changes/v1.14/BUG FIXES-20251114-090620.yaml diff --git a/.changes/v1.14/BUG FIXES-20251114-090620.yaml b/.changes/v1.14/BUG FIXES-20251114-090620.yaml new file mode 100644 index 000000000000..75a6129f6840 --- /dev/null +++ b/.changes/v1.14/BUG FIXES-20251114-090620.yaml @@ -0,0 +1,5 @@ +kind: BUG FIXES +body: Set state information in the proto request for the `GenerateResourceConfig` RPC +time: 2025-11-14T09:06:20.057751+01:00 +custom: + Issue: "37896"