Skip to content

Commit aef80ba

Browse files
committed
move protov5 information into the resource metadataresponse
1 parent 13798fb commit aef80ba

File tree

11 files changed

+25
-27
lines changed

11 files changed

+25
-27
lines changed

internal/fwserver/server_listresources.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"github.com/hashicorp/terraform-plugin-framework/internal/logging"
1313
"github.com/hashicorp/terraform-plugin-framework/list"
1414
"github.com/hashicorp/terraform-plugin-framework/provider"
15+
"github.com/hashicorp/terraform-plugin-framework/resource"
1516
)
1617

1718
func (s *Server) ListResourceType(ctx context.Context, typeName string) (list.ListResource, diag.Diagnostics) {
@@ -56,10 +57,10 @@ func (s *Server) ListResourceFuncs(ctx context.Context) (map[string]func() list.
5657
for _, listResourceFunc := range listResourceFuncSlice {
5758
listResource := listResourceFunc()
5859

59-
metadataReq := list.MetadataRequest{
60+
metadataReq := resource.MetadataRequest{
6061
ProviderTypeName: providerTypeName,
6162
}
62-
metadataResp := list.MetadataResponse{}
63+
metadataResp := resource.MetadataResponse{}
6364
listResource.Metadata(ctx, metadataReq, &metadataResp)
6465

6566
typeName := metadataResp.TypeName
@@ -86,8 +87,6 @@ func (s *Server) ListResourceFuncs(ctx context.Context) (map[string]func() list.
8687

8788
resourceFuncs, _ := s.ResourceFuncs(ctx)
8889
if _, ok := resourceFuncs[typeName]; !ok {
89-
90-
// With the ProtoV5 info in Metadata we can keep this validation
9190
// TODO update error message
9291
if metadataResp.ProtoV5Schema == nil || metadataResp.ProtoV5IdentitySchema == nil {
9392
s.listResourceFuncsDiags.AddError(

internal/proto5server/server_getmetadata_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -225,14 +225,14 @@ func TestServerGetMetadata(t *testing.T) {
225225
return []func() list.ListResource{
226226
func() list.ListResource {
227227
return &testprovider.ListResource{
228-
MetadataMethod: func(_ context.Context, _ list.MetadataRequest, resp *list.MetadataResponse) {
228+
MetadataMethod: func(_ context.Context, _ resource.MetadataRequest, resp *resource.MetadataResponse) {
229229
resp.TypeName = "test_list_resource1"
230230
},
231231
}
232232
},
233233
func() list.ListResource {
234234
return &testprovider.ListResource{
235-
MetadataMethod: func(_ context.Context, _ list.MetadataRequest, resp *list.MetadataResponse) {
235+
MetadataMethod: func(_ context.Context, _ resource.MetadataRequest, resp *resource.MetadataResponse) {
236236
resp.TypeName = "test_list_resource2"
237237
},
238238
}

internal/proto5server/server_getproviderschema_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -381,7 +381,7 @@ func TestServerGetProviderSchema(t *testing.T) {
381381
},
382382
}
383383
},
384-
MetadataMethod: func(_ context.Context, _ list.MetadataRequest, resp *list.MetadataResponse) {
384+
MetadataMethod: func(_ context.Context, _ resource.MetadataRequest, resp *resource.MetadataResponse) {
385385
resp.TypeName = "test_list_resource1"
386386
},
387387
}
@@ -397,7 +397,7 @@ func TestServerGetProviderSchema(t *testing.T) {
397397
},
398398
}
399399
},
400-
MetadataMethod: func(_ context.Context, _ list.MetadataRequest, resp *list.MetadataResponse) {
400+
MetadataMethod: func(_ context.Context, _ resource.MetadataRequest, resp *resource.MetadataResponse) {
401401
resp.TypeName = "test_list_resource2"
402402
},
403403
}

internal/proto5server/server_listresource.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ package proto5server
55

66
import (
77
"context"
8-
"github.com/hashicorp/terraform-plugin-framework/list"
98

109
"github.com/hashicorp/terraform-plugin-framework/diag"
1110
"github.com/hashicorp/terraform-plugin-framework/internal/fromproto5"
1211
"github.com/hashicorp/terraform-plugin-framework/internal/fwserver"
1312
"github.com/hashicorp/terraform-plugin-framework/internal/toproto5"
13+
"github.com/hashicorp/terraform-plugin-framework/resource"
1414
"github.com/hashicorp/terraform-plugin-go/tfprotov5"
1515
)
1616

@@ -48,9 +48,8 @@ func (s *Server) ListResource(ctx context.Context, protoReq *tfprotov5.ListResou
4848
return ListRequestErrorDiagnostics(ctx, allDiags...)
4949
}
5050

51-
// This breaks consistency with other RPCs but this allows us to switch the logic without an interceptor in mux
52-
metadataResp := list.MetadataResponse{}
53-
listResource.Metadata(ctx, list.MetadataRequest{}, &metadataResp)
51+
metadataResp := resource.MetadataResponse{}
52+
listResource.Metadata(ctx, resource.MetadataRequest{}, &metadataResp)
5453

5554
req := &fwserver.ListRequest{
5655
Config: config,
@@ -76,7 +75,7 @@ func (s *Server) ListResource(ctx context.Context, protoReq *tfprotov5.ListResou
7675
return ListRequestErrorDiagnostics(ctx, allDiags...)
7776
}
7877
}
79-
78+
8079
stream := &fwserver.ListResultsStream{}
8180

8281
s.FrameworkServer.ListResource(ctx, req, stream)

internal/proto5server/server_listresource_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ func TestServerListResource(t *testing.T) {
118118
}
119119
resp.Results = slices.Values(results)
120120
},
121-
MetadataMethod: func(ctx context.Context, req list.MetadataRequest, resp *list.MetadataResponse) {
121+
MetadataMethod: func(ctx context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) {
122122
resp.TypeName = "test_resource"
123123
},
124124
}

internal/proto5server/server_validatelistresourceconfig_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ func TestServerValidateListResourceConfig(t *testing.T) {
5858
return []func() list.ListResource{
5959
func() list.ListResource {
6060
return &testprovider.ListResource{
61-
MetadataMethod: func(_ context.Context, _ list.MetadataRequest, resp *list.MetadataResponse) {
61+
MetadataMethod: func(_ context.Context, _ resource.MetadataRequest, resp *resource.MetadataResponse) {
6262
resp.TypeName = "test_resource"
6363
},
6464
ListResourceConfigSchemaMethod: func(_ context.Context, _ list.ListResourceSchemaRequest, resp *list.ListResourceSchemaResponse) {},
@@ -96,7 +96,7 @@ func TestServerValidateListResourceConfig(t *testing.T) {
9696
ListResourceConfigSchemaMethod: func(_ context.Context, _ list.ListResourceSchemaRequest, resp *list.ListResourceSchemaResponse) {
9797
resp.Schema = testSchema
9898
},
99-
MetadataMethod: func(_ context.Context, _ list.MetadataRequest, resp *list.MetadataResponse) {
99+
MetadataMethod: func(_ context.Context, _ resource.MetadataRequest, resp *resource.MetadataResponse) {
100100
resp.TypeName = "test_resource"
101101
},
102102
}
@@ -135,7 +135,7 @@ func TestServerValidateListResourceConfig(t *testing.T) {
135135
ListResourceConfigSchemaMethod: func(_ context.Context, _ list.ListResourceSchemaRequest, resp *list.ListResourceSchemaResponse) {
136136
resp.Schema = testSchema
137137
},
138-
MetadataMethod: func(_ context.Context, _ list.MetadataRequest, resp *list.MetadataResponse) {
138+
MetadataMethod: func(_ context.Context, _ resource.MetadataRequest, resp *resource.MetadataResponse) {
139139
resp.TypeName = "test_resource"
140140
},
141141
},

internal/testing/testprovider/listresource.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,21 @@ import (
77
"context"
88

99
"github.com/hashicorp/terraform-plugin-framework/list"
10+
"github.com/hashicorp/terraform-plugin-framework/resource"
1011
)
1112

1213
var _ list.ListResource = &ListResource{}
1314

1415
// Declarative list.ListResource for unit testing.
1516
type ListResource struct {
1617
// ListResource interface methods
17-
MetadataMethod func(context.Context, list.MetadataRequest, *list.MetadataResponse)
18+
MetadataMethod func(context.Context, resource.MetadataRequest, *resource.MetadataResponse)
1819
ListResourceConfigSchemaMethod func(context.Context, list.ListResourceSchemaRequest, *list.ListResourceSchemaResponse)
1920
ListMethod func(context.Context, list.ListRequest, *list.ListResultsStream)
2021
}
2122

2223
// Metadata satisfies the list.ListResource interface.
23-
func (r *ListResource) Metadata(ctx context.Context, req list.MetadataRequest, resp *list.MetadataResponse) {
24+
func (r *ListResource) Metadata(ctx context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) {
2425
if r.MetadataMethod == nil {
2526
return
2627
}

list/list_resource.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,7 @@ type ListResource interface {
3030
// The method signature is intended to be compatible with the Metadata
3131
// method signature in the Resource interface. One implementation of
3232
// Metadata can satisfy both interfaces.
33-
34-
// Since we're passing additional schema information around in here we should use the
35-
// MetadataRequest and MetadataResponse for list
36-
Metadata(context.Context, MetadataRequest, *MetadataResponse)
33+
Metadata(context.Context, resource.MetadataRequest, *resource.MetadataResponse)
3734

3835
// ListResourceConfigSchema should return the schema for list blocks.
3936
ListResourceConfigSchema(context.Context, ListResourceSchemaRequest, *ListResourceSchemaResponse)

list/list_resource_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ type ComputeInstanceWithListResourceConfigValidators struct {
2626
func (c *ComputeInstanceResource) Configure(_ context.Context, _ resource.ConfigureRequest, _ *resource.ConfigureResponse) {
2727
}
2828

29-
func (c *ComputeInstanceResource) Metadata(_ context.Context, _ list.MetadataRequest, _ *list.MetadataResponse) {
29+
func (c *ComputeInstanceResource) Metadata(_ context.Context, _ resource.MetadataRequest, _ *resource.MetadataResponse) {
3030
}
3131

3232
func (c *ComputeInstanceWithValidateListResourceConfig) ValidateListResourceConfig(_ context.Context, _ list.ValidateConfigRequest, _ *list.ValidateConfigResponse) {

list/no_op_resource_test.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,3 @@ func (*NoOpResource) Update(_ context.Context, _ resource.UpdateRequest, _ *reso
2525

2626
func (*NoOpResource) Delete(_ context.Context, _ resource.DeleteRequest, _ *resource.DeleteResponse) {
2727
}
28-
29-
func (*NoOpResource) Metadata(_ context.Context, _ resource.MetadataRequest, _ *resource.MetadataResponse) {
30-
}

0 commit comments

Comments
 (0)