1
0
Fork 0

Backend name with docker-compose and segments.

This commit is contained in:
Ludovic Fernandez 2018-06-14 09:20:04 +02:00 committed by Traefiker Bot
parent 6ceb2af4a7
commit bb3f28ffa7
2 changed files with 22 additions and 6 deletions

View file

@ -263,11 +263,16 @@ func isBackendLBSwarm(container dockerData) bool {
} }
func getSegmentBackendName(container dockerData) string { func getSegmentBackendName(container dockerData) string {
if value := label.GetStringValue(container.SegmentLabels, label.TraefikBackend, ""); len(value) > 0 { serviceName := container.ServiceName
return provider.Normalize(container.ServiceName + "-" + value) if values, err := label.GetStringMultipleStrict(container.Labels, labelDockerComposeProject, labelDockerComposeService); err == nil {
serviceName = provider.Normalize(values[labelDockerComposeService] + "_" + values[labelDockerComposeProject])
} }
return provider.Normalize(container.ServiceName + "-" + getDefaultBackendName(container) + "-" + container.SegmentName) if value := label.GetStringValue(container.SegmentLabels, label.TraefikBackend, ""); len(value) > 0 {
return provider.Normalize(serviceName + "-" + value)
}
return provider.Normalize(serviceName + "-" + getDefaultBackendName(container) + "-" + container.SegmentName)
} }
func getDefaultBackendName(container dockerData) string { func getDefaultBackendName(container dockerData) string {

View file

@ -850,8 +850,9 @@ func TestDockerGetFrontendRule(t *testing.T) {
func TestDockerGetBackendName(t *testing.T) { func TestDockerGetBackendName(t *testing.T) {
testCases := []struct { testCases := []struct {
container docker.ContainerJSON container docker.ContainerJSON
expected string segmentName string
expected string
}{ }{
{ {
container: containerJSON(name("foo")), container: containerJSON(name("foo")),
@ -874,6 +875,15 @@ func TestDockerGetBackendName(t *testing.T) {
})), })),
expected: "bar-foo", expected: "bar-foo",
}, },
{
container: containerJSON(labels(map[string]string{
"com.docker.compose.project": "foo",
"com.docker.compose.service": "bar",
"traefik.sauternes.backend": "titi",
})),
segmentName: "sauternes",
expected: "bar-foo-titi",
},
} }
for containerID, test := range testCases { for containerID, test := range testCases {
@ -883,7 +893,8 @@ func TestDockerGetBackendName(t *testing.T) {
dData := parseContainer(test.container) dData := parseContainer(test.container)
segmentProperties := label.ExtractTraefikLabels(dData.Labels) segmentProperties := label.ExtractTraefikLabels(dData.Labels)
dData.SegmentLabels = segmentProperties[""] dData.SegmentLabels = segmentProperties[test.segmentName]
dData.SegmentName = test.segmentName
actual := getBackendName(dData) actual := getBackendName(dData)
assert.Equal(t, test.expected, actual) assert.Equal(t, test.expected, actual)