From c9d4c5ae3eed0cc353b503e53e78cf7d60e93c19 Mon Sep 17 00:00:00 2001 From: Owen Marshall Date: Wed, 8 Jun 2016 15:08:03 -0400 Subject: [PATCH] Fix Docker integration problems --- provider/docker.go | 18 +++++++++++++----- provider/docker_test.go | 4 ++-- templates/docker.tmpl | 4 ---- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/provider/docker.go b/provider/docker.go index eb08b6afb..0c7ace0cf 100644 --- a/provider/docker.go +++ b/provider/docker.go @@ -252,6 +252,7 @@ func (provider *Docker) loadDockerConfig(containersInspected []dockerData) *type "hasMaxConnLabels": provider.hasMaxConnLabels, "getMaxConnAmount": provider.getMaxConnAmount, "getMaxConnExtractorFunc": provider.getMaxConnExtractorFunc, + "getSticky": provider.getSticky, "replace": replace, } @@ -260,19 +261,26 @@ func (provider *Docker) loadDockerConfig(containersInspected []dockerData) *type return provider.containerFilter(container) }, containersInspected).([]dockerData) + // sticky backends + stickycontainers := map[string][]dockerData{} + frontends := map[string][]dockerData{} for _, container := range filteredContainers { frontendName := provider.getFrontendName(container) frontends[frontendName] = append(frontends[frontendName], container) + frontends[frontendName] = append(frontends[frontendName], container) + stickycontainers[provider.getBackend(container)] = container } templateObjects := struct { - Containers []dockerData - Frontends map[string][]dockerData - Domain string + Containers []dockerData + Frontends map[string][]dockerData + StickyContainers map[string][]dockerData + Domain string }{ filteredContainers, frontends, + stickycontainers, provider.Domain, } @@ -441,9 +449,9 @@ func (provider *Docker) getWeight(container dockerData) string { func (provider *Docker) getSticky(container dockertypes.ContainerJSON) string { if label, err := getLabel(container, "traefik.stickysession"); err == nil { - return true + return "true" } - return false + return "false" } func (provider *Docker) getDomain(container dockerData) string { diff --git a/provider/docker_test.go b/provider/docker_test.go index c344eb5f1..976469e76 100644 --- a/provider/docker_test.go +++ b/provider/docker_test.go @@ -940,7 +940,7 @@ func TestDockerLoadDockerConfig(t *testing.T) { }, }, CircuitBreaker: nil, - LoadBalancer: nil, + LoadBalancer: &types.LoadBalancer{Sticky: false, Method: ""}, }, }, }, @@ -1027,7 +1027,7 @@ func TestDockerLoadDockerConfig(t *testing.T) { }, }, CircuitBreaker: nil, - LoadBalancer: nil, + LoadBalancer: &types.LoadBalancer{Sticky: false, Method: ""}, }, }, }, diff --git a/templates/docker.tmpl b/templates/docker.tmpl index 943a89237..6a5f98803 100644 --- a/templates/docker.tmpl +++ b/templates/docker.tmpl @@ -16,10 +16,6 @@ extractorfunc = "{{getMaxConnExtractorFunc . }}" {{end}} - [backends.backend-{{getBackend .}}.servers.server-{{.Name | replace "/" "" | replace "." "-"}}] - url = "{{getProtocol .}}://{{getIPAddress .}}:{{getPort .}}" - weight = {{getWeight .}} -{{end}} [frontends]{{range $frontend, $containers := .Frontends}} [frontends."frontend-{{$frontend}}"]{{$container := index $containers 0}}