diff --git a/provider/marathon/config.go b/provider/marathon/config.go index 24864b2b6..6b23c27c1 100644 --- a/provider/marathon/config.go +++ b/provider/marathon/config.go @@ -50,6 +50,10 @@ func (p *Provider) buildConfiguration() *types.Configuration { "getServiceNames": getServiceNames, "getServiceNameSuffix": getServiceNameSuffix, "getWhitelistSourceRange": getFuncSliceStringService(label.TraefikFrontendWhitelistSourceRange), + "hasRedirect": hasRedirect, + "getRedirectEntryPoint": getFuncStringService(label.TraefikFrontendRedirectEntryPoint, label.DefaultFrontendRedirectEntryPoint), + "getRedirectRegex": getFuncStringService(label.TraefikFrontendRedirectRegex, ""), + "getRedirectReplacement": getFuncStringService(label.TraefikFrontendRedirectReplacement, ""), } v := url.Values{} @@ -364,6 +368,16 @@ func retrieveAvailablePorts(application marathon.Application, task marathon.Task return []int{} } +func hasRedirect(application marathon.Application, serviceName string) bool { + labels := getLabels(application, serviceName) + + frep := label.Has(labels, getLabelName(serviceName, label.TraefikFrontendRedirectEntryPoint)) + frrg := label.Has(labels, getLabelName(serviceName, label.TraefikFrontendRedirectRegex)) + frrp := label.Has(labels, getLabelName(serviceName, label.TraefikFrontendRedirectReplacement)) + + return frep || frrg && frrp +} + // Label functions func getLabels(application marathon.Application, serviceName string) map[string]string { diff --git a/templates/marathon.tmpl b/templates/marathon.tmpl index aea55bf18..381c77769 100644 --- a/templates/marathon.tmpl +++ b/templates/marathon.tmpl @@ -72,6 +72,13 @@ "{{.}}", {{end}}] + {{if hasRedirect $app $serviceName}} + [frontends."{{ getFrontendName $app $serviceName }}".redirect] + entryPoint = "{{getRedirectEntryPoint $app $serviceName}}" + regex = "{{getRedirectRegex $app $serviceName}}" + replacement = "{{getRedirectReplacement $app $serviceName}}" + {{end}} + [frontends."{{ getFrontendName $app $serviceName }}".routes."route-host{{$app.ID | replace "/" "-"}}{{getServiceNameSuffix $serviceName }}"] rule = "{{getFrontendRule $app $serviceName}}"