Skip to content

Commit

Permalink
Convert load balancing policy to TypedExtensionConfig
Browse files Browse the repository at this point in the history
Removes LoadBalancingPolicy.Policy type from v4alpha. Changes the type of an unimplemented field.

Signed-off-by: Eugene Chan <eugenechan@google.com>
  • Loading branch information
pianiststickman committed Aug 3, 2021
1 parent 13dc8db commit f362afd
Show file tree
Hide file tree
Showing 10 changed files with 16 additions and 44 deletions.
3 changes: 2 additions & 1 deletion api/envoy/config/cluster/v3/cluster.proto
Original file line number Diff line number Diff line change
Expand Up @@ -1094,6 +1094,7 @@ message Cluster {
message LoadBalancingPolicy {
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.LoadBalancingPolicy";

// Deprecated and replaced by TypedExtensionConfig.
message Policy {
option (udpa.annotations.versioning).previous_message_type =
"envoy.api.v2.LoadBalancingPolicy.Policy";
Expand All @@ -1111,7 +1112,7 @@ message LoadBalancingPolicy {
// Each client will iterate over the list in order and stop at the first policy that it
// supports. This provides a mechanism for starting to use new LB policies that are not yet
// supported by all clients.
repeated Policy policies = 1;
repeated core.v3.TypedExtensionConfig policies = 1;
}

// An extensible structure containing the address Envoy should bind to when
Expand Down
16 changes: 1 addition & 15 deletions api/envoy/config/cluster/v4alpha/cluster.proto

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion envoy/upstream/load_balancer.h
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ class TypedLoadBalancerFactory : public Config::UntypedFactory {
virtual ThreadAwareLoadBalancerPtr
create(const PrioritySet& priority_set, ClusterStats& stats, Stats::Scope& stats_scope,
Runtime::Loader& runtime, Random::RandomGenerator& random,
const ::envoy::config::cluster::v3::LoadBalancingPolicy::Policy& lb_policy) PURE;
const ::envoy::config::core::v3::TypedExtensionConfig& lb_policy) PURE;

std::string category() const override { return "envoy.load_balancers"; }
};
Expand Down
7 changes: 3 additions & 4 deletions envoy/upstream/upstream.h
Original file line number Diff line number Diff line change
Expand Up @@ -787,11 +787,10 @@ class ClusterInfo {
}

/**
* @return const envoy::config::cluster::v3::LoadBalancingPolicy_Policy& the load balancing policy
* to use for this cluster.
* @return const envoy::config::core::v3::TypedExtensionConfig& the load balancing policy to use
* for this cluster.
*/
virtual const envoy::config::cluster::v3::LoadBalancingPolicy_Policy&
loadBalancingPolicy() const PURE;
virtual const envoy::config::core::v3::TypedExtensionConfig& loadBalancingPolicy() const PURE;

/**
* @return const envoy::config::cluster::v3::Cluster::CommonLbConfig& the common configuration for
Expand Down
3 changes: 2 additions & 1 deletion generated_api_shadow/envoy/config/cluster/v3/cluster.proto

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 1 addition & 15 deletions generated_api_shadow/envoy/config/cluster/v4alpha/cluster.proto

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion source/common/upstream/upstream_impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -821,7 +821,7 @@ ClusterInfoImpl::ClusterInfoImpl(
const auto& lb_policy =
std::find_if(config.load_balancing_policy().policies().begin(),
config.load_balancing_policy().policies().end(),
[](envoy::config::cluster::v3::LoadBalancingPolicy_Policy policy) {
[](const envoy::config::core::v3::TypedExtensionConfig& policy) {
return Registry::FactoryRegistry<TypedLoadBalancerFactory>::getFactory(
policy.name()) != nullptr;
});
Expand Down
5 changes: 2 additions & 3 deletions source/common/upstream/upstream_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -568,8 +568,7 @@ class ClusterInfoImpl : public ClusterInfo,

// Upstream::ClusterInfo
bool addedViaApi() const override { return added_via_api_; }
const envoy::config::cluster::v3::LoadBalancingPolicy_Policy&
loadBalancingPolicy() const override {
const envoy::config::core::v3::TypedExtensionConfig& loadBalancingPolicy() const override {
return load_balancing_policy_;
}
const envoy::config::cluster::v3::Cluster::CommonLbConfig& lbConfig() const override {
Expand Down Expand Up @@ -755,7 +754,7 @@ class ClusterInfoImpl : public ClusterInfo,
LoadBalancerSubsetInfoImpl lb_subset_;
const envoy::config::core::v3::Metadata metadata_;
Envoy::Config::TypedMetadataImpl<ClusterTypedMetadataFactory> typed_metadata_;
envoy::config::cluster::v3::LoadBalancingPolicy_Policy load_balancing_policy_;
envoy::config::core::v3::TypedExtensionConfig load_balancing_policy_;
const envoy::config::cluster::v3::Cluster::CommonLbConfig common_lb_config_;
const Network::ConnectionSocket::OptionsSharedPtr cluster_socket_options_;
const bool drain_connections_on_host_removal_;
Expand Down
2 changes: 1 addition & 1 deletion test/common/upstream/cluster_manager_impl_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -761,7 +761,7 @@ class CustomLbFactory : public TypedLoadBalancerFactoryBase {
ThreadAwareLoadBalancerPtr
create(const PrioritySet&, ClusterStats&, Stats::Scope&, Runtime::Loader&,
Random::RandomGenerator&,
const ::envoy::config::cluster::v3::LoadBalancingPolicy::Policy&) override {
const ::envoy::config::core::v3::TypedExtensionConfig&) override {
return std::make_unique<ThreadAwareLbImpl>();
}

Expand Down
4 changes: 2 additions & 2 deletions test/mocks/upstream/cluster_info.h
Original file line number Diff line number Diff line change
Expand Up @@ -105,8 +105,8 @@ class MockClusterInfo : public ClusterInfo {
(const));
MOCK_METHOD(ProtocolOptionsConfigConstSharedPtr, extensionProtocolOptions, (const std::string&),
(const));
MOCK_METHOD(const envoy::config::cluster::v3::LoadBalancingPolicy_Policy&, loadBalancingPolicy,
(), (const));
MOCK_METHOD(const envoy::config::core::v3::TypedExtensionConfig&, loadBalancingPolicy, (),
(const));
MOCK_METHOD(const envoy::config::cluster::v3::Cluster::CommonLbConfig&, lbConfig, (), (const));
MOCK_METHOD(LoadBalancerType, lbType, (), (const));
MOCK_METHOD(envoy::config::cluster::v3::Cluster::DiscoveryType, type, (), (const));
Expand Down

0 comments on commit f362afd

Please sign in to comment.