mirror of https://github.com/status-im/consul.git
NET-6943 - Replace usage of deprecated Envoy field envoy.config.router.v3.WeightedCluster.total_weight. (#20011)
This commit is contained in:
parent
90cd56c5c3
commit
2f335113f8
|
@ -0,0 +1,3 @@
|
|||
```release-note:improvement
|
||||
connect: replace usage of deprecated Envoy field `envoy.config.router.v3.WeightedCluster.total_weight`.
|
||||
```
|
|
@ -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%
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
|
@ -28,8 +28,7 @@
|
|||
"name": "v2.db.default.dc2.internal.11111111-2222-3333-4444-555555555555.consul",
|
||||
"weight": 5000
|
||||
}
|
||||
],
|
||||
"totalWeight": 10000
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -57,8 +57,7 @@
|
|||
"name": "db.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul",
|
||||
"weight": 450
|
||||
}
|
||||
],
|
||||
"totalWeight": 10000
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -360,8 +360,7 @@
|
|||
"name": "lil-bit-side.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul",
|
||||
"weight": 50
|
||||
}
|
||||
],
|
||||
"totalWeight": 10000
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
@ -125,8 +125,7 @@
|
|||
],
|
||||
"weight": 50
|
||||
}
|
||||
],
|
||||
"totalWeight": 10000
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -58,8 +58,7 @@
|
|||
"name": "db.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul",
|
||||
"weight": 450
|
||||
}
|
||||
],
|
||||
"totalWeight": 10000
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,8 +28,7 @@
|
|||
"name": "v2.db.default.dc2.internal.11111111-2222-3333-4444-555555555555.consul",
|
||||
"weight": 5000
|
||||
}
|
||||
],
|
||||
"totalWeight": 10000
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -399,8 +399,7 @@
|
|||
"name": "lil-bit-side.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul",
|
||||
"weight": 50
|
||||
}
|
||||
],
|
||||
"totalWeight": 10000
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
@ -361,8 +361,7 @@
|
|||
"name": "lil-bit-side.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul",
|
||||
"weight": 50
|
||||
}
|
||||
],
|
||||
"totalWeight": 10000
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
@ -126,8 +126,7 @@
|
|||
],
|
||||
"weight": 50
|
||||
}
|
||||
],
|
||||
"totalWeight": 10000
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,8 +27,7 @@
|
|||
"name": "exported~db.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul",
|
||||
"weight": 4000
|
||||
}
|
||||
],
|
||||
"totalWeight": 10000
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
@ -27,8 +27,7 @@
|
|||
"name": "v2.db.default.dc2.internal.11111111-2222-3333-4444-555555555555.consul",
|
||||
"weight": 5000
|
||||
}
|
||||
],
|
||||
"totalWeight": 10000
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -361,8 +361,7 @@
|
|||
"name": "lil-bit-side.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul",
|
||||
"weight": 50
|
||||
}
|
||||
],
|
||||
"totalWeight": 10000
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
@ -360,8 +360,7 @@
|
|||
"name": "lil-bit-side.default.dc1.internal.11111111-2222-3333-4444-555555555555.consul",
|
||||
"weight": 50
|
||||
}
|
||||
],
|
||||
"totalWeight": 10000
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
@ -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,
|
||||
},
|
||||
}
|
||||
default:
|
||||
|
|
|
@ -174,8 +174,7 @@
|
|||
"name": "backend2.default.dc1.internal.domain.consul",
|
||||
"weight": 5000
|
||||
}
|
||||
],
|
||||
"total_weight": 10000
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue