From ef190f860a90df36b415e16f0de16bfeedc17d21 Mon Sep 17 00:00:00 2001 From: Antonio Ojea Date: Fri, 5 Nov 2021 12:22:23 +0100 Subject: [PATCH 1/2] client-go token source transport implement RoundTripperWrapper interface --- staging/src/k8s.io/client-go/transport/token_source.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/staging/src/k8s.io/client-go/transport/token_source.go b/staging/src/k8s.io/client-go/transport/token_source.go index fea02e61115..5744b9ef485 100644 --- a/staging/src/k8s.io/client-go/transport/token_source.go +++ b/staging/src/k8s.io/client-go/transport/token_source.go @@ -119,6 +119,8 @@ func (tst *tokenSourceTransport) CancelRequest(req *http.Request) { tryCancelRequest(tst.ort, req) } +func (tst *tokenSourceTransport) WrappedRoundTripper() http.RoundTripper { return tst.base } + type fileTokenSource struct { path string period time.Duration From 938cc5445dc6e8b723542036e97e1d2023bb3002 Mon Sep 17 00:00:00 2001 From: Antonio Ojea Date: Fri, 5 Nov 2021 14:53:22 +0100 Subject: [PATCH 2/2] assert RoundTripperWrapper interface --- .../src/k8s.io/client-go/transport/round_trippers.go | 12 ++++++++++++ .../src/k8s.io/client-go/transport/token_source.go | 3 +++ 2 files changed, 15 insertions(+) diff --git a/staging/src/k8s.io/client-go/transport/round_trippers.go b/staging/src/k8s.io/client-go/transport/round_trippers.go index 5e9eb49103f..4c74606a98e 100644 --- a/staging/src/k8s.io/client-go/transport/round_trippers.go +++ b/staging/src/k8s.io/client-go/transport/round_trippers.go @@ -92,6 +92,8 @@ type authProxyRoundTripper struct { rt http.RoundTripper } +var _ utilnet.RoundTripperWrapper = &authProxyRoundTripper{} + // NewAuthProxyRoundTripper provides a roundtripper which will add auth proxy fields to requests for // authentication terminating proxy cases // assuming you pull the user from the context: @@ -150,6 +152,8 @@ type userAgentRoundTripper struct { rt http.RoundTripper } +var _ utilnet.RoundTripperWrapper = &userAgentRoundTripper{} + // NewUserAgentRoundTripper will add User-Agent header to a request unless it has already been set. func NewUserAgentRoundTripper(agent string, rt http.RoundTripper) http.RoundTripper { return &userAgentRoundTripper{agent, rt} @@ -176,6 +180,8 @@ type basicAuthRoundTripper struct { rt http.RoundTripper } +var _ utilnet.RoundTripperWrapper = &basicAuthRoundTripper{} + // NewBasicAuthRoundTripper will apply a BASIC auth authorization header to a // request unless it has already been set. func NewBasicAuthRoundTripper(username, password string, rt http.RoundTripper) http.RoundTripper { @@ -225,6 +231,8 @@ type impersonatingRoundTripper struct { delegate http.RoundTripper } +var _ utilnet.RoundTripperWrapper = &impersonatingRoundTripper{} + // NewImpersonatingRoundTripper will add an Act-As header to a request unless it has already been set. func NewImpersonatingRoundTripper(impersonate ImpersonationConfig, delegate http.RoundTripper) http.RoundTripper { return &impersonatingRoundTripper{impersonate, delegate} @@ -264,6 +272,8 @@ type bearerAuthRoundTripper struct { rt http.RoundTripper } +var _ utilnet.RoundTripperWrapper = &bearerAuthRoundTripper{} + // NewBearerAuthRoundTripper adds the provided bearer token to a request // unless the authorization header has already been set. func NewBearerAuthRoundTripper(bearer string, rt http.RoundTripper) http.RoundTripper { @@ -373,6 +383,8 @@ type debuggingRoundTripper struct { levels map[DebugLevel]bool } +var _ utilnet.RoundTripperWrapper = &debuggingRoundTripper{} + // DebugLevel is used to enable debugging of certain // HTTP requests and responses fields via the debuggingRoundTripper. type DebugLevel int diff --git a/staging/src/k8s.io/client-go/transport/token_source.go b/staging/src/k8s.io/client-go/transport/token_source.go index 5744b9ef485..68a0a704fe4 100644 --- a/staging/src/k8s.io/client-go/transport/token_source.go +++ b/staging/src/k8s.io/client-go/transport/token_source.go @@ -26,6 +26,7 @@ import ( "golang.org/x/oauth2" + utilnet "k8s.io/apimachinery/pkg/util/net" "k8s.io/klog/v2" ) @@ -95,6 +96,8 @@ type tokenSourceTransport struct { src ResettableTokenSource } +var _ utilnet.RoundTripperWrapper = &tokenSourceTransport{} + func (tst *tokenSourceTransport) RoundTrip(req *http.Request) (*http.Response, error) { // This is to allow --token to override other bearer token providers. if req.Header.Get("Authorization") != "" {