in src/go/configgenerator/clustergen/helpers/backend.go [53:109]
func (c *BaseBackendCluster) GenBaseConfig() (*clusterpb.Cluster, error) {
config := &clusterpb.Cluster{
Name: c.ClusterName,
LbPolicy: clusterpb.Cluster_ROUND_ROBIN,
ConnectTimeout: durationpb.New(c.ClusterConnectTimeout),
ClusterDiscoveryType: &clusterpb.Cluster_Type{Type: clusterpb.Cluster_LOGICAL_DNS},
LoadAssignment: util.CreateLoadAssignment(c.Hostname, c.Port),
}
if c.MaxRequestsThreshold > 0 {
config.CircuitBreakers = &clusterpb.CircuitBreakers{
Thresholds: []*clusterpb.CircuitBreakers_Thresholds{
makeCircuitBreakersThresholds(corepb.RoutingPriority_DEFAULT, c.MaxRequestsThreshold),
makeCircuitBreakersThresholds(corepb.RoutingPriority_HIGH, c.MaxRequestsThreshold),
},
}
}
isHttp2 := c.Protocol == util.GRPC || c.Protocol == util.HTTP2
if c.TLS != nil {
var alpnProtocols []string
if isHttp2 {
alpnProtocols = []string{"h2"}
}
transportSocket, err := c.TLS.MakeTLSConfig(c.Hostname, alpnProtocols)
if err != nil {
return nil, err
}
config.TransportSocket = transportSocket
}
if isHttp2 {
config.TypedExtensionProtocolOptions = util.CreateUpstreamProtocolOptions()
}
switch c.BackendDnsLookupFamily {
case "auto":
config.DnsLookupFamily = clusterpb.Cluster_AUTO
case "v4only":
config.DnsLookupFamily = clusterpb.Cluster_V4_ONLY
case "v6only":
config.DnsLookupFamily = clusterpb.Cluster_V6_ONLY
case "v4preferred":
config.DnsLookupFamily = clusterpb.Cluster_V4_PREFERRED
case "all":
config.DnsLookupFamily = clusterpb.Cluster_ALL
default:
return nil, fmt.Errorf("invalid DnsLookupFamily: %s; Only auto, v4only, v6only, v4preferred, and all are valid", c.BackendDnsLookupFamily)
}
if err := MaybeAddDNSResolver(c.DNS, config); err != nil {
return nil, err
}
return config, nil
}