diff --git a/proxy/inspect_container_interceptor.go b/proxy/inspect_container_interceptor.go index f4d96903..590649d4 100644 --- a/proxy/inspect_container_interceptor.go +++ b/proxy/inspect_container_interceptor.go @@ -22,31 +22,9 @@ func (i *inspectContainerInterceptor) InterceptResponse(r *http.Response) error return err } - if err := updateContainerNetworkSettings(container, i.proxy); err != nil { + if err := i.proxy.updateContainerNetworkSettings(container); err != nil { Log.Warningf("Inspecting container %s failed: %s", container["Id"], err) } return marshalResponseBody(r, container) } - -func updateContainerNetworkSettings(container jsonObject, proxy *Proxy) error { - containerID, err := container.String("Id") - if err != nil { - return err - } - - proxy.waitForStartByIdent(containerID) - mac, ips, nets, err := weaveContainerIPs(containerID) - if err != nil || len(ips) == 0 { - return err - } - - networkSettings, err := container.Object("NetworkSettings") - if err != nil { - return err - } - networkSettings["MacAddress"] = mac - networkSettings["IPAddress"] = ips[0].String() - networkSettings["IPPrefixLen"], _ = nets[0].Mask.Size() - return nil -} diff --git a/proxy/inspect_exec_interceptor.go b/proxy/inspect_exec_interceptor.go index 339d3343..32e70940 100644 --- a/proxy/inspect_exec_interceptor.go +++ b/proxy/inspect_exec_interceptor.go @@ -27,7 +27,7 @@ func (i *inspectExecInterceptor) InterceptResponse(r *http.Response) error { return err } - if err := updateContainerNetworkSettings(container, i.proxy); err != nil { + if err := i.proxy.updateContainerNetworkSettings(container); err != nil { Log.Warningf("Inspecting exec %s failed: %s", exec["Id"], err) } diff --git a/proxy/proxy.go b/proxy/proxy.go index 749de0ea..3a410ea8 100644 --- a/proxy/proxy.go +++ b/proxy/proxy.go @@ -512,3 +512,25 @@ func (proxy *Proxy) getDNSDomain() (domain string) { return string(b) } + +func (proxy *Proxy) updateContainerNetworkSettings(container jsonObject) error { + containerID, err := container.String("Id") + if err != nil { + return err + } + + proxy.waitForStartByIdent(containerID) + mac, ips, nets, err := weaveContainerIPs(containerID) + if err != nil || len(ips) == 0 { + return err + } + + networkSettings, err := container.Object("NetworkSettings") + if err != nil { + return err + } + networkSettings["MacAddress"] = mac + networkSettings["IPAddress"] = ips[0].String() + networkSettings["IPPrefixLen"], _ = nets[0].Mask.Size() + return nil +}