diff --git a/provider/ecs/config.go b/provider/ecs/config.go index df28c315d..272c53970 100644 --- a/provider/ecs/config.go +++ b/provider/ecs/config.go @@ -14,25 +14,27 @@ import ( // buildConfiguration fills the config template with the given instances func (p *Provider) buildConfiguration(services map[string][]ecsInstance) (*types.Configuration, error) { var ecsFuncMap = template.FuncMap{ - "filterFrontends": filterFrontends, - "getFrontendRule": p.getFrontendRule, - "getBasicAuth": getFuncSliceString(label.TraefikFrontendAuthBasic), - "hasLoadBalancerLabel": hasLoadBalancerLabel, - "getLoadBalancerMethod": getFuncFirstStringValue(label.TraefikBackendLoadBalancerMethod, label.DefaultBackendLoadBalancerMethod), - "getSticky": getSticky, - "hasStickinessLabel": getFuncFirstBoolValue(label.TraefikBackendLoadBalancerStickiness, false), - "getStickinessCookieName": getFuncFirstStringValue(label.TraefikBackendLoadBalancerStickinessCookieName, label.DefaultBackendLoadbalancerStickinessCookieName), - "getProtocol": getFuncStringValue(label.TraefikProtocol, label.DefaultProtocol), - "getHost": getHost, - "getPort": getPort, - "getWeight": getFuncStringValue(label.TraefikWeight, label.DefaultWeight), - "getPassHostHeader": getFuncStringValue(label.TraefikFrontendPassHostHeader, label.DefaultPassHostHeader), - "getPriority": getFuncStringValue(label.TraefikFrontendPriority, label.DefaultFrontendPriority), - "getEntryPoints": getFuncSliceString(label.TraefikFrontendEntryPoints), - "hasHealthCheckLabels": hasFuncFirst(label.TraefikBackendHealthCheckPath), - "getHealthCheckPath": getFuncFirstStringValue(label.TraefikBackendHealthCheckPath, ""), - "getHealthCheckPort": getFuncFirstIntValue(label.TraefikBackendHealthCheckPort, label.DefaultBackendHealthCheckPort), - "getHealthCheckInterval": getFuncFirstStringValue(label.TraefikBackendHealthCheckInterval, ""), + "filterFrontends": filterFrontends, + "getFrontendRule": p.getFrontendRule, + "getBasicAuth": getFuncSliceString(label.TraefikFrontendAuthBasic), + "hasLoadBalancerLabel": hasLoadBalancerLabel, + "getLoadBalancerMethod": getFuncFirstStringValue(label.TraefikBackendLoadBalancerMethod, label.DefaultBackendLoadBalancerMethod), + "getSticky": getSticky, + "hasStickinessLabel": getFuncFirstBoolValue(label.TraefikBackendLoadBalancerStickiness, false), + "getStickinessCookieName": getFuncFirstStringValue(label.TraefikBackendLoadBalancerStickinessCookieName, label.DefaultBackendLoadbalancerStickinessCookieName), + "getProtocol": getFuncStringValue(label.TraefikProtocol, label.DefaultProtocol), + "getHost": getHost, + "getPort": getPort, + "getWeight": getFuncStringValue(label.TraefikWeight, label.DefaultWeight), + "getPassHostHeader": getFuncStringValue(label.TraefikFrontendPassHostHeader, label.DefaultPassHostHeader), + "getPriority": getFuncStringValue(label.TraefikFrontendPriority, label.DefaultFrontendPriority), + "getEntryPoints": getFuncSliceString(label.TraefikFrontendEntryPoints), + "hasHealthCheckLabels": hasFuncFirst(label.TraefikBackendHealthCheckPath), + "getHealthCheckPath": getFuncFirstStringValue(label.TraefikBackendHealthCheckPath, ""), + "getHealthCheckPort": getFuncFirstIntValue(label.TraefikBackendHealthCheckPort, label.DefaultBackendHealthCheckPort), + "getHealthCheckInterval": getFuncFirstStringValue(label.TraefikBackendHealthCheckInterval, ""), + "hasCircuitBreakerLabel": hasFuncFirst(label.TraefikBackendCircuitBreakerExpression), + "getCircuitBreakerExpression": getFuncFirstStringValue(label.TraefikBackendCircuitBreakerExpression, label.DefaultCircuitBreakerExpression), } return p.GetConfiguration("templates/ecs.tmpl", ecsFuncMap, struct { Services map[string][]ecsInstance diff --git a/templates/ecs.tmpl b/templates/ecs.tmpl index 371046b8c..d5c842700 100644 --- a/templates/ecs.tmpl +++ b/templates/ecs.tmpl @@ -1,6 +1,11 @@ [backends] {{range $serviceName, $instances := .Services}} + {{if hasCircuitBreakerLabel $instances}} + [backends.backend-{{ $serviceName }}.circuitBreaker] + expression = "{{getCircuitBreakerExpression $instances}}" + {{end}} + {{if hasLoadBalancerLabel $instances}} [backends.backend-{{ $serviceName }}.loadBalancer] method = "{{ getLoadBalancerMethod $instances}}"