Просмотр исходного кода

Support a proxy in splunk log driver

Signed-off-by: Daniel Nephin <dnephin@docker.com>
Daniel Nephin 7 лет назад
Родитель
Сommit
3c4537d5b3
2 измененных файлов с 33 добавлено и 0 удалено
  1. 1 0
      daemon/logger/splunk/splunk.go
  2. 32 0
      daemon/logger/splunk/splunk_test.go

+ 1 - 0
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,

+ 32 - 0
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)