MCPcopy
hub / github.com/grpc/grpc-go / BuildXDSClientConfig

Function BuildXDSClientConfig

internal/xds/xdsclient/clientimpl.go:208–257  ·  view source on GitHub ↗

BuildXDSClientConfig builds the xdsclient.Config from the bootstrap.Config. This function is exported for fuzz testing purposes only.

(config *bootstrap.Config, metricsRecorder estats.MetricsRecorder, target string, watchExpiryTimeout time.Duration)

Source from the content-addressed store, hash-verified

206//
207// This function is exported for fuzz testing purposes only.
208func BuildXDSClientConfig(config *bootstrap.Config, metricsRecorder estats.MetricsRecorder, target string, watchExpiryTimeout time.Duration) (xdsclient.Config, error) {
209 grpcTransportConfigs := make(map[string]grpctransport.Config)
210 gServerCfgMap := make(map[xdsclient.ServerConfig]*bootstrap.ServerConfig)
211
212 gAuthorities := make(map[string]xdsclient.Authority)
213 for name, cfg := range config.Authorities() {
214 // If server configs are specified in the authorities map, use that.
215 // Else, use the top-level server configs.
216 serverCfg := config.XDSServers()
217 if len(cfg.XDSServers) >= 1 {
218 serverCfg = cfg.XDSServers
219 }
220 gsc, err := buildServerConfigs(serverCfg, grpcTransportConfigs, gServerCfgMap)
221 if err != nil {
222 return xdsclient.Config{}, err
223 }
224 gAuthorities[name] = xdsclient.Authority{XDSServers: gsc}
225 }
226
227 gServerCfgs, err := buildServerConfigs(config.XDSServers(), grpcTransportConfigs, gServerCfgMap)
228 if err != nil {
229 return xdsclient.Config{}, err
230 }
231
232 node := config.Node()
233 gNode := clients.Node{
234 ID: node.GetId(),
235 Cluster: node.GetCluster(),
236 Metadata: node.Metadata,
237 UserAgentName: node.UserAgentName,
238 UserAgentVersion: node.GetUserAgentVersion(),
239 }
240 if node.Locality != nil {
241 gNode.Locality = clients.Locality{
242 Region: node.Locality.Region,
243 Zone: node.Locality.Zone,
244 SubZone: node.Locality.SubZone,
245 }
246 }
247
248 return xdsclient.Config{
249 Authorities: gAuthorities,
250 Servers: gServerCfgs,
251 Node: gNode,
252 TransportBuilder: grpctransport.NewBuilder(grpcTransportConfigs),
253 ResourceTypes: supportedResourceTypes(config, gServerCfgMap),
254 MetricsReporter: &metricsReporter{recorder: metricsRecorder, target: target},
255 WatchExpiryTimeout: watchExpiryTimeout,
256 }, nil
257}
258
259// populateGRPCTransportConfigsFromServerConfig iterates through the channel
260// credentials of the provided server configuration, builds credential bundles,

Callers 2

newClientImplFunction · 0.85

Calls 6

NewBuilderFunction · 0.92
buildServerConfigsFunction · 0.85
supportedResourceTypesFunction · 0.85
AuthoritiesMethod · 0.80
XDSServersMethod · 0.80
NodeMethod · 0.80

Tested by 1