in dp_check/dp_check.go [997:1037]
func checkCDS(stream adsStream, node *v3corepb.Node, clusterName string, versionInfoMap, nonceMap map[string]string) (string, error) {
// check aggregate cluster
cdsReply, err := sendXdsRequest(stream, node, V3ClusterURL, clusterName, versionInfoMap, nonceMap)
if err != nil {
return "", fmt.Errorf("fail to send CDS request: %v", err)
}
var edsClusterName string
var edsClusterReply *v3discoverypb.DiscoveryResponse
if *xdsExpectFallbackConfigured {
clusters, err := processAggregateClusterResponse(cdsReply, clusterName)
if err != nil {
return "", fmt.Errorf("fail to process aggregate cluster response: %v", err)
}
infoLog.Printf("Received primary cluster for DirectPath: %v", clusters[0])
infoLog.Printf("Received secondary cluster for fallback to CFE: %v", clusters[1])
// check primary cluster
var edsClusterErr error
edsClusterName = clusters[0]
edsClusterReply, edsClusterErr = sendXdsRequest(stream, node, V3ClusterURL, edsClusterName, versionInfoMap, nonceMap)
if edsClusterErr != nil {
return "", fmt.Errorf("fail to send EDS cluster request: %v", err)
}
// check secondary cluster
dnsClusterReply, err := sendXdsRequest(stream, node, V3ClusterURL, clusters[1], versionInfoMap, nonceMap)
if err != nil {
return "", fmt.Errorf("fail to send DNS cluster request: %v", err)
}
if err = processDNSClusterResponse(dnsClusterReply, clusters[1]); err != nil {
return "", fmt.Errorf("fail to process DNS cluster response: %v", err)
}
} else {
edsClusterName = clusterName
edsClusterReply = cdsReply
}
serviceName, err := processEdsClusterResponse(edsClusterReply, edsClusterName)
if err != nil {
return "", fmt.Errorf("fail to process EDS cluster response: %v", err)
}
infoLog.Printf("Successfully extract service_name from CDS response: |%v|", serviceName)
return serviceName, nil
}