Skip to content

Commit 04a5f46

Browse files
authored
xds/internal/xdsclient: Emit unknown for CSM Labels if not present in CDS (#7309) (#7317)
1 parent cff5c3e commit 04a5f46

File tree

9 files changed

+102
-29
lines changed

9 files changed

+102
-29
lines changed

xds/internal/balancer/cdsbalancer/aggregate_cluster_test.go

+21
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import (
3333
"google.golang.org/grpc/internal/testutils/xds/e2e"
3434
"google.golang.org/grpc/serviceconfig"
3535
"google.golang.org/grpc/status"
36+
"google.golang.org/grpc/xds/internal"
3637
"google.golang.org/grpc/xds/internal/balancer/clusterresolver"
3738

3839
v3clusterpb "github.com/envoyproxy/go-control-plane/envoy/config/cluster/v3"
@@ -85,6 +86,7 @@ func (s) TestAggregateClusterSuccess_LeafNode(t *testing.T) {
8586
Type: clusterresolver.DiscoveryMechanismTypeEDS,
8687
EDSServiceName: serviceName,
8788
OutlierDetection: json.RawMessage(`{}`),
89+
TelemetryLabels: internal.UnknownCSMLabels,
8890
}},
8991
XDSLBPolicy: json.RawMessage(`[{"xds_wrr_locality_experimental": {"childPolicy": [{"round_robin": {}}]}}]`),
9092
},
@@ -94,6 +96,7 @@ func (s) TestAggregateClusterSuccess_LeafNode(t *testing.T) {
9496
Type: clusterresolver.DiscoveryMechanismTypeEDS,
9597
EDSServiceName: serviceName + "-new",
9698
OutlierDetection: json.RawMessage(`{}`),
99+
TelemetryLabels: internal.UnknownCSMLabels,
97100
}},
98101
XDSLBPolicy: json.RawMessage(`[{"xds_wrr_locality_experimental": {"childPolicy": [{"round_robin": {}}]}}]`),
99102
},
@@ -108,6 +111,7 @@ func (s) TestAggregateClusterSuccess_LeafNode(t *testing.T) {
108111
Type: clusterresolver.DiscoveryMechanismTypeLogicalDNS,
109112
DNSHostname: "dns_host:8080",
110113
OutlierDetection: json.RawMessage(`{}`),
114+
TelemetryLabels: internal.UnknownCSMLabels,
111115
}},
112116
XDSLBPolicy: json.RawMessage(`[{"xds_wrr_locality_experimental": {"childPolicy": [{"round_robin": {}}]}}]`),
113117
},
@@ -117,6 +121,7 @@ func (s) TestAggregateClusterSuccess_LeafNode(t *testing.T) {
117121
Type: clusterresolver.DiscoveryMechanismTypeLogicalDNS,
118122
DNSHostname: "dns_host_new:8080",
119123
OutlierDetection: json.RawMessage(`{}`),
124+
TelemetryLabels: internal.UnknownCSMLabels,
120125
}},
121126
XDSLBPolicy: json.RawMessage(`[{"xds_wrr_locality_experimental": {"childPolicy": [{"round_robin": {}}]}}]`),
122127
},
@@ -211,12 +216,14 @@ func (s) TestAggregateClusterSuccess_ThenUpdateChildClusters(t *testing.T) {
211216
Type: clusterresolver.DiscoveryMechanismTypeEDS,
212217
EDSServiceName: serviceName,
213218
OutlierDetection: json.RawMessage(`{}`),
219+
TelemetryLabels: internal.UnknownCSMLabels,
214220
},
215221
{
216222
Cluster: dnsClusterName,
217223
Type: clusterresolver.DiscoveryMechanismTypeLogicalDNS,
218224
DNSHostname: fmt.Sprintf("%s:%d", dnsHostName, dnsPort),
219225
OutlierDetection: json.RawMessage(`{}`),
226+
TelemetryLabels: internal.UnknownCSMLabels,
220227
},
221228
},
222229
XDSLBPolicy: json.RawMessage(`[{"xds_wrr_locality_experimental": {"childPolicy": [{"round_robin": {}}]}}]`),
@@ -247,12 +254,14 @@ func (s) TestAggregateClusterSuccess_ThenUpdateChildClusters(t *testing.T) {
247254
Type: clusterresolver.DiscoveryMechanismTypeEDS,
248255
EDSServiceName: serviceName,
249256
OutlierDetection: json.RawMessage(`{}`),
257+
TelemetryLabels: internal.UnknownCSMLabels,
250258
},
251259
{
252260
Cluster: dnsClusterNameNew,
253261
Type: clusterresolver.DiscoveryMechanismTypeLogicalDNS,
254262
DNSHostname: fmt.Sprintf("%s:%d", dnsHostNameNew, dnsPort),
255263
OutlierDetection: json.RawMessage(`{}`),
264+
TelemetryLabels: internal.UnknownCSMLabels,
256265
},
257266
},
258267
XDSLBPolicy: json.RawMessage(`[{"xds_wrr_locality_experimental": {"childPolicy": [{"round_robin": {}}]}}]`),
@@ -298,12 +307,14 @@ func (s) TestAggregateClusterSuccess_ThenChangeRootToEDS(t *testing.T) {
298307
Type: clusterresolver.DiscoveryMechanismTypeEDS,
299308
EDSServiceName: serviceName,
300309
OutlierDetection: json.RawMessage(`{}`),
310+
TelemetryLabels: internal.UnknownCSMLabels,
301311
},
302312
{
303313
Cluster: dnsClusterName,
304314
Type: clusterresolver.DiscoveryMechanismTypeLogicalDNS,
305315
DNSHostname: fmt.Sprintf("%s:%d", dnsHostName, dnsPort),
306316
OutlierDetection: json.RawMessage(`{}`),
317+
TelemetryLabels: internal.UnknownCSMLabels,
307318
},
308319
},
309320
XDSLBPolicy: json.RawMessage(`[{"xds_wrr_locality_experimental": {"childPolicy": [{"round_robin": {}}]}}]`),
@@ -329,6 +340,7 @@ func (s) TestAggregateClusterSuccess_ThenChangeRootToEDS(t *testing.T) {
329340
Type: clusterresolver.DiscoveryMechanismTypeEDS,
330341
EDSServiceName: serviceName,
331342
OutlierDetection: json.RawMessage(`{}`),
343+
TelemetryLabels: internal.UnknownCSMLabels,
332344
}},
333345
XDSLBPolicy: json.RawMessage(`[{"xds_wrr_locality_experimental": {"childPolicy": [{"round_robin": {}}]}}]`),
334346
}
@@ -363,6 +375,7 @@ func (s) TestAggregatedClusterSuccess_SwitchBetweenLeafAndAggregate(t *testing.T
363375
Type: clusterresolver.DiscoveryMechanismTypeEDS,
364376
EDSServiceName: serviceName,
365377
OutlierDetection: json.RawMessage(`{}`),
378+
TelemetryLabels: internal.UnknownCSMLabels,
366379
}},
367380
XDSLBPolicy: json.RawMessage(`[{"xds_wrr_locality_experimental": {"childPolicy": [{"round_robin": {}}]}}]`),
368381
}
@@ -391,12 +404,14 @@ func (s) TestAggregatedClusterSuccess_SwitchBetweenLeafAndAggregate(t *testing.T
391404
Type: clusterresolver.DiscoveryMechanismTypeEDS,
392405
EDSServiceName: serviceName,
393406
OutlierDetection: json.RawMessage(`{}`),
407+
TelemetryLabels: internal.UnknownCSMLabels,
394408
},
395409
{
396410
Cluster: dnsClusterName,
397411
Type: clusterresolver.DiscoveryMechanismTypeLogicalDNS,
398412
DNSHostname: fmt.Sprintf("%s:%d", dnsHostName, dnsPort),
399413
OutlierDetection: json.RawMessage(`{}`),
414+
TelemetryLabels: internal.UnknownCSMLabels,
400415
},
401416
},
402417
XDSLBPolicy: json.RawMessage(`[{"xds_wrr_locality_experimental": {"childPolicy": [{"round_robin": {}}]}}]`),
@@ -420,6 +435,7 @@ func (s) TestAggregatedClusterSuccess_SwitchBetweenLeafAndAggregate(t *testing.T
420435
Type: clusterresolver.DiscoveryMechanismTypeEDS,
421436
EDSServiceName: serviceName,
422437
OutlierDetection: json.RawMessage(`{}`),
438+
TelemetryLabels: internal.UnknownCSMLabels,
423439
}},
424440
XDSLBPolicy: json.RawMessage(`[{"xds_wrr_locality_experimental": {"childPolicy": [{"round_robin": {}}]}}]`),
425441
}
@@ -572,6 +588,7 @@ func (s) TestAggregatedClusterSuccess_DiamondDependency(t *testing.T) {
572588
Type: clusterresolver.DiscoveryMechanismTypeEDS,
573589
EDSServiceName: serviceName,
574590
OutlierDetection: json.RawMessage(`{}`),
591+
TelemetryLabels: internal.UnknownCSMLabels,
575592
}},
576593
XDSLBPolicy: json.RawMessage(`[{"xds_wrr_locality_experimental": {"childPolicy": [{"round_robin": {}}]}}]`),
577594
}
@@ -639,12 +656,14 @@ func (s) TestAggregatedClusterSuccess_IgnoreDups(t *testing.T) {
639656
Type: clusterresolver.DiscoveryMechanismTypeEDS,
640657
EDSServiceName: serviceName,
641658
OutlierDetection: json.RawMessage(`{}`),
659+
TelemetryLabels: internal.UnknownCSMLabels,
642660
},
643661
{
644662
Cluster: clusterNameD,
645663
Type: clusterresolver.DiscoveryMechanismTypeEDS,
646664
EDSServiceName: serviceName,
647665
OutlierDetection: json.RawMessage(`{}`),
666+
TelemetryLabels: internal.UnknownCSMLabels,
648667
},
649668
},
650669
XDSLBPolicy: json.RawMessage(`[{"xds_wrr_locality_experimental": {"childPolicy": [{"round_robin": {}}]}}]`),
@@ -727,6 +746,7 @@ func (s) TestAggregatedCluster_NodeChildOfItself(t *testing.T) {
727746
Type: clusterresolver.DiscoveryMechanismTypeEDS,
728747
EDSServiceName: serviceName,
729748
OutlierDetection: json.RawMessage(`{}`),
749+
TelemetryLabels: internal.UnknownCSMLabels,
730750
}},
731751
XDSLBPolicy: json.RawMessage(`[{"xds_wrr_locality_experimental": {"childPolicy": [{"round_robin": {}}]}}]`),
732752
}
@@ -832,6 +852,7 @@ func (s) TestAggregatedCluster_CycleWithLeafNode(t *testing.T) {
832852
Type: clusterresolver.DiscoveryMechanismTypeEDS,
833853
EDSServiceName: serviceName,
834854
OutlierDetection: json.RawMessage(`{}`),
855+
TelemetryLabels: internal.UnknownCSMLabels,
835856
}},
836857
XDSLBPolicy: json.RawMessage(`[{"xds_wrr_locality_experimental": {"childPolicy": [{"round_robin": {}}]}}]`),
837858
}

xds/internal/balancer/cdsbalancer/cdsbalancer_test.go

+6
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ import (
4242
"google.golang.org/grpc/resolver/manual"
4343
"google.golang.org/grpc/serviceconfig"
4444
"google.golang.org/grpc/status"
45+
xdsinternal "google.golang.org/grpc/xds/internal"
4546
"google.golang.org/grpc/xds/internal/balancer/clusterresolver"
4647
"google.golang.org/grpc/xds/internal/xdsclient"
4748
"google.golang.org/grpc/xds/internal/xdsclient/xdsresource"
@@ -456,6 +457,7 @@ func (s) TestClusterUpdate_Success(t *testing.T) {
456457
EDSServiceName: serviceName,
457458
MaxConcurrentRequests: newUint32(512),
458459
OutlierDetection: json.RawMessage(`{}`),
460+
TelemetryLabels: xdsinternal.UnknownCSMLabels,
459461
}},
460462
XDSLBPolicy: json.RawMessage(`[{"xds_wrr_locality_experimental": {"childPolicy": [{"round_robin": {}}]}}]`),
461463
},
@@ -483,6 +485,7 @@ func (s) TestClusterUpdate_Success(t *testing.T) {
483485
Type: clusterresolver.DiscoveryMechanismTypeEDS,
484486
EDSServiceName: serviceName,
485487
OutlierDetection: json.RawMessage(`{}`),
488+
TelemetryLabels: xdsinternal.UnknownCSMLabels,
486489
}},
487490
XDSLBPolicy: json.RawMessage(`[{"ring_hash_experimental": {"minRingSize":100, "maxRingSize":1000}}]`),
488491
},
@@ -505,6 +508,7 @@ func (s) TestClusterUpdate_Success(t *testing.T) {
505508
Type: clusterresolver.DiscoveryMechanismTypeEDS,
506509
EDSServiceName: serviceName,
507510
OutlierDetection: json.RawMessage(`{"successRateEjection":{}}`),
511+
TelemetryLabels: xdsinternal.UnknownCSMLabels,
508512
}},
509513
XDSLBPolicy: json.RawMessage(`[{"ring_hash_experimental": {"minRingSize":1024, "maxRingSize":8388608}}]`),
510514
},
@@ -557,6 +561,7 @@ func (s) TestClusterUpdate_Success(t *testing.T) {
557561
"requestVolume": 50
558562
}
559563
}`),
564+
TelemetryLabels: xdsinternal.UnknownCSMLabels,
560565
}},
561566
XDSLBPolicy: json.RawMessage(`[{"ring_hash_experimental": {"minRingSize":1024, "maxRingSize":8388608}}]`),
562567
},
@@ -607,6 +612,7 @@ func (s) TestClusterUpdate_SuccessWithLRS(t *testing.T) {
607612
Creds: bootstrap.ChannelCreds{Type: "insecure"},
608613
},
609614
OutlierDetection: json.RawMessage(`{}`),
615+
TelemetryLabels: xdsinternal.UnknownCSMLabels,
610616
}},
611617
XDSLBPolicy: json.RawMessage(`[{"xds_wrr_locality_experimental": {"childPolicy": [{"round_robin": {}}]}}]`),
612618
}

xds/internal/balancer/clusterresolver/e2e_test/balancer_test.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ import (
4141
"google.golang.org/grpc/resolver/manual"
4242
"google.golang.org/grpc/serviceconfig"
4343
"google.golang.org/grpc/status"
44+
xdsinternal "google.golang.org/grpc/xds/internal"
4445
"google.golang.org/grpc/xds/internal/balancer/clusterimpl"
4546
"google.golang.org/grpc/xds/internal/balancer/outlierdetection"
4647
"google.golang.org/grpc/xds/internal/balancer/priority"
@@ -400,8 +401,9 @@ func (s) TestOutlierDetectionConfigPropagationToChildPolicy(t *testing.T) {
400401
ChildPolicy: &iserviceconfig.BalancerConfig{
401402
Name: clusterimpl.Name,
402403
Config: &clusterimpl.LBConfig{
403-
Cluster: clusterName,
404-
EDSServiceName: edsServiceName,
404+
Cluster: clusterName,
405+
EDSServiceName: edsServiceName,
406+
TelemetryLabels: xdsinternal.UnknownCSMLabels,
405407
ChildPolicy: &iserviceconfig.BalancerConfig{
406408
Name: wrrlocality.Name,
407409
Config: &wrrlocality.LBConfig{

xds/internal/internal.go

+7
Original file line numberDiff line numberDiff line change
@@ -83,3 +83,10 @@ func SetLocalityID(addr resolver.Address, l LocalityID) resolver.Address {
8383

8484
// ResourceTypeMapForTesting maps TypeUrl to corresponding ResourceType.
8585
var ResourceTypeMapForTesting map[string]any
86+
87+
// UnknownCSMLabels are TelemetryLabels emitted from CDS if CSM Telemetry Label
88+
// data is not present in the CDS Resource.
89+
var UnknownCSMLabels = map[string]string{
90+
"csm.service_name": "unknown",
91+
"csm.service_namespace_name": "unknown",
92+
}

xds/internal/xdsclient/tests/cds_watchers_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ func verifyClusterUpdate(ctx context.Context, updateCh *testutils.Channel, wantU
103103
return fmt.Errorf("received update with error type %v, want %v", gotType, wantType)
104104
}
105105
}
106-
cmpOpts := []cmp.Option{cmpopts.EquateEmpty(), cmpopts.IgnoreFields(xdsresource.ClusterUpdate{}, "Raw", "LBPolicy")}
106+
cmpOpts := []cmp.Option{cmpopts.EquateEmpty(), cmpopts.IgnoreFields(xdsresource.ClusterUpdate{}, "Raw", "LBPolicy", "TelemetryLabels")}
107107
if diff := cmp.Diff(wantUpdate.update, got.update, cmpOpts...); diff != "" {
108108
return fmt.Errorf("received unexpected diff in the cluster resource update: (-want, got):\n%s", diff)
109109
}

xds/internal/xdsclient/tests/resource_update_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -871,7 +871,7 @@ func (s) TestHandleClusterResponseFromManagementServer(t *testing.T) {
871871
}
872872
cmpOpts := []cmp.Option{
873873
cmpopts.EquateEmpty(),
874-
cmpopts.IgnoreFields(xdsresource.ClusterUpdate{}, "Raw", "LBPolicy"),
874+
cmpopts.IgnoreFields(xdsresource.ClusterUpdate{}, "Raw", "LBPolicy", "TelemetryLabels"),
875875
}
876876
if diff := cmp.Diff(test.wantUpdate, gotUpdate, cmpOpts...); diff != "" {
877877
t.Fatalf("Unexpected diff in metadata, diff (-want +got):\n%s", diff)

0 commit comments

Comments
 (0)