From 168343e0bc0968543e044bda37723ea2b54aee44 Mon Sep 17 00:00:00 2001 From: Taylor Barrella Date: Tue, 27 Apr 2021 22:50:55 +0000 Subject: [PATCH 1/3] envoy: http connection pool for metadata upstream extension --- src/envoy/upstreams/http/metadata/BUILD | 5 +++ .../http/metadata/upstream_request.cc | 32 +++++++++++++++++++ .../http/metadata/upstream_request.h | 21 ++++++++++++ 3 files changed, 58 insertions(+) diff --git a/src/envoy/upstreams/http/metadata/BUILD b/src/envoy/upstreams/http/metadata/BUILD index 85cb11e0ed9..4926b7f42f4 100644 --- a/src/envoy/upstreams/http/metadata/BUILD +++ b/src/envoy/upstreams/http/metadata/BUILD @@ -30,8 +30,13 @@ envoy_cc_library( hdrs = ["upstream_request.h"], repository = "@envoy", deps = [ + "@com_google_absl//absl/types:optional", "@envoy//include/envoy/http:codec_interface", "@envoy//include/envoy/router:router_interface", + "@envoy//include/envoy/stream_info:stream_info_interface", + "@envoy//include/envoy/upstream:host_description_interface", + "@envoy//include/envoy/upstream:load_balancer_interface", + "@envoy//include/envoy/upstream:thread_local_cluster_interface", "@envoy//source/extensions/upstreams/http/http:upstream_request_lib", ], ) diff --git a/src/envoy/upstreams/http/metadata/upstream_request.cc b/src/envoy/upstreams/http/metadata/upstream_request.cc index c4ea50422fa..42f4648286b 100644 --- a/src/envoy/upstreams/http/metadata/upstream_request.cc +++ b/src/envoy/upstreams/http/metadata/upstream_request.cc @@ -14,3 +14,35 @@ */ #include "src/envoy/upstreams/http/metadata/upstream_request.h" + +#include +#include + +#include "absl/types/optional.h" +#include "envoy/http/codec.h" +#include "envoy/http/protocol.h" +#include "envoy/stream_info/stream_info.h" +#include "envoy/upstream/host_description.h" + +namespace Envoy { +namespace Upstreams { +namespace Http { +namespace Metadata { + +void MetadataConnPool::onPoolReady( + Envoy::Http::RequestEncoder& request_encoder, + Upstream::HostDescriptionConstSharedPtr host, + const StreamInfo::StreamInfo& info, + absl::optional protocol) { + conn_pool_stream_handle_ = nullptr; + auto upstream = std::make_unique( + callbacks_->upstreamToDownstream(), &request_encoder); + callbacks_->onPoolReady(std::move(upstream), host, + request_encoder.getStream().connectionLocalAddress(), + info, protocol); +} + +} // namespace Metadata +} // namespace Http +} // namespace Upstreams +} // namespace Envoy diff --git a/src/envoy/upstreams/http/metadata/upstream_request.h b/src/envoy/upstreams/http/metadata/upstream_request.h index 60203710666..6bcea44bc2e 100644 --- a/src/envoy/upstreams/http/metadata/upstream_request.h +++ b/src/envoy/upstreams/http/metadata/upstream_request.h @@ -16,14 +16,35 @@ #pragma once #include "envoy/http/codec.h" +#include "envoy/http/protocol.h" #include "envoy/router/router.h" +#include "envoy/stream_info/stream_info.h" +#include "envoy/upstream/host_description.h" +#include "envoy/upstream/load_balancer.h" +#include "envoy/upstream/thread_local_cluster.h" + #include "extensions/upstreams/http/http/upstream_request.h" +#include "absl/types/optional.h" + namespace Envoy { namespace Upstreams { namespace Http { namespace Metadata { +class MetadataConnPool : public Extensions::Upstreams::Http::Http::HttpConnPool { +public: + MetadataConnPool(Upstream::ThreadLocalCluster& thread_local_cluster, bool is_connect, + const Router::RouteEntry& route_entry, + absl::optional downstream_protocol, + Upstream::LoadBalancerContext* ctx) + : HttpConnPool(thread_local_cluster, is_connect, route_entry, downstream_protocol, ctx) {} + + void onPoolReady(Envoy::Http::RequestEncoder& callbacks_encoder, + Upstream::HostDescriptionConstSharedPtr host, const StreamInfo::StreamInfo& info, + absl::optional protocol) override; +}; + class MetadataUpstream : public Extensions::Upstreams::Http::Http::HttpUpstream { public: From fdf58d1fd5aec6179eac5b9104a2459699ce5efc Mon Sep 17 00:00:00 2001 From: Taylor Barrella Date: Tue, 27 Apr 2021 23:43:26 +0000 Subject: [PATCH 2/3] clang-format --- .../upstreams/http/metadata/upstream_request.h | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/envoy/upstreams/http/metadata/upstream_request.h b/src/envoy/upstreams/http/metadata/upstream_request.h index 6bcea44bc2e..dd28f5e3708 100644 --- a/src/envoy/upstreams/http/metadata/upstream_request.h +++ b/src/envoy/upstreams/http/metadata/upstream_request.h @@ -32,16 +32,19 @@ namespace Upstreams { namespace Http { namespace Metadata { -class MetadataConnPool : public Extensions::Upstreams::Http::Http::HttpConnPool { -public: - MetadataConnPool(Upstream::ThreadLocalCluster& thread_local_cluster, bool is_connect, - const Router::RouteEntry& route_entry, +class MetadataConnPool + : public Extensions::Upstreams::Http::Http::HttpConnPool { + public: + MetadataConnPool(Upstream::ThreadLocalCluster& thread_local_cluster, + bool is_connect, const Router::RouteEntry& route_entry, absl::optional downstream_protocol, Upstream::LoadBalancerContext* ctx) - : HttpConnPool(thread_local_cluster, is_connect, route_entry, downstream_protocol, ctx) {} + : HttpConnPool(thread_local_cluster, is_connect, route_entry, + downstream_protocol, ctx) {} void onPoolReady(Envoy::Http::RequestEncoder& callbacks_encoder, - Upstream::HostDescriptionConstSharedPtr host, const StreamInfo::StreamInfo& info, + Upstream::HostDescriptionConstSharedPtr host, + const StreamInfo::StreamInfo& info, absl::optional protocol) override; }; From 8f26bf5305c5269ae41e0f527856fa369b440fd6 Mon Sep 17 00:00:00 2001 From: Taylor Barrella Date: Wed, 28 Apr 2021 00:18:03 +0000 Subject: [PATCH 3/3] proper clang-format --- src/envoy/upstreams/http/metadata/upstream_request.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/envoy/upstreams/http/metadata/upstream_request.h b/src/envoy/upstreams/http/metadata/upstream_request.h index dd28f5e3708..ba49e240ce9 100644 --- a/src/envoy/upstreams/http/metadata/upstream_request.h +++ b/src/envoy/upstreams/http/metadata/upstream_request.h @@ -15,6 +15,7 @@ #pragma once +#include "absl/types/optional.h" #include "envoy/http/codec.h" #include "envoy/http/protocol.h" #include "envoy/router/router.h" @@ -22,11 +23,8 @@ #include "envoy/upstream/host_description.h" #include "envoy/upstream/load_balancer.h" #include "envoy/upstream/thread_local_cluster.h" - #include "extensions/upstreams/http/http/upstream_request.h" -#include "absl/types/optional.h" - namespace Envoy { namespace Upstreams { namespace Http {