Skip to content

Commit 15299cc

Browse files
authored
xdsclient: make a function to return the supported resource type implementations (#8405)
1 parent 20bd1e7 commit 15299cc

File tree

2 files changed

+57
-36
lines changed

2 files changed

+57
-36
lines changed

xds/internal/xdsclient/clientimpl.go

Lines changed: 3 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@ import (
2828
"google.golang.org/grpc/internal/backoff"
2929
"google.golang.org/grpc/internal/grpclog"
3030
"google.golang.org/grpc/internal/xds/bootstrap"
31-
"google.golang.org/grpc/xds/internal/xdsclient/xdsresource"
32-
"google.golang.org/grpc/xds/internal/xdsclient/xdsresource/version"
3331

3432
xdsbootstrap "google.golang.org/grpc/xds/bootstrap"
3533
"google.golang.org/grpc/xds/internal/clients"
@@ -205,44 +203,13 @@ func buildXDSClientConfig(config *bootstrap.Config, metricsRecorder estats.Metri
205203
}
206204
}
207205

208-
gTransportBuilder := grpctransport.NewBuilder(grpcTransportConfigs)
209-
210-
resourceTypes := map[string]xdsclient.ResourceType{
211-
version.V3ListenerURL: {
212-
TypeURL: version.V3ListenerURL,
213-
TypeName: xdsresource.ListenerResourceTypeName,
214-
AllResourcesRequiredInSotW: true,
215-
Decoder: xdsresource.NewGenericListenerResourceTypeDecoder(config),
216-
},
217-
version.V3RouteConfigURL: {
218-
TypeURL: version.V3RouteConfigURL,
219-
TypeName: xdsresource.RouteConfigTypeName,
220-
AllResourcesRequiredInSotW: false,
221-
Decoder: xdsresource.NewGenericRouteConfigResourceTypeDecoder(),
222-
},
223-
version.V3ClusterURL: {
224-
TypeURL: version.V3ClusterURL,
225-
TypeName: xdsresource.ClusterResourceTypeName,
226-
AllResourcesRequiredInSotW: true,
227-
Decoder: xdsresource.NewGenericClusterResourceTypeDecoder(config, gServerCfgMap),
228-
},
229-
version.V3EndpointsURL: {
230-
TypeURL: version.V3EndpointsURL,
231-
TypeName: xdsresource.EndpointsResourceTypeName,
232-
AllResourcesRequiredInSotW: false,
233-
Decoder: xdsresource.NewGenericEndpointsResourceTypeDecoder(),
234-
},
235-
}
236-
237-
mr := &metricsReporter{recorder: metricsRecorder, target: target}
238-
239206
return xdsclient.Config{
240207
Authorities: gAuthorities,
241208
Servers: gServerCfgs,
242209
Node: gNode,
243-
TransportBuilder: gTransportBuilder,
244-
ResourceTypes: resourceTypes,
245-
MetricsReporter: mr,
210+
TransportBuilder: grpctransport.NewBuilder(grpcTransportConfigs),
211+
ResourceTypes: supportedResourceTypes(config, gServerCfgMap),
212+
MetricsReporter: &metricsReporter{recorder: metricsRecorder, target: target},
246213
}, nil
247214
}
248215

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
/*
2+
*
3+
* Copyright 2025 gRPC authors.
4+
*
5+
* Licensed under the Apache License, Version 2.0 (the "License");
6+
* you may not use this file except in compliance with the License.
7+
* You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*/
17+
18+
package xdsclient
19+
20+
import (
21+
"google.golang.org/grpc/internal/xds/bootstrap"
22+
"google.golang.org/grpc/xds/internal/clients/xdsclient"
23+
"google.golang.org/grpc/xds/internal/xdsclient/xdsresource"
24+
"google.golang.org/grpc/xds/internal/xdsclient/xdsresource/version"
25+
)
26+
27+
func supportedResourceTypes(config *bootstrap.Config, gServerCfgMap map[xdsclient.ServerConfig]*bootstrap.ServerConfig) map[string]xdsclient.ResourceType {
28+
return map[string]xdsclient.ResourceType{
29+
version.V3ListenerURL: {
30+
TypeURL: version.V3ListenerURL,
31+
TypeName: xdsresource.ListenerResourceTypeName,
32+
AllResourcesRequiredInSotW: true,
33+
Decoder: xdsresource.NewGenericListenerResourceTypeDecoder(config),
34+
},
35+
version.V3RouteConfigURL: {
36+
TypeURL: version.V3RouteConfigURL,
37+
TypeName: xdsresource.RouteConfigTypeName,
38+
AllResourcesRequiredInSotW: false,
39+
Decoder: xdsresource.NewGenericRouteConfigResourceTypeDecoder(),
40+
},
41+
version.V3ClusterURL: {
42+
TypeURL: version.V3ClusterURL,
43+
TypeName: xdsresource.ClusterResourceTypeName,
44+
AllResourcesRequiredInSotW: true,
45+
Decoder: xdsresource.NewGenericClusterResourceTypeDecoder(config, gServerCfgMap),
46+
},
47+
version.V3EndpointsURL: {
48+
TypeURL: version.V3EndpointsURL,
49+
TypeName: xdsresource.EndpointsResourceTypeName,
50+
AllResourcesRequiredInSotW: false,
51+
Decoder: xdsresource.NewGenericEndpointsResourceTypeDecoder(),
52+
},
53+
}
54+
}

0 commit comments

Comments
 (0)