From dde244160b7fe650f3bcd800fee52d1b94d64407 Mon Sep 17 00:00:00 2001 From: Matthias Radestock Date: Wed, 3 Feb 2016 11:28:38 +0000 Subject: [PATCH] make proxy pay attention to WEAVE_HTTP_ADDR --- api/weaveapi.go | 21 ++++++++++++++++++++- proxy/common.go | 3 +++ proxy/proxy.go | 12 +----------- weave | 1 + 4 files changed, 25 insertions(+), 12 deletions(-) diff --git a/api/weaveapi.go b/api/weaveapi.go index d721deff..505aac18 100644 --- a/api/weaveapi.go +++ b/api/weaveapi.go @@ -13,6 +13,7 @@ import ( ) const ( + WeaveHTTPHost = "127.0.0.1" WeaveHTTPPort = 6784 ) @@ -59,7 +60,25 @@ func (client *Client) httpVerb(verb string, url string, values url.Values) (stri } func NewClient(addr string) *Client { - return &Client{baseURL: fmt.Sprintf("http://%s:%d", addr, WeaveHTTPPort)} + host := WeaveHTTPHost + port := fmt.Sprintf("%d", WeaveHTTPPort) + switch parts := strings.Split(addr, ":"); len(parts) { + case 0: + case 1: + if parts[0] != "" { + host = parts[0] + } + case 2: + if parts[0] != "" { + host = parts[0] + } + if parts[1] != "" { + port = parts[1] + } + default: + return &Client{baseURL: fmt.Sprintf("http://%s", addr)} + } + return &Client{baseURL: fmt.Sprintf("http://%s:%s", host, port)} } func NewClientWithResolver(resolver func() (string, error)) *Client { diff --git a/proxy/common.go b/proxy/common.go index a040a181..dfc1c462 100644 --- a/proxy/common.go +++ b/proxy/common.go @@ -48,6 +48,9 @@ func callWeave(args ...string) ([]byte, []byte, error) { // integration test suite breaking things. propagateEnv("COVERAGE") + // In case the router control endpoint address is non-standard. + propagateEnv("WEAVE_HTTP_ADDR") + Log.Debug("Calling weave args: ", args, "env: ", cmd.Env) var stdout, stderr bytes.Buffer cmd.Stdout = &stdout diff --git a/proxy/proxy.go b/proxy/proxy.go index d0ef319e..f2173a40 100644 --- a/proxy/proxy.go +++ b/proxy/proxy.go @@ -559,17 +559,7 @@ func (proxy *Proxy) getDNSDomain() string { if proxy.WithoutDNS { return "" } - - weaveContainer, err := proxy.client.InspectContainer("weave") - var weaveIP string - if err == nil && weaveContainer.NetworkSettings != nil { - weaveIP = weaveContainer.NetworkSettings.IPAddress - } - if weaveIP == "" { - weaveIP = "127.0.0.1" - } - - weave := weaveapi.NewClient(weaveIP) + weave := weaveapi.NewClient(os.Getenv("WEAVE_HTTP_ADDR")) domain, _ := weave.DNSDomain() return domain } diff --git a/weave b/weave index b18a3039..92f77ad6 100755 --- a/weave +++ b/weave @@ -1661,6 +1661,7 @@ launch_proxy() { -e DOCKER_BRIDGE \ -e WEAVE_DEBUG \ -e COVERAGE \ + -e WEAVE_HTTP_ADDR \ -e EXEC_IMAGE=$EXEC_IMAGE \ --entrypoint=/home/weave/weaveproxy \ $WEAVEPROXY_DOCKER_ARGS $EXEC_IMAGE $COVERAGE_ARGS $PROXY_ARGS)