REPO_LAYOUT.md
This is a high level overview of how the repository is laid out to both aid in code investigation, as well as to clearly specify how extensions are added to the repository. The top level directories are:
common/ and server/
has become somewhat blurred. Use best judgment as to where to place something.Not every directory within test is described below, but a few highlights:
We maintain a very specific code and namespace layout for extensions. This aids in discovering code/extensions, and allows us specify extension owners in CODEOWNERS.
Envoy::Extensions::AccessLoggers namespace.Envoy::Extensions::ApiListeners namespace.Envoy::Extensions::Bootstrap namespace.Envoy::Extensions::Clusters namespace.Envoy::Extensions::Compression namespace.Envoy::Extensions::Config namespace.Envoy::Config namespace.Envoy::Extensions::ContentParsers namespace.Envoy::Extensions::DynamicModules namespace.Envoy::Router namespace.Envoy::Extensions::FatalActions namespace.Envoy::Extensions::HttpFilters namespace.Envoy::Extensions::ListenerFilters namespace.Envoy::Extensions::NetworkFilters namespace.Envoy::Extensions::Formatter namespace.Envoy::Extensions::GeoipProviders namespace.Envoy::Extensions::GrpcCredentials namespace.Envoy::Upstream namespace.Envoy::Upstream namespace.Envoy::Extensions::HttpFilters namespace.Envoy::Extensions::InternalRedirect namespace.Envoy::Extensions::IoSocket namespace.Envoy::Extensions::KeyValue namespace.Envoy::Server namespace.Envoy::Extensions::LoadBalancingPolicies namespace.Envoy::Extensions::LocalAddressSelectors namespace.Envoy::Extensions::Matching namespace.Envoy::Network namespace.Envoy::Extensions::UriTemplate namespace.Envoy::Quic namespace.Envoy::Extensions::RateLimitDescriptors
namespace.Envoy::Extensions::RequestId namespace.Envoy::Extensions::ResourceMonitors namespace.Envoy::Extensions::Retry namespace.Envoy::Extensions::Router namespace.Envoy::Extensions::StatSinks namespace.Envoy::Extensions::StringMatcher namespace.Envoy::Extensions::Tracers namespace.Envoy::Extensions::TransportSockets namespace.Envoy::Network namespace.Envoy::Extensions::Upstreams namespace.Envoy::Extensions::Common::Wasm namespace.Envoy::Extensions::Watchdog namespace.Envoy::Extensions::NetworkFilters::Echo.common/ directory as close to
the extensions as possible. E.g., filters/common/ for common
code that is used by both HTTP and network filters. Common code used only by two HTTP filters
would be found in filters/http/common/. Common code should be placed in a common namespace.
E.g., Envoy::Extensions::Filters::Common.This directory contains contrib extensions. See EXTENSION_POLICY.md for more information.
envoy-static target but also includes all contrib extensions, and is used to produce the
contrib image targets.