From 722ea28e3a4952c8459efa7cd7e09291e96d99c1 Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic Date: Sat, 16 Dec 2017 19:29:30 +0100 Subject: [PATCH] feat(ecs): add HealthCheck port label. --- provider/ecs/config.go | 23 +++++++++++++++++++++++ templates/ecs.tmpl | 1 + 2 files changed, 24 insertions(+) diff --git a/provider/ecs/config.go b/provider/ecs/config.go index 07118d0a9..8bb1aa234 100644 --- a/provider/ecs/config.go +++ b/provider/ecs/config.go @@ -30,6 +30,7 @@ func (p *Provider) buildConfiguration(services map[string][]ecsInstance) (*types "getEntryPoints": getFuncSliceString(label.TraefikFrontendEntryPoints), "hasHealthCheckLabels": hasFuncFirst(label.TraefikBackendHealthCheckPath), "getHealthCheckPath": getFuncFirstStringValue(label.TraefikBackendHealthCheckPath, ""), + "getHealthCheckPort": getFuncFirstIntValue(label.TraefikBackendHealthCheckPort, label.DefaultBackendHealthCheckPort), "getHealthCheckInterval": getFuncFirstStringValue(label.TraefikBackendHealthCheckInterval, ""), } return p.GetConfiguration("templates/ecs.tmpl", ecsFuncMap, struct { @@ -102,6 +103,15 @@ func getFuncFirstStringValue(labelName string, defaultValue string) func(instanc } } +func getFuncFirstIntValue(labelName string, defaultValue int) func(instances []ecsInstance) int { + return func(instances []ecsInstance) int { + if len(instances) < 0 { + return defaultValue + } + return getIntValue(instances[0], labelName, defaultValue) + } +} + func getFuncFirstBoolValue(labelName string, defaultValue bool) func(instances []ecsInstance) bool { return func(instances []ecsInstance) bool { if len(instances) < 0 { @@ -137,6 +147,19 @@ func getBoolValue(i ecsInstance, labelName string, defaultValue bool) bool { return defaultValue } +func getIntValue(i ecsInstance, labelName string, defaultValue int) int { + rawValue, ok := i.containerDefinition.DockerLabels[labelName] + if ok { + if rawValue != nil { + v, err := strconv.Atoi(*rawValue) + if err == nil { + return v + } + } + } + return defaultValue +} + func getSliceString(i ecsInstance, labelName string) []string { if value, ok := i.containerDefinition.DockerLabels[labelName]; ok { if value == nil { diff --git a/templates/ecs.tmpl b/templates/ecs.tmpl index 9f92a278a..7bf03b3de 100644 --- a/templates/ecs.tmpl +++ b/templates/ecs.tmpl @@ -12,6 +12,7 @@ {{ if hasHealthCheckLabels $instances }} [backends.backend-{{ $serviceName }}.healthCheck] path = "{{getHealthCheckPath $instances }}" + port = {{getHealthCheckPort $instances}} interval = "{{getHealthCheckInterval $instances }}" {{end}}