From 020a8e31ab54e6e854a60dbfbedfa2a435248e7c Mon Sep 17 00:00:00 2001 From: Kristian Klausen Date: Mon, 27 Feb 2017 00:25:54 +0100 Subject: [PATCH] kv: Ignore backend servers with no url MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently with a kv tree like: /traefik/backends/b1/servers/ẁeb1 /traefik/backends/b1/servers/web2 /traefik/backends/b1/servers/web2/url Traefik would try to forward traffic to web1, which is impossible as traefik doesn't know the url of web1. This commit solve that, by ignoring backend server with no url "key" when generating the config. This is very useful, for people who use etcd TTL feature. They can then just "renew" the url key every X second, and if the server goes down, it is automatic removed from traefik after the TTL. --- provider/kv.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/provider/kv.go b/provider/kv.go index 6885d09b3..a6c171a9a 100644 --- a/provider/kv.go +++ b/provider/kv.go @@ -162,6 +162,9 @@ func (provider *Kv) list(keys ...string) []string { func (provider *Kv) listServers(backend string) []string { serverNames := provider.list(backend, "/servers/") return fun.Filter(func(serverName string) bool { + if _, err := provider.kvclient.Get(fmt.Sprint(serverName, "/url")); err != nil { + return false + } return provider.checkConstraints(serverName, "/tags") }, serverNames).([]string) }