From 3c4537d5b33d951237ea5e4cc123953eda7a37e7 Mon Sep 17 00:00:00 2001 From: Daniel Nephin Date: Tue, 6 Feb 2018 12:33:18 -0500 Subject: [PATCH] Support a proxy in splunk log driver Signed-off-by: Daniel Nephin --- daemon/logger/splunk/splunk.go | 1 + daemon/logger/splunk/splunk_test.go | 32 +++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/daemon/logger/splunk/splunk.go b/daemon/logger/splunk/splunk.go index 30ab7b7414..ada88d3559 100644 --- a/daemon/logger/splunk/splunk.go +++ b/daemon/logger/splunk/splunk.go @@ -218,6 +218,7 @@ func New(info logger.Info) (logger.Logger, error) { transport := &http.Transport{ TLSClientConfig: tlsConfig, + Proxy: http.ProxyFromEnvironment, } client := &http.Client{ Transport: transport, diff --git a/daemon/logger/splunk/splunk_test.go b/daemon/logger/splunk/splunk_test.go index 97613771d2..4ffdd853c5 100644 --- a/daemon/logger/splunk/splunk_test.go +++ b/daemon/logger/splunk/splunk_test.go @@ -4,12 +4,14 @@ import ( "compress/gzip" "context" "fmt" + "net/http" "os" "runtime" "testing" "time" "github.com/docker/docker/daemon/logger" + "github.com/gotestyourself/gotestyourself/env" "github.com/stretchr/testify/require" ) @@ -82,6 +84,36 @@ func TestNewMissedToken(t *testing.T) { } } +func TestNewWithProxy(t *testing.T) { + proxy := "http://proxy.testing:8888" + reset := env.Patch(t, "HTTP_PROXY", proxy) + defer reset() + + // must not be localhost + splunkURL := "http://example.com:12345" + logger, err := New(logger.Info{ + Config: map[string]string{ + splunkURLKey: splunkURL, + splunkTokenKey: "token", + splunkVerifyConnectionKey: "false", + }, + ContainerID: "containeriid", + }) + require.NoError(t, err) + splunkLogger := logger.(*splunkLoggerInline) + + proxyFunc := splunkLogger.transport.Proxy + require.NotNil(t, proxyFunc) + + req, err := http.NewRequest("GET", splunkURL, nil) + require.NoError(t, err) + + proxyURL, err := proxyFunc(req) + require.NoError(t, err) + require.NotNil(t, proxyURL) + require.Equal(t, proxy, proxyURL.String()) +} + // Test default settings func TestDefault(t *testing.T) { hec := NewHTTPEventCollectorMock(t)