2b1761bab3
* Make cluster names SNI always * Update some tests * Ensure we check for prepared query types * Use sni for route cluster names * Proper mesh gateway mode defaulting when the discovery chain is used * Ignore service splits from PatchSliceOfMaps * Update some xds golden files for proper test output * Allow for grpc/http listeners/cluster configs with the disco chain * Update stats expectation
48 lines
1.5 KiB
Go
48 lines
1.5 KiB
Go
package xds
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/hashicorp/consul/agent/proxycfg"
|
|
"github.com/hashicorp/consul/agent/structs"
|
|
)
|
|
|
|
func UpstreamSNI(u *structs.Upstream, subset string, cfgSnap *proxycfg.ConfigSnapshot) string {
|
|
if u.DestinationType == "prepared_query" {
|
|
return QuerySNI(u.DestinationName, u.Datacenter, cfgSnap)
|
|
}
|
|
return ServiceSNI(u.DestinationName, subset, u.DestinationNamespace, u.Datacenter, cfgSnap)
|
|
}
|
|
|
|
func DatacenterSNI(dc string, cfgSnap *proxycfg.ConfigSnapshot) string {
|
|
return fmt.Sprintf("%s.internal.%s", dc, cfgSnap.Roots.TrustDomain)
|
|
}
|
|
|
|
func ServiceSNI(service string, subset string, namespace string, datacenter string, cfgSnap *proxycfg.ConfigSnapshot) string {
|
|
if namespace == "" {
|
|
namespace = "default"
|
|
}
|
|
|
|
if datacenter == "" {
|
|
datacenter = cfgSnap.Datacenter
|
|
}
|
|
|
|
if subset == "" {
|
|
return fmt.Sprintf("%s.%s.%s.internal.%s", service, namespace, datacenter, cfgSnap.Roots.TrustDomain)
|
|
} else {
|
|
return fmt.Sprintf("%s.%s.%s.%s.internal.%s", subset, service, namespace, datacenter, cfgSnap.Roots.TrustDomain)
|
|
}
|
|
}
|
|
|
|
func QuerySNI(service string, datacenter string, cfgSnap *proxycfg.ConfigSnapshot) string {
|
|
if datacenter == "" {
|
|
datacenter = cfgSnap.Datacenter
|
|
}
|
|
|
|
return fmt.Sprintf("%s.default.%s.query.%s", service, datacenter, cfgSnap.Roots.TrustDomain)
|
|
}
|
|
|
|
func TargetSNI(target structs.DiscoveryTarget, cfgSnap *proxycfg.ConfigSnapshot) string {
|
|
return ServiceSNI(target.Service, target.ServiceSubset, target.Namespace, target.Datacenter, cfgSnap)
|
|
}
|