diff --git a/provider/docker.go b/provider/docker.go index 657eabfda..30e651305 100644 --- a/provider/docker.go +++ b/provider/docker.go @@ -167,6 +167,7 @@ func (provider *Docker) loadDockerConfig(containersInspected []dockertypes.Conta "getDomain": provider.getDomain, "getProtocol": provider.getProtocol, "getPassHostHeader": provider.getPassHostHeader, + "getPriority": provider.getPriority, "getEntryPoints": provider.getEntryPoints, "getFrontendRule": provider.getFrontendRule, "replace": replace, @@ -300,6 +301,13 @@ func (provider *Docker) getPassHostHeader(container dockertypes.ContainerJSON) s return "true" } +func (provider *Docker) getPriority(container dockertypes.ContainerJSON) string { + if priority, err := getLabel(container, "traefik.frontend.priority"); err == nil { + return priority + } + return "0" +} + func (provider *Docker) getEntryPoints(container dockertypes.ContainerJSON) []string { if entryPoints, err := getLabel(container, "traefik.frontend.entryPoints"); err == nil { return strings.Split(entryPoints, ",") diff --git a/provider/marathon.go b/provider/marathon.go index a97e70ecb..4efdc390a 100644 --- a/provider/marathon.go +++ b/provider/marathon.go @@ -116,6 +116,7 @@ func (provider *Marathon) loadMarathonConfig() *types.Configuration { "getDomain": provider.getDomain, "getProtocol": provider.getProtocol, "getPassHostHeader": provider.getPassHostHeader, + "getPriority": provider.getPriority, "getEntryPoints": provider.getEntryPoints, "getFrontendRule": provider.getFrontendRule, "getFrontendBackend": provider.getFrontendBackend, @@ -322,6 +323,13 @@ func (provider *Marathon) getPassHostHeader(application marathon.Application) st return "true" } +func (provider *Marathon) getPriority(application marathon.Application) string { + if priority, err := provider.getLabel(application, "traefik.frontend.priority"); err == nil { + return priority + } + return "0" +} + func (provider *Marathon) getEntryPoints(application marathon.Application) []string { if entryPoints, err := provider.getLabel(application, "traefik.frontend.entryPoints"); err == nil { return strings.Split(entryPoints, ",") diff --git a/templates/consul_catalog.tmpl b/templates/consul_catalog.tmpl index 7724fd2b9..20d0a8f19 100644 --- a/templates/consul_catalog.tmpl +++ b/templates/consul_catalog.tmpl @@ -30,6 +30,7 @@ [frontends.frontend-{{.ServiceName}}] backend = "backend-{{.ServiceName}}" passHostHeader = {{getAttribute "frontend.passHostHeader" .Attributes "true"}} + priority = {{getAttribute "frontend.priority" .Attributes "0"}} {{$entryPoints := getAttribute "frontend.entrypoints" .Attributes ""}} {{with $entryPoints}} entrypoints = [{{range getEntryPoints $entryPoints}} diff --git a/templates/docker.tmpl b/templates/docker.tmpl index 08e1f54b5..a45963d5f 100644 --- a/templates/docker.tmpl +++ b/templates/docker.tmpl @@ -8,6 +8,7 @@ [frontends."frontend-{{$frontend}}"]{{$container := index $containers 0}} backend = "backend-{{getBackend $container}}" passHostHeader = {{getPassHostHeader $container}} + priority = {{getPriority $container}} entryPoints = [{{range getEntryPoints $container}} "{{.}}", {{end}}] diff --git a/templates/kv.tmpl b/templates/kv.tmpl index 32c227af9..f27235010 100644 --- a/templates/kv.tmpl +++ b/templates/kv.tmpl @@ -40,6 +40,7 @@ [frontends."{{$frontend}}"] backend = "{{Get "" . "/backend"}}" passHostHeader = {{Get "true" . "/passHostHeader"}} + priority = {{Get "0" . "/priority"}} entryPoints = [{{range $entryPoints}} "{{.}}", {{end}}] diff --git a/templates/marathon.tmpl b/templates/marathon.tmpl index d2243cf47..26194fab7 100644 --- a/templates/marathon.tmpl +++ b/templates/marathon.tmpl @@ -9,6 +9,7 @@ [frontends.frontend{{.ID | replace "/" "-"}}] backend = "backend{{getFrontendBackend .}}" passHostHeader = {{getPassHostHeader .}} + priority = {{getPriority .}} entryPoints = [{{range getEntryPoints .}} "{{.}}", {{end}}] diff --git a/types/types.go b/types/types.go index 7d521ed23..322ce47d6 100644 --- a/types/types.go +++ b/types/types.go @@ -34,7 +34,7 @@ type CircuitBreaker struct { // Server holds server configuration. type Server struct { URL string `json:"url,omitempty"` - Weight int `json:"weight,omitempty"` + Weight int `json:"weight"` } // Route holds route configuration. @@ -52,7 +52,7 @@ type Frontend struct { Backend string `json:"backend,omitempty"` Routes map[string]Route `json:"routes,omitempty"` PassHostHeader bool `json:"passHostHeader,omitempty"` - Priority int `json:"priority,omitempty"` + Priority int `json:"priority"` } // LoadBalancerMethod holds the method of load balancing to use. diff --git a/webui/src/app/sections/providers/frontend-monitor/frontend-monitor.html b/webui/src/app/sections/providers/frontend-monitor/frontend-monitor.html index 6881c4bd8..eb5f8187f 100644 --- a/webui/src/app/sections/providers/frontend-monitor/frontend-monitor.html +++ b/webui/src/app/sections/providers/frontend-monitor/frontend-monitor.html @@ -16,7 +16,8 @@