Allow constructing spdy executor from existing transports

Kubernetes-commit: f82b1ba90ecfff0eb5731ba4da0b6f8acf79d3ff
This commit is contained in:
Jordan Liggitt 2017-11-17 15:47:46 -05:00 committed by Kubernetes Publisher
parent 5b93d2bc5a
commit 7841216303
2 changed files with 15 additions and 12 deletions

View File

@ -42,7 +42,6 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/util/remotecommand:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/remotecommand:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library",
"//vendor/k8s.io/client-go/rest:go_default_library", "//vendor/k8s.io/client-go/rest:go_default_library",
"//vendor/k8s.io/client-go/transport:go_default_library",
"//vendor/k8s.io/client-go/transport/spdy:go_default_library", "//vendor/k8s.io/client-go/transport/spdy:go_default_library",
"//vendor/k8s.io/client-go/util/exec:go_default_library", "//vendor/k8s.io/client-go/util/exec:go_default_library",
], ],

View File

@ -27,7 +27,6 @@ import (
"k8s.io/apimachinery/pkg/util/httpstream" "k8s.io/apimachinery/pkg/util/httpstream"
"k8s.io/apimachinery/pkg/util/remotecommand" "k8s.io/apimachinery/pkg/util/remotecommand"
restclient "k8s.io/client-go/rest" restclient "k8s.io/client-go/rest"
"k8s.io/client-go/transport"
spdy "k8s.io/client-go/transport/spdy" spdy "k8s.io/client-go/transport/spdy"
) )
@ -72,8 +71,18 @@ type streamExecutor struct {
// NewSPDYExecutor connects to the provided server and upgrades the connection to // NewSPDYExecutor connects to the provided server and upgrades the connection to
// multiplexed bidirectional streams. // multiplexed bidirectional streams.
func NewSPDYExecutor(config *restclient.Config, method string, url *url.URL) (Executor, error) { func NewSPDYExecutor(config *restclient.Config, method string, url *url.URL) (Executor, error) {
wrapper, upgradeRoundTripper, err := spdy.RoundTripperFor(config)
if err != nil {
return nil, err
}
return NewSPDYExecutorForTransports(wrapper, upgradeRoundTripper, method, url)
}
// NewSPDYExecutorForTransports connects to the provided server using the given transport,
// upgrades the response using the given upgrader to multiplexed bidirectional streams.
func NewSPDYExecutorForTransports(transport http.RoundTripper, upgrader spdy.Upgrader, method string, url *url.URL) (Executor, error) {
return NewSPDYExecutorForProtocols( return NewSPDYExecutorForProtocols(
config, method, url, transport, upgrader, method, url,
remotecommand.StreamProtocolV4Name, remotecommand.StreamProtocolV4Name,
remotecommand.StreamProtocolV3Name, remotecommand.StreamProtocolV3Name,
remotecommand.StreamProtocolV2Name, remotecommand.StreamProtocolV2Name,
@ -83,16 +92,11 @@ func NewSPDYExecutor(config *restclient.Config, method string, url *url.URL) (Ex
// NewSPDYExecutorForProtocols connects to the provided server and upgrades the connection to // NewSPDYExecutorForProtocols connects to the provided server and upgrades the connection to
// multiplexed bidirectional streams using only the provided protocols. Exposed for testing, most // multiplexed bidirectional streams using only the provided protocols. Exposed for testing, most
// callers should use NewSPDYExecutor. // callers should use NewSPDYExecutor or NewSPDYExecutorForTransports.
func NewSPDYExecutorForProtocols(config *restclient.Config, method string, url *url.URL, protocols ...string) (Executor, error) { func NewSPDYExecutorForProtocols(transport http.RoundTripper, upgrader spdy.Upgrader, method string, url *url.URL, protocols ...string) (Executor, error) {
wrapper, upgradeRoundTripper, err := spdy.RoundTripperFor(config)
if err != nil {
return nil, err
}
wrapper = transport.DebugWrappers(wrapper)
return &streamExecutor{ return &streamExecutor{
upgrader: upgradeRoundTripper, upgrader: upgrader,
transport: wrapper, transport: transport,
method: method, method: method,
url: url, url: url,
protocols: protocols, protocols: protocols,