Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions api/envoy/admin/v3/config_dump.proto
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,6 @@ message ConfigDump {
//
// * ``bootstrap``: :ref:`BootstrapConfigDump <envoy_v3_api_msg_admin.v3.BootstrapConfigDump>`
// * ``clusters``: :ref:`ClustersConfigDump <envoy_v3_api_msg_admin.v3.ClustersConfigDump>`
// * ``ecds_filter_http``: :ref:`EcdsConfigDump <envoy_v3_api_msg_admin.v3.EcdsConfigDump>`
// * ``ecds_filter_tcp_listener``: :ref:`EcdsConfigDump <envoy_v3_api_msg_admin.v3.EcdsConfigDump>`
// * ``endpoints``: :ref:`EndpointsConfigDump <envoy_v3_api_msg_admin.v3.EndpointsConfigDump>`
// * ``listeners``: :ref:`ListenersConfigDump <envoy_v3_api_msg_admin.v3.ListenersConfigDump>`
// * ``scoped_routes``: :ref:`ScopedRoutesConfigDump <envoy_v3_api_msg_admin.v3.ScopedRoutesConfigDump>`
Expand All @@ -42,9 +40,6 @@ message ConfigDump {
//
// EDS Configuration will only be dumped by using parameter ``?include_eds``
//
// Currently ECDS is supported in HTTP and listener filters. Note, ECDS configuration for
// either HTTP or listener filter will only be dumped if it is actually configured.
//
// You can filter output with the resource and mask query parameters.
// See :ref:`/config_dump?resource={} <operations_admin_interface_config_dump_by_resource>`,
// :ref:`/config_dump?mask={} <operations_admin_interface_config_dump_by_mask>`,
Expand Down
40 changes: 0 additions & 40 deletions api/envoy/admin/v3/config_dump_shared.proto
Original file line number Diff line number Diff line change
Expand Up @@ -370,43 +370,3 @@ message EndpointsConfigDump {
// The dynamically loaded endpoint configs.
repeated DynamicEndpointConfig dynamic_endpoint_configs = 3;
}

// Envoy's ECDS service fills this message with all currently extension
// configuration. Extension configuration information can be used to recreate
// an Envoy ECDS listener and HTTP filters as static filters or by returning
// them in ECDS response.
message EcdsConfigDump {
option (udpa.annotations.versioning).previous_message_type = "envoy.admin.v2alpha.EcdsConfigDump";

// [#next-free-field: 6]
message EcdsFilterConfig {
option (udpa.annotations.versioning).previous_message_type =
"envoy.admin.v2alpha.EcdsConfigDump.EcdsFilterConfig";

// This is the per-resource version information. This version is currently
// taken from the :ref:`version_info
// <envoy_v3_api_field_service.discovery.v3.DiscoveryResponse.version_info>`
// field at the time that the ECDS filter was loaded.
string version_info = 1;

// The ECDS filter config.
google.protobuf.Any ecds_filter = 2;

// The timestamp when the ECDS filter was last updated.
google.protobuf.Timestamp last_updated = 3;

// Set if the last update failed, cleared after the next successful update.
// The ``error_state`` field contains the rejected version of this
// particular resource along with the reason and timestamp. For successfully
// updated or acknowledged resource, this field should be empty.
// [#not-implemented-hide:]
UpdateFailureState error_state = 4;

// The client status of this resource.
// [#not-implemented-hide:]
ClientResourceStatus client_status = 5;
}

// The ECDS filter configs.
repeated EcdsFilterConfig ecds_filters = 1;
}
4 changes: 0 additions & 4 deletions docs/root/operations/admin.rst
Original file line number Diff line number Diff line change
Expand Up @@ -215,10 +215,6 @@ modify different aspects of the server:
- :ref:`envoy.extensions.transport_sockets.tls.v3.Secret <envoy_v3_api_field_extensions.transport_sockets.tls.v3.Secret.name>`
- :ref:`envoy.config.endpoint.v3.ClusterLoadAssignment <envoy_v3_api_field_config.endpoint.v3.ClusterLoadAssignment.cluster_name>`

For ECDS config dump, the matched name field is the corresponding filter name, which is stored in:

- :ref:`envoy.config.core.v3.TypedExtensionConfig.name <envoy_v3_api_field_config.core.v3.TypedExtensionConfig.name>`

.. _operations_admin_interface_config_dump_by_resource_and_mask:

.. http:get:: /config_dump?resource={}&mask={}
Expand Down
1 change: 0 additions & 1 deletion source/common/filter/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ envoy_cc_library(
"//source/common/init:target_lib",
"//source/common/init:watcher_lib",
"//source/common/protobuf:utility_lib",
"@envoy_api//envoy/admin/v3:pkg_cc_proto",
"@envoy_api//envoy/config/core/v3:pkg_cc_proto",
],
)
5 changes: 0 additions & 5 deletions source/common/filter/config_discovery_impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,6 @@ void FilterConfigSubscription::onConfigUpdate(
last_type_url_ = type_url;
last_version_info_ = version_info;
last_factory_name_ = factory_name;
last_updated_ = factory_context_.timeSource().systemTime();
}

void FilterConfigSubscription::onConfigUpdate(
Expand All @@ -152,7 +151,6 @@ void FilterConfigSubscription::onConfigUpdate(
last_type_url_ = "";
last_version_info_ = "";
last_factory_name_ = "";
last_updated_ = factory_context_.timeSource().systemTime();
} else if (!added_resources.empty()) {
onConfigUpdate(added_resources, added_resources[0].get().version());
}
Expand All @@ -179,9 +177,6 @@ void FilterConfigSubscription::incrementConflictCounter() { stats_.config_confli
std::shared_ptr<FilterConfigSubscription> FilterConfigProviderManagerImplBase::getSubscription(
const envoy::config::core::v3::ConfigSource& config_source, const std::string& name,
Server::Configuration::ServerFactoryContext& server_context, const std::string& stat_prefix) {
// There are ECDS filters configured. Setup ECDS config dump call backs.
setupEcdsConfigDumpCallbacks(server_context.admin());

// FilterConfigSubscriptions are unique based on their config source and filter config name
// combination.
// TODO(https://github.com/envoyproxy/envoy/issues/11967) Hash collision can cause subscription
Expand Down
51 changes: 0 additions & 51 deletions source/common/filter/config_discovery_impl.h
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
#pragma once

#include "envoy/admin/v3/config_dump.pb.h"
#include "envoy/config/core/v3/extension.pb.h"
#include "envoy/config/core/v3/extension.pb.validate.h"
#include "envoy/config/extension_config_provider.h"
#include "envoy/config/subscription.h"
#include "envoy/filter/config_provider_manager.h"
#include "envoy/http/filter.h"
#include "envoy/protobuf/message_validator.h"
#include "envoy/server/admin.h"
#include "envoy/server/factory_context.h"
#include "envoy/singleton/instance.h"
#include "envoy/stats/scope.h"
Expand Down Expand Up @@ -309,8 +307,6 @@ class FilterConfigSubscription
const std::string& lastTypeUrl() { return last_type_url_; }
const std::string& lastVersionInfo() { return last_version_info_; }
const std::string& lastFactoryName() { return last_factory_name_; }
const SystemTime& lastUpdated() { return last_updated_; }

void incrementConflictCounter();

private:
Expand All @@ -331,7 +327,6 @@ class FilterConfigSubscription
std::string last_type_url_;
std::string last_version_info_;
std::string last_factory_name_;
SystemTime last_updated_;
Server::Configuration::ServerFactoryContext& factory_context_;

Init::SharedTargetImpl init_target_;
Expand Down Expand Up @@ -392,47 +387,9 @@ class FilterConfigProviderManagerImplBase : Logger::Loggable<Logger::Id::filter>
absl::string_view type_url) const;
void validateProtoConfigTypeUrl(const std::string& type_url,
const absl::flat_hash_set<std::string>& require_type_urls) const;
// Return the config dump map key string for the corresponding ECDS filter type.
virtual const std::string getConfigDumpType() const PURE;

private:
void setupEcdsConfigDumpCallbacks(OptRef<Server::Admin> admin) {
if (!admin.has_value()) {
return;
}
if (config_tracker_entry_ == nullptr) {
config_tracker_entry_ = admin->getConfigTracker().add(
getConfigDumpType(), [this](const Matchers::StringMatcher& name_matcher) {
return dumpEcdsFilterConfigs(name_matcher);
});
}
}

ProtobufTypes::MessagePtr dumpEcdsFilterConfigs(const Matchers::StringMatcher& name_matcher) {
auto config_dump = std::make_unique<envoy::admin::v3::EcdsConfigDump>();
for (const auto& subscription : subscriptions_) {
const auto& ecds_filter = subscription.second.lock();
if (!ecds_filter || !name_matcher.match(ecds_filter->name())) {
continue;
}
// Put the filter info into a typed extension proto.
envoy::config::core::v3::TypedExtensionConfig filter_config;
filter_config.set_name(ecds_filter->name());
if (ecds_filter->lastConfig()) {
filter_config.mutable_typed_config()->PackFrom(*ecds_filter->lastConfig());
}
// Set up the config dump proto.
auto& filter_config_dump = *config_dump->mutable_ecds_filters()->Add();
filter_config_dump.mutable_ecds_filter()->PackFrom(filter_config);
filter_config_dump.set_version_info(ecds_filter->lastVersionInfo());
TimestampUtil::systemClockToTimestamp(ecds_filter->lastUpdated(),
*(filter_config_dump.mutable_last_updated()));
}
return config_dump;
}

absl::flat_hash_map<std::string, std::weak_ptr<FilterConfigSubscription>> subscriptions_;
Server::ConfigTracker::EntryOwnerPtr config_tracker_entry_;
friend class FilterConfigSubscription;
};

Expand Down Expand Up @@ -571,7 +528,6 @@ class HttpFilterConfigProviderManagerImpl
Config::Utility::validateTerminalFilters(filter_config_name, filter_type, filter_chain_type,
is_terminal_filter, last_filter_in_filter_chain);
}
const std::string getConfigDumpType() const override { return "ecds_filter_http"; }
};

// HTTP filter
Expand All @@ -598,7 +554,6 @@ class UpstreamHttpFilterConfigProviderManagerImpl
Config::Utility::validateTerminalFilters(filter_config_name, filter_type, filter_chain_type,
is_terminal_filter, last_filter_in_filter_chain);
}
const std::string getConfigDumpType() const override { return "ecds_filter_upstream_http"; }
};

// TCP listener filter
Expand All @@ -609,9 +564,6 @@ class TcpListenerFilterConfigProviderManagerImpl
TcpListenerDynamicFilterConfigProviderImpl> {
public:
absl::string_view statPrefix() const override { return "tcp_listener_filter."; }

protected:
const std::string getConfigDumpType() const override { return "ecds_filter_tcp_listener"; }
};

// UDP listener filter
Expand All @@ -622,9 +574,6 @@ class UdpListenerFilterConfigProviderManagerImpl
UdpListenerDynamicFilterConfigProviderImpl> {
public:
absl::string_view statPrefix() const override { return "udp_listener_filter."; }

protected:
const std::string getConfigDumpType() const override { return "ecds_filter_udp_listener"; }
};

} // namespace Filter
Expand Down
1 change: 0 additions & 1 deletion test/integration/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -1317,7 +1317,6 @@ envoy_cc_test(
"//test/integration/filters:set_is_terminal_filter_lib",
"//test/integration/filters:set_response_code_filter_config_proto_cc_proto",
"//test/integration/filters:set_response_code_filter_lib",
"//test/integration/filters:test_listener_filter_lib",
"//test/test_common:utility_lib",
"@envoy_api//envoy/extensions/common/matching/v3:pkg_cc_proto",
"@envoy_api//envoy/extensions/filters/network/http_connection_manager/v3:pkg_cc_proto",
Expand Down
Loading