Skip to content

Commit

Permalink
router: remove deprecated runtime flag (envoyproxy#31151)
Browse files Browse the repository at this point in the history
Signed-off-by: wbpcode <[email protected]>
  • Loading branch information
code authored Dec 4, 2023
1 parent a344c17 commit 6b63820
Show file tree
Hide file tree
Showing 23 changed files with 106 additions and 610 deletions.
4 changes: 4 additions & 0 deletions changelogs/current.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,10 @@ removed_config_or_runtime:
change: |
Removed the deprecated ``envoy.reloadable_features.format_ports_as_numbers``
runtime flag and legacy code path.
- area: router
change: |
Removed the deprecated ``envoy.reloadable_features.ignore_optional_option_from_hcm_for_route_config``
runtime flag and legacy code path.
new_features:
- area: filters
Expand Down
5 changes: 0 additions & 5 deletions envoy/router/route_config_provider_manager.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ namespace Router {
class RouteConfigProviderManager {
public:
virtual ~RouteConfigProviderManager() = default;
using OptionalHttpFilters = absl::flat_hash_set<std::string>;

/**
* Get a RouteConfigProviderPtr for a route from RDS. Ownership of the RouteConfigProvider is the
Expand All @@ -34,29 +33,25 @@ class RouteConfigProviderManager {
* the RouteConfigProvider. This method creates a RouteConfigProvider which may share the
* underlying RDS subscription with the same (route_config_name, cluster).
* @param rds supplies the proto configuration of an RDS-configured RouteConfigProvider.
* @param optional_http_filters a set of optional http filter names.
* @param factory_context is the context to use for the route config provider.
* @param stat_prefix supplies the stat_prefix to use for the provider stats.
* @param init_manager the Init::Manager used to coordinate initialization of a the underlying RDS
* subscription.
*/
virtual RouteConfigProviderSharedPtr createRdsRouteConfigProvider(
const envoy::extensions::filters::network::http_connection_manager::v3::Rds& rds,
const OptionalHttpFilters& optional_http_filters,
Server::Configuration::ServerFactoryContext& factory_context, const std::string& stat_prefix,
Init::Manager& init_manager) PURE;

/**
* Get a RouteConfigSharedPtr for a statically defined route. Ownership is as described for
* getRdsRouteConfigProvider above. This method always create a new RouteConfigProvider.
* @param route_config supplies the RouteConfiguration for this route
* @param optional_http_filters a set of optional http filter names.
* @param factory_context is the context to use for the route config provider.
* @param validator is the message validator for route config.
*/
virtual RouteConfigProviderPtr
createStaticRouteConfigProvider(const envoy::config::route::v3::RouteConfiguration& route_config,
const OptionalHttpFilters& optional_http_filters,
Server::Configuration::ServerFactoryContext& factory_context,
ProtobufMessage::ValidationVisitor& validator) PURE;
};
Expand Down
120 changes: 38 additions & 82 deletions source/common/router/config_impl.cc

Large diffs are not rendered by default.

19 changes: 1 addition & 18 deletions source/common/router/config_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,6 @@ class Matchable {
virtual bool supportsPathlessHeaders() const { return false; }
};

using OptionalHttpFilters = absl::flat_hash_set<std::string>;

class PerFilterConfigs : public Logger::Loggable<Logger::Id::http> {
public:
struct FilterConfig {
Expand All @@ -90,7 +88,6 @@ class PerFilterConfigs : public Logger::Loggable<Logger::Id::http> {
};

PerFilterConfigs(const Protobuf::Map<std::string, ProtobufWkt::Any>& typed_configs,
const OptionalHttpFilters& optional_http_filters,
Server::Configuration::ServerFactoryContext& factory_context,
ProtobufMessage::ValidationVisitor& validator);

Expand Down Expand Up @@ -238,7 +235,6 @@ using CommonConfigSharedPtr = std::shared_ptr<CommonConfigImpl>;
class CommonVirtualHostImpl : public VirtualHost, Logger::Loggable<Logger::Id::router> {
public:
CommonVirtualHostImpl(const envoy::config::route::v3::VirtualHost& virtual_host,
const OptionalHttpFilters& optional_http_filters,
const CommonConfigSharedPtr& global_route_config,
Server::Configuration::ServerFactoryContext& factory_context,
Stats::Scope& scope, ProtobufMessage::ValidationVisitor& validator);
Expand Down Expand Up @@ -366,7 +362,6 @@ class VirtualHostImpl : Logger::Loggable<Logger::Id::router> {
public:
VirtualHostImpl(
const envoy::config::route::v3::VirtualHost& virtual_host,
const OptionalHttpFilters& optional_http_filters,
const CommonConfigSharedPtr& global_route_config,
Server::Configuration::ServerFactoryContext& factory_context, Stats::Scope& scope,
ProtobufMessage::ValidationVisitor& validator,
Expand Down Expand Up @@ -613,7 +608,6 @@ class RouteEntryImplBase : public RouteEntryAndRoute,
*/
RouteEntryImplBase(const CommonVirtualHostSharedPtr& vhost,
const envoy::config::route::v3::Route& route,
const OptionalHttpFilters& optional_http_filters,
Server::Configuration::ServerFactoryContext& factory_context,
ProtobufMessage::ValidationVisitor& validator);

Expand Down Expand Up @@ -955,8 +949,7 @@ class RouteEntryImplBase : public RouteEntryAndRoute,
WeightedClusterEntry(const RouteEntryImplBase* parent, const std::string& rutime_key,
Server::Configuration::ServerFactoryContext& factory_context,
ProtobufMessage::ValidationVisitor& validator,
const envoy::config::route::v3::WeightedCluster::ClusterWeight& cluster,
const OptionalHttpFilters& optional_http_filters);
const envoy::config::route::v3::WeightedCluster::ClusterWeight& cluster);

uint64_t clusterWeight() const {
return loader_.snapshot().getInteger(runtime_key_, cluster_weight_);
Expand Down Expand Up @@ -1230,7 +1223,6 @@ class UriTemplateMatcherRouteEntryImpl : public RouteEntryImplBase {
public:
UriTemplateMatcherRouteEntryImpl(const CommonVirtualHostSharedPtr& vhost,
const envoy::config::route::v3::Route& route,
const OptionalHttpFilters& optional_http_filters,
Server::Configuration::ServerFactoryContext& factory_context,
ProtobufMessage::ValidationVisitor& validator);

Expand Down Expand Up @@ -1262,7 +1254,6 @@ class PrefixRouteEntryImpl : public RouteEntryImplBase {
public:
PrefixRouteEntryImpl(const CommonVirtualHostSharedPtr& vhost,
const envoy::config::route::v3::Route& route,
const OptionalHttpFilters& optional_http_filters,
Server::Configuration::ServerFactoryContext& factory_context,
ProtobufMessage::ValidationVisitor& validator);

Expand Down Expand Up @@ -1296,7 +1287,6 @@ class PathRouteEntryImpl : public RouteEntryImplBase {
public:
PathRouteEntryImpl(const CommonVirtualHostSharedPtr& vhost,
const envoy::config::route::v3::Route& route,
const OptionalHttpFilters& optional_http_filters,
Server::Configuration::ServerFactoryContext& factory_context,
ProtobufMessage::ValidationVisitor& validator);

Expand Down Expand Up @@ -1330,7 +1320,6 @@ class RegexRouteEntryImpl : public RouteEntryImplBase {
public:
RegexRouteEntryImpl(const CommonVirtualHostSharedPtr& vhost,
const envoy::config::route::v3::Route& route,
const OptionalHttpFilters& optional_http_filters,
Server::Configuration::ServerFactoryContext& factory_context,
ProtobufMessage::ValidationVisitor& validator);

Expand Down Expand Up @@ -1365,7 +1354,6 @@ class ConnectRouteEntryImpl : public RouteEntryImplBase {
public:
ConnectRouteEntryImpl(const CommonVirtualHostSharedPtr& vhost,
const envoy::config::route::v3::Route& route,
const OptionalHttpFilters& optional_http_filters,
Server::Configuration::ServerFactoryContext& factory_context,
ProtobufMessage::ValidationVisitor& validator);

Expand Down Expand Up @@ -1395,7 +1383,6 @@ class PathSeparatedPrefixRouteEntryImpl : public RouteEntryImplBase {
public:
PathSeparatedPrefixRouteEntryImpl(const CommonVirtualHostSharedPtr& vhost,
const envoy::config::route::v3::Route& route,
const OptionalHttpFilters& optional_http_filters,
Server::Configuration::ServerFactoryContext& factory_context,
ProtobufMessage::ValidationVisitor& validator);

Expand Down Expand Up @@ -1425,7 +1412,6 @@ class PathSeparatedPrefixRouteEntryImpl : public RouteEntryImplBase {
// Contextual information used to construct the route actions for a match tree.
struct RouteActionContext {
const CommonVirtualHostSharedPtr& vhost;
const OptionalHttpFilters& optional_http_filters;
Server::Configuration::ServerFactoryContext& factory_context;
};

Expand Down Expand Up @@ -1487,7 +1473,6 @@ DECLARE_FACTORY(RouteListMatchActionFactory);
class RouteMatcher {
public:
RouteMatcher(const envoy::config::route::v3::RouteConfiguration& config,
const OptionalHttpFilters& optional_http_filters,
const CommonConfigSharedPtr& global_route_config,
Server::Configuration::ServerFactoryContext& factory_context,
ProtobufMessage::ValidationVisitor& validator, bool validate_clusters);
Expand Down Expand Up @@ -1530,7 +1515,6 @@ class RouteMatcher {
class CommonConfigImpl : public CommonConfig {
public:
CommonConfigImpl(const envoy::config::route::v3::RouteConfiguration& config,
const OptionalHttpFilters& optional_http_filters,
Server::Configuration::ServerFactoryContext& factory_context,
ProtobufMessage::ValidationVisitor& validator);

Expand Down Expand Up @@ -1598,7 +1582,6 @@ class CommonConfigImpl : public CommonConfig {
class ConfigImpl : public Config {
public:
ConfigImpl(const envoy::config::route::v3::RouteConfiguration& config,
const OptionalHttpFilters& optional_http_filters,
Server::Configuration::ServerFactoryContext& factory_context,
ProtobufMessage::ValidationVisitor& validator, bool validate_clusters_default);

Expand Down
32 changes: 11 additions & 21 deletions source/common/router/rds_impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -28,24 +28,18 @@ RouteConfigProviderSharedPtr RouteConfigProviderUtil::create(
Server::Configuration::ServerFactoryContext& factory_context,
ProtobufMessage::ValidationVisitor& validator, Init::Manager& init_manager,
const std::string& stat_prefix, RouteConfigProviderManager& route_config_provider_manager) {
OptionalHttpFilters optional_http_filters;
auto& filters = config.http_filters();
for (const auto& filter : filters) {
if (filter.is_optional()) {
optional_http_filters.insert(filter.name());
}
}

switch (config.route_specifier_case()) {
case envoy::extensions::filters::network::http_connection_manager::v3::HttpConnectionManager::
RouteSpecifierCase::kRouteConfig:
return route_config_provider_manager.createStaticRouteConfigProvider(
config.route_config(), optional_http_filters, factory_context, validator);
config.route_config(), factory_context, validator);
case envoy::extensions::filters::network::http_connection_manager::v3::HttpConnectionManager::
RouteSpecifierCase::kRds:
return route_config_provider_manager.createRdsRouteConfigProvider(
// At the creation of a RDS route config provider, the factory_context's initManager is
// always valid, though the init manager may go away later when the listener goes away.
config.rds(), optional_http_filters, factory_context, stat_prefix, init_manager);
config.rds(), factory_context, stat_prefix, init_manager);
case envoy::extensions::filters::network::http_connection_manager::v3::HttpConnectionManager::
RouteSpecifierCase::kScopedRoutes:
FALLTHRU; // PANIC
Expand Down Expand Up @@ -228,15 +222,13 @@ RouteConfigProviderManagerImpl::RouteConfigProviderManagerImpl(OptRef<Server::Ad

Router::RouteConfigProviderSharedPtr RouteConfigProviderManagerImpl::createRdsRouteConfigProvider(
const envoy::extensions::filters::network::http_connection_manager::v3::Rds& rds,
const OptionalHttpFilters& optional_http_filters,
Server::Configuration::ServerFactoryContext& factory_context, const std::string& stat_prefix,
Init::Manager& init_manager) {
auto provider = manager_.addDynamicProvider(
rds, rds.route_config_name(), init_manager,
[&optional_http_filters, &factory_context, &rds, &stat_prefix,
this](uint64_t manager_identifier) {
auto config_update = std::make_unique<RouteConfigUpdateReceiverImpl>(
proto_traits_, factory_context, optional_http_filters);
[&factory_context, &rds, &stat_prefix, this](uint64_t manager_identifier) {
auto config_update =
std::make_unique<RouteConfigUpdateReceiverImpl>(proto_traits_, factory_context);
auto resource_decoder = std::make_shared<
Envoy::Config::OpaqueResourceDecoderImpl<envoy::config::route::v3::RouteConfiguration>>(
factory_context.messageValidationContext().dynamicValidationVisitor(), "name");
Expand All @@ -253,15 +245,13 @@ Router::RouteConfigProviderSharedPtr RouteConfigProviderManagerImpl::createRdsRo

RouteConfigProviderPtr RouteConfigProviderManagerImpl::createStaticRouteConfigProvider(
const envoy::config::route::v3::RouteConfiguration& route_config,
const OptionalHttpFilters& optional_http_filters,
Server::Configuration::ServerFactoryContext& factory_context,
ProtobufMessage::ValidationVisitor& validator) {
auto provider = manager_.addStaticProvider(
[&optional_http_filters, &factory_context, &validator, &route_config, this]() {
ConfigTraitsImpl config_traits(optional_http_filters, validator);
return std::make_unique<StaticRouteConfigProviderImpl>(route_config, config_traits,
factory_context, manager_);
});
auto provider = manager_.addStaticProvider([&factory_context, &validator, &route_config, this]() {
ConfigTraitsImpl config_traits(validator);
return std::make_unique<StaticRouteConfigProviderImpl>(route_config, config_traits,
factory_context, manager_);
});
ASSERT(dynamic_cast<RouteConfigProvider*>(provider.get()));
return RouteConfigProviderPtr(static_cast<RouteConfigProvider*>(provider.release()));
}
Expand Down
2 changes: 0 additions & 2 deletions source/common/router/rds_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -189,13 +189,11 @@ class RouteConfigProviderManagerImpl : public RouteConfigProviderManager,
// RouteConfigProviderManager
RouteConfigProviderSharedPtr createRdsRouteConfigProvider(
const envoy::extensions::filters::network::http_connection_manager::v3::Rds& rds,
const OptionalHttpFilters& optional_http_filters,
Server::Configuration::ServerFactoryContext& factory_context, const std::string& stat_prefix,
Init::Manager& init_manager) override;

RouteConfigProviderPtr
createStaticRouteConfigProvider(const envoy::config::route::v3::RouteConfiguration& route_config,
const OptionalHttpFilters& optional_http_filters,
Server::Configuration::ServerFactoryContext& factory_context,
ProtobufMessage::ValidationVisitor& validator) override;

Expand Down
4 changes: 2 additions & 2 deletions source/common/router/route_config_update_receiver_impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,8 @@ ConfigTraitsImpl::createConfig(const Protobuf::Message& rc,
bool validate_clusters_default) const {
ASSERT(dynamic_cast<const envoy::config::route::v3::RouteConfiguration*>(&rc));
return std::make_shared<ConfigImpl>(
static_cast<const envoy::config::route::v3::RouteConfiguration&>(rc), optional_http_filters_,
factory_context, validator_, validate_clusters_default);
static_cast<const envoy::config::route::v3::RouteConfiguration&>(rc), factory_context,
validator_, validate_clusters_default);
}

bool RouteConfigUpdateReceiverImpl::onRdsUpdate(const Protobuf::Message& rc,
Expand Down
11 changes: 3 additions & 8 deletions source/common/router/route_config_update_receiver_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,27 +20,22 @@ namespace Router {

class ConfigTraitsImpl : public Rds::ConfigTraits {
public:
ConfigTraitsImpl(const OptionalHttpFilters& optional_http_filters,
ProtobufMessage::ValidationVisitor& validator)
: optional_http_filters_(optional_http_filters), validator_(validator) {}
ConfigTraitsImpl(ProtobufMessage::ValidationVisitor& validator) : validator_(validator) {}

Rds::ConfigConstSharedPtr createNullConfig() const override;
Rds::ConfigConstSharedPtr createConfig(const Protobuf::Message& rc,
Server::Configuration::ServerFactoryContext& context,
bool validate_clusters_default) const override;

private:
const OptionalHttpFilters optional_http_filters_;
ProtobufMessage::ValidationVisitor& validator_;
};

class RouteConfigUpdateReceiverImpl : public RouteConfigUpdateReceiver {
public:
RouteConfigUpdateReceiverImpl(Rds::ProtoTraits& proto_traits,
Server::Configuration::ServerFactoryContext& factory_context,
const OptionalHttpFilters& optional_http_filters)
: config_traits_(optional_http_filters,
factory_context.messageValidationContext().dynamicValidationVisitor()),
Server::Configuration::ServerFactoryContext& factory_context)
: config_traits_(factory_context.messageValidationContext().dynamicValidationVisitor()),
base_(config_traits_, proto_traits, factory_context) {}

using VirtualHostMap = std::map<std::string, envoy::config::route::v3::VirtualHost>;
Expand Down
Loading

0 comments on commit 6b63820

Please sign in to comment.