diff --git a/.changelog/20011.txt b/.changelog/20011.txt new file mode 100644 index 0000000000..e20c69508b --- /dev/null +++ b/.changelog/20011.txt @@ -0,0 +1,3 @@ +```release-note:improvement +connect: replace usage of deprecated Envoy field `envoy.config.router.v3.WeightedCluster.total_weight`. +``` \ No newline at end of file diff --git a/agent/xds/routes.go b/agent/xds/routes.go index 3cc3ec3510..9eb8375ed9 100644 --- a/agent/xds/routes.go +++ b/agent/xds/routes.go @@ -17,16 +17,14 @@ import ( "golang.org/x/exp/maps" "golang.org/x/exp/slices" - "google.golang.org/protobuf/proto" - "google.golang.org/protobuf/types/known/durationpb" - "google.golang.org/protobuf/types/known/wrapperspb" - "github.com/hashicorp/consul/agent/connect" "github.com/hashicorp/consul/agent/consul/discoverychain" "github.com/hashicorp/consul/agent/proxycfg" "github.com/hashicorp/consul/agent/structs" "github.com/hashicorp/consul/agent/xds/config" "github.com/hashicorp/consul/agent/xds/response" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/types/known/durationpb" ) // routesFromSnapshot returns the xDS API representation of the "routes" in the @@ -1016,7 +1014,6 @@ func (s *ResourceGenerator) makeRouteActionForSplitter( forMeshGateway bool, ) (*envoy_route_v3.Route_Route, error) { clusters := make([]*envoy_route_v3.WeightedCluster_ClusterWeight, 0, len(splits)) - totalWeight := 0 for _, split := range splits { nextNode := chain.Nodes[split.NextNode] @@ -1033,7 +1030,6 @@ func (s *ResourceGenerator) makeRouteActionForSplitter( // The smallest representable weight is 1/10000 or .01% but envoy // deals with integers so scale everything up by 100x. weight := int(split.Weight * 100) - totalWeight += weight cw := &envoy_route_v3.WeightedCluster_ClusterWeight{ Weight: response.MakeUint32Value(weight), Name: clusterName, @@ -1049,18 +1045,11 @@ func (s *ResourceGenerator) makeRouteActionForSplitter( return nil, fmt.Errorf("number of clusters in splitter must be > 0; got %d", len(clusters)) } - var envoyWeightScale *wrapperspb.UInt32Value - if totalWeight == 10000 { - envoyWeightScale = response.MakeUint32Value(10000) - } - return &envoy_route_v3.Route_Route{ Route: &envoy_route_v3.RouteAction{ ClusterSpecifier: &envoy_route_v3.RouteAction_WeightedClusters{ WeightedClusters: &envoy_route_v3.WeightedCluster{ Clusters: clusters, - // this field is deprecated, and we should get the desired behavior with the front-end validation - TotalWeight: envoyWeightScale, // scaled up 100% }, }, }, diff --git a/agent/xds/testdata/builtin_extension/routes/propertyoverride-patch-specific-upstream-service-splitter.latest.golden b/agent/xds/testdata/builtin_extension/routes/propertyoverride-patch-specific-upstream-service-splitter.latest.golden index dc51ff588d..50acae3b21 100644 --- a/agent/xds/testdata/builtin_extension/routes/propertyoverride-patch-specific-upstream-service-splitter.latest.golden +++ b/agent/xds/testdata/builtin_extension/routes/propertyoverride-patch-specific-upstream-service-splitter.latest.golden @@ -28,8 +28,7 @@ "name": "v2.db.default.dc2.internal.11111111-2222-3333-4444-555555555555.consul", "weight": 5000 } - ], - "totalWeight": 10000 + ] } } } diff --git a/agent/xds/testdata/routes/connect-proxy-lb-in-resolver.latest.golden b/agent/xds/testdata/routes/connect-proxy-lb-in-resolver.latest.golden index f748c3e820..195aa3f77a 100644 --- a/agent/xds/testdata/routes/connect-proxy-lb-in-resolver.latest.golden +++ b/agent/xds/testdata/routes/connect-proxy-lb-in-resolver.latest.golden @@ -57,8 +57,7 @@ "name": "db.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul", "weight": 450 } - ], - "totalWeight": 10000 + ] } } } diff --git a/agent/xds/testdata/routes/connect-proxy-with-chain-and-router.latest.golden b/agent/xds/testdata/routes/connect-proxy-with-chain-and-router.latest.golden index 958709e347..0075347487 100644 --- a/agent/xds/testdata/routes/connect-proxy-with-chain-and-router.latest.golden +++ b/agent/xds/testdata/routes/connect-proxy-with-chain-and-router.latest.golden @@ -360,8 +360,7 @@ "name": "lil-bit-side.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul", "weight": 50 } - ], - "totalWeight": 10000 + ] } } }, diff --git a/agent/xds/testdata/routes/connect-proxy-with-chain-and-splitter.latest.golden b/agent/xds/testdata/routes/connect-proxy-with-chain-and-splitter.latest.golden index 2b223aef99..e654d9aa4d 100644 --- a/agent/xds/testdata/routes/connect-proxy-with-chain-and-splitter.latest.golden +++ b/agent/xds/testdata/routes/connect-proxy-with-chain-and-splitter.latest.golden @@ -125,8 +125,7 @@ ], "weight": 50 } - ], - "totalWeight": 10000 + ] } } } diff --git a/agent/xds/testdata/routes/ingress-lb-in-resolver.latest.golden b/agent/xds/testdata/routes/ingress-lb-in-resolver.latest.golden index 9660fb81a6..71f6e9893f 100644 --- a/agent/xds/testdata/routes/ingress-lb-in-resolver.latest.golden +++ b/agent/xds/testdata/routes/ingress-lb-in-resolver.latest.golden @@ -58,8 +58,7 @@ "name": "db.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul", "weight": 450 } - ], - "totalWeight": 10000 + ] } } } diff --git a/agent/xds/testdata/routes/ingress-splitter-with-resolver-redirect.latest.golden b/agent/xds/testdata/routes/ingress-splitter-with-resolver-redirect.latest.golden index bf15c92982..d3a2ea2219 100644 --- a/agent/xds/testdata/routes/ingress-splitter-with-resolver-redirect.latest.golden +++ b/agent/xds/testdata/routes/ingress-splitter-with-resolver-redirect.latest.golden @@ -28,8 +28,7 @@ "name": "v2.db.default.dc2.internal.11111111-2222-3333-4444-555555555555.consul", "weight": 5000 } - ], - "totalWeight": 10000 + ] } } } diff --git a/agent/xds/testdata/routes/ingress-with-chain-and-router-header-manip.latest.golden b/agent/xds/testdata/routes/ingress-with-chain-and-router-header-manip.latest.golden index 2a55ed3395..7c92fc2f65 100644 --- a/agent/xds/testdata/routes/ingress-with-chain-and-router-header-manip.latest.golden +++ b/agent/xds/testdata/routes/ingress-with-chain-and-router-header-manip.latest.golden @@ -399,8 +399,7 @@ "name": "lil-bit-side.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul", "weight": 50 } - ], - "totalWeight": 10000 + ] } } }, diff --git a/agent/xds/testdata/routes/ingress-with-chain-and-router.latest.golden b/agent/xds/testdata/routes/ingress-with-chain-and-router.latest.golden index dac7fbcf0f..b7c4114a4c 100644 --- a/agent/xds/testdata/routes/ingress-with-chain-and-router.latest.golden +++ b/agent/xds/testdata/routes/ingress-with-chain-and-router.latest.golden @@ -361,8 +361,7 @@ "name": "lil-bit-side.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul", "weight": 50 } - ], - "totalWeight": 10000 + ] } } }, diff --git a/agent/xds/testdata/routes/ingress-with-chain-and-splitter.latest.golden b/agent/xds/testdata/routes/ingress-with-chain-and-splitter.latest.golden index c8e50d10c7..f85d5c038f 100644 --- a/agent/xds/testdata/routes/ingress-with-chain-and-splitter.latest.golden +++ b/agent/xds/testdata/routes/ingress-with-chain-and-splitter.latest.golden @@ -126,8 +126,7 @@ ], "weight": 50 } - ], - "totalWeight": 10000 + ] } } } diff --git a/agent/xds/testdata/routes/mesh-gateway-with-exported-peered-services-http-with-router.latest.golden b/agent/xds/testdata/routes/mesh-gateway-with-exported-peered-services-http-with-router.latest.golden index 825473467d..74385c3103 100644 --- a/agent/xds/testdata/routes/mesh-gateway-with-exported-peered-services-http-with-router.latest.golden +++ b/agent/xds/testdata/routes/mesh-gateway-with-exported-peered-services-http-with-router.latest.golden @@ -27,8 +27,7 @@ "name": "exported~db.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul", "weight": 4000 } - ], - "totalWeight": 10000 + ] } } }, diff --git a/agent/xds/testdata/routes/splitter-with-resolver-redirect.latest.golden b/agent/xds/testdata/routes/splitter-with-resolver-redirect.latest.golden index 8c19228600..40722e65ce 100644 --- a/agent/xds/testdata/routes/splitter-with-resolver-redirect.latest.golden +++ b/agent/xds/testdata/routes/splitter-with-resolver-redirect.latest.golden @@ -27,8 +27,7 @@ "name": "v2.db.default.dc2.internal.11111111-2222-3333-4444-555555555555.consul", "weight": 5000 } - ], - "totalWeight": 10000 + ] } } } diff --git a/agent/xds/testdata/routes/xds-fetch-timeout-ms-ingress-with-router.latest.golden b/agent/xds/testdata/routes/xds-fetch-timeout-ms-ingress-with-router.latest.golden index dac7fbcf0f..b7c4114a4c 100644 --- a/agent/xds/testdata/routes/xds-fetch-timeout-ms-ingress-with-router.latest.golden +++ b/agent/xds/testdata/routes/xds-fetch-timeout-ms-ingress-with-router.latest.golden @@ -361,8 +361,7 @@ "name": "lil-bit-side.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul", "weight": 50 } - ], - "totalWeight": 10000 + ] } } }, diff --git a/agent/xds/testdata/routes/xds-fetch-timeout-ms-sidecar.latest.golden b/agent/xds/testdata/routes/xds-fetch-timeout-ms-sidecar.latest.golden index 958709e347..0075347487 100644 --- a/agent/xds/testdata/routes/xds-fetch-timeout-ms-sidecar.latest.golden +++ b/agent/xds/testdata/routes/xds-fetch-timeout-ms-sidecar.latest.golden @@ -360,8 +360,7 @@ "name": "lil-bit-side.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul", "weight": 50 } - ], - "totalWeight": 10000 + ] } } }, diff --git a/agent/xdsv2/route_resources.go b/agent/xdsv2/route_resources.go index 073b89d22c..afbb7f26d4 100644 --- a/agent/xdsv2/route_resources.go +++ b/agent/xdsv2/route_resources.go @@ -264,22 +264,15 @@ func (pr *ProxyResources) makeEnvoyRouteActionFromProxystateRouteDestination(psR case *pbproxystate.RouteDestination_WeightedClusters: psWeightedClusters := psRouteDestination.GetWeightedClusters() envoyClusters := make([]*envoy_route_v3.WeightedCluster_ClusterWeight, 0, len(psWeightedClusters.GetClusters())) - totalWeight := 0 for _, psCluster := range psWeightedClusters.GetClusters() { pr.addEnvoyClustersAndEndpointsToEnvoyResources(psCluster.Name) - totalWeight += int(psCluster.Weight.GetValue()) envoyClusters = append(envoyClusters, makeEnvoyClusterWeightFromProxystateWeightedCluster(psCluster)) } - var envoyWeightScale *wrapperspb.UInt32Value - if totalWeight == 10000 { - envoyWeightScale = response.MakeUint32Value(10000) - } envoyRouteRoute.Route.ClusterSpecifier = &envoy_route_v3.RouteAction_WeightedClusters{ WeightedClusters: &envoy_route_v3.WeightedCluster{ - Clusters: envoyClusters, - TotalWeight: envoyWeightScale, + Clusters: envoyClusters, }, } default: diff --git a/troubleshoot/proxy/testdata/upstreams/config.json b/troubleshoot/proxy/testdata/upstreams/config.json index 735e329597..62a8d29787 100644 --- a/troubleshoot/proxy/testdata/upstreams/config.json +++ b/troubleshoot/proxy/testdata/upstreams/config.json @@ -174,8 +174,7 @@ "name": "backend2.default.dc1.internal.domain.consul", "weight": 5000 } - ], - "total_weight": 10000 + ] } } }