@@ -20,6 +20,7 @@ type GetMetadataResponse struct {
20
20
Diagnostics diag.Diagnostics
21
21
EphemeralResources []EphemeralResourceMetadata
22
22
Functions []FunctionMetadata
23
+ ListResources []ListResourceMetadata
23
24
Resources []ResourceMetadata
24
25
ServerCapabilities * ServerCapabilities
25
26
}
@@ -52,28 +53,39 @@ type ResourceMetadata struct {
52
53
TypeName string
53
54
}
54
55
56
+ // ListResourceMetadata is the framework server equivalent of the
57
+ // tfprotov5.ListResourceMetadata and tfprotov6.ListResourceMetadata types.
58
+ type ListResourceMetadata struct {
59
+ // TypeName is the name of the list resource.
60
+ TypeName string
61
+ }
62
+
55
63
// GetMetadata implements the framework server GetMetadata RPC.
56
64
func (s * Server ) GetMetadata (ctx context.Context , req * GetMetadataRequest , resp * GetMetadataResponse ) {
57
65
resp .DataSources = []DataSourceMetadata {}
58
66
resp .EphemeralResources = []EphemeralResourceMetadata {}
59
67
resp .Functions = []FunctionMetadata {}
68
+ resp .ListResources = []ListResourceMetadata {}
60
69
resp .Resources = []ResourceMetadata {}
70
+
61
71
resp .ServerCapabilities = s .ServerCapabilities ()
62
72
63
73
datasourceMetadatas , diags := s .DataSourceMetadatas (ctx )
64
-
65
74
resp .Diagnostics .Append (diags ... )
66
75
67
76
ephemeralResourceMetadatas , diags := s .EphemeralResourceMetadatas (ctx )
68
-
69
77
resp .Diagnostics .Append (diags ... )
70
78
71
79
functionMetadatas , diags := s .FunctionMetadatas (ctx )
72
-
73
80
resp .Diagnostics .Append (diags ... )
74
81
75
82
resourceMetadatas , diags := s .ResourceMetadatas (ctx )
83
+ resp .Diagnostics .Append (diags ... )
76
84
85
+ // Metadata for list resources must be retrieved after metadata for managed
86
+ // resources. Server.ListResourceMetadatas checks that each list resource
87
+ // type nane matches a known managed Resource type name.
88
+ listResourceMetadatas , diags := s .ListResourceMetadatas (ctx )
77
89
resp .Diagnostics .Append (diags ... )
78
90
79
91
if resp .Diagnostics .HasError () {
@@ -83,5 +95,6 @@ func (s *Server) GetMetadata(ctx context.Context, req *GetMetadataRequest, resp
83
95
resp .DataSources = datasourceMetadatas
84
96
resp .EphemeralResources = ephemeralResourceMetadatas
85
97
resp .Functions = functionMetadatas
98
+ resp .ListResources = listResourceMetadatas
86
99
resp .Resources = resourceMetadatas
87
100
}
0 commit comments