Change the provider separator from . to @

This commit is contained in:
Ludovic Fernandez 2019-06-20 00:40:05 +02:00 committed by Traefiker Bot
parent 4012599264
commit e9792b446f
34 changed files with 465 additions and 465 deletions

View file

@ -121,8 +121,8 @@ If you use multiple `providers` and wish to reference a middleware declared in a
image: your-docker-image image: your-docker-image
labels: labels:
# Attach file.add-foo-prefix middleware (declared in file) # Attach file@add-foo-prefix middleware (declared in file)
- "traefik.http.routers.my-container.middlewares=file.add-foo-prefix" - "traefik.http.routers.my-container.middlewares=file@add-foo-prefix"
``` ```
## Available Middlewares ## Available Middlewares

View file

@ -581,7 +581,7 @@ func CheckAccessLogFormat(c *check.C, line string, i int) {
c.Assert(results, checker.HasLen, 14) c.Assert(results, checker.HasLen, 14)
c.Assert(results[accesslog.OriginStatus], checker.Matches, `^(-|\d{3})$`) c.Assert(results[accesslog.OriginStatus], checker.Matches, `^(-|\d{3})$`)
c.Assert(results[accesslog.RequestCount], checker.Equals, fmt.Sprintf("%d", i+1)) c.Assert(results[accesslog.RequestCount], checker.Equals, fmt.Sprintf("%d", i+1))
c.Assert(results[accesslog.RouterName], checker.HasPrefix, "\"docker.rt-") c.Assert(results[accesslog.RouterName], checker.HasPrefix, "\"docker@rt-")
c.Assert(results[accesslog.ServiceURL], checker.HasPrefix, "\"http://") c.Assert(results[accesslog.ServiceURL], checker.HasPrefix, "\"http://")
c.Assert(results[accesslog.Duration], checker.Matches, `^\d+ms$`) c.Assert(results[accesslog.Duration], checker.Matches, `^\d+ms$`)
} }
@ -596,7 +596,7 @@ func checkAccessLogExactValues(c *check.C, line string, i int, v accessLogValue)
} }
c.Assert(results[accesslog.OriginStatus], checker.Equals, v.code) c.Assert(results[accesslog.OriginStatus], checker.Equals, v.code)
c.Assert(results[accesslog.RequestCount], checker.Equals, fmt.Sprintf("%d", i+1)) c.Assert(results[accesslog.RequestCount], checker.Equals, fmt.Sprintf("%d", i+1))
c.Assert(results[accesslog.RouterName], checker.Matches, `^"?(docker\.)?`+v.routerName+`.*$`) c.Assert(results[accesslog.RouterName], checker.Matches, `^"?(docker@)?`+v.routerName+`.*$`)
c.Assert(results[accesslog.ServiceURL], checker.Matches, `^"?`+v.serviceURL+`.*$`) c.Assert(results[accesslog.ServiceURL], checker.Matches, `^"?`+v.serviceURL+`.*$`)
c.Assert(results[accesslog.Duration], checker.Matches, `^\d+ms$`) c.Assert(results[accesslog.Duration], checker.Matches, `^\d+ms$`)
} }

View file

@ -77,7 +77,7 @@ func (s *DockerComposeSuite) TestComposeScale(c *check.C) {
services := rtconf.Services services := rtconf.Services
c.Assert(services, checker.HasLen, 1) c.Assert(services, checker.HasLen, 1)
for k, v := range services { for k, v := range services {
c.Assert(k, checker.Equals, "docker."+composeService+"_integrationtest"+composeProject) c.Assert(k, checker.Equals, "docker@"+composeService+"_integrationtest"+composeProject)
c.Assert(v.LoadBalancer.Servers, checker.HasLen, serviceCount) c.Assert(v.LoadBalancer.Servers, checker.HasLen, serviceCount)
// We could break here, but we don't just to keep us honest. // We could break here, but we don't just to keep us honest.
} }

View file

@ -13,7 +13,7 @@ level = "DEBUG"
address = ":8001" address = ":8001"
[api] [api]
middlewares = ["file.authentication"] middlewares = ["file@authentication"]
[ping] [ping]

View file

@ -444,8 +444,8 @@ func (s *SimpleSuite) TestMultiprovider(c *check.C) {
Routers: map[string]*config.Router{ Routers: map[string]*config.Router{
"router1": { "router1": {
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Middlewares: []string{"file.customheader"}, Middlewares: []string{"file@customheader"},
Service: "file.service", Service: "file@service",
Rule: "PathPrefix(`/`)", Rule: "PathPrefix(`/`)",
}, },
}, },

View file

@ -1,6 +1,6 @@
{ {
"routers": { "routers": {
"kubernetescrd.default/test-crd-6b204d94623b3df4370c": { "kubernetescrd@default/test-crd-6b204d94623b3df4370c": {
"entryPoints": [ "entryPoints": [
"web" "web"
], ],
@ -8,7 +8,7 @@
"rule": "Host(`foo.com`) \u0026\u0026 PathPrefix(`/bar`)", "rule": "Host(`foo.com`) \u0026\u0026 PathPrefix(`/bar`)",
"priority": 12 "priority": 12
}, },
"kubernetescrd.default/test2-crd-23c7f4c450289ee29016": { "kubernetescrd@default/test2-crd-23c7f4c450289ee29016": {
"entryPoints": [ "entryPoints": [
"web" "web"
], ],
@ -20,19 +20,19 @@
} }
}, },
"middlewares": { "middlewares": {
"kubernetescrd.default/stripprefix": { "kubernetescrd@default/stripprefix": {
"stripPrefix": { "stripPrefix": {
"prefixes": [ "prefixes": [
"/tobestripped" "/tobestripped"
] ]
}, },
"usedBy": [ "usedBy": [
"kubernetescrd.default/test2-crd-23c7f4c450289ee29016" "kubernetescrd@default/test2-crd-23c7f4c450289ee29016"
] ]
} }
}, },
"services": { "services": {
"kubernetescrd.default/test-crd-6b204d94623b3df4370c": { "kubernetescrd@default/test-crd-6b204d94623b3df4370c": {
"loadbalancer": { "loadbalancer": {
"servers": [ "servers": [
{ {
@ -45,14 +45,14 @@
"passHostHeader": true "passHostHeader": true
}, },
"usedBy": [ "usedBy": [
"kubernetescrd.default/test-crd-6b204d94623b3df4370c" "kubernetescrd@default/test-crd-6b204d94623b3df4370c"
], ],
"serverStatus": { "serverStatus": {
"http://10.42.0.4:80": "UP", "http://10.42.0.4:80": "UP",
"http://10.42.0.5:80": "UP" "http://10.42.0.5:80": "UP"
} }
}, },
"kubernetescrd.default/test2-crd-23c7f4c450289ee29016": { "kubernetescrd@default/test2-crd-23c7f4c450289ee29016": {
"loadbalancer": { "loadbalancer": {
"servers": [ "servers": [
{ {
@ -65,7 +65,7 @@
"passHostHeader": true "passHostHeader": true
}, },
"usedBy": [ "usedBy": [
"kubernetescrd.default/test2-crd-23c7f4c450289ee29016" "kubernetescrd@default/test2-crd-23c7f4c450289ee29016"
], ],
"serverStatus": { "serverStatus": {
"http://10.42.0.4:80": "UP", "http://10.42.0.4:80": "UP",
@ -74,7 +74,7 @@
} }
}, },
"tcpRouters": { "tcpRouters": {
"kubernetescrd.default/test3-crd-673acf455cb2dab0b43a": { "kubernetescrd@default/test3-crd-673acf455cb2dab0b43a": {
"entryPoints": [ "entryPoints": [
"footcp" "footcp"
], ],
@ -83,7 +83,7 @@
} }
}, },
"tcpServices": { "tcpServices": {
"kubernetescrd.default/test3-crd-673acf455cb2dab0b43a": { "kubernetescrd@default/test3-crd-673acf455cb2dab0b43a": {
"loadbalancer": { "loadbalancer": {
"servers": [ "servers": [
{ {
@ -95,7 +95,7 @@
] ]
}, },
"usedBy": [ "usedBy": [
"kubernetescrd.default/test3-crd-673acf455cb2dab0b43a" "kubernetescrd@default/test3-crd-673acf455cb2dab0b43a"
] ]
} }
} }

View file

@ -1,13 +1,13 @@
{ {
"routers": { "routers": {
"kubernetes.whoami-test/whoami": { "kubernetes@whoami-test/whoami": {
"entryPoints": null, "entryPoints": null,
"service": "default/whoami/http", "service": "default/whoami/http",
"rule": "Host(`whoami.test`) \u0026\u0026 PathPrefix(`/whoami`)" "rule": "Host(`whoami.test`) \u0026\u0026 PathPrefix(`/whoami`)"
} }
}, },
"services": { "services": {
"kubernetes.default/whoami/http": { "kubernetes@default/whoami/http": {
"loadbalancer": { "loadbalancer": {
"servers": [ "servers": [
{ {
@ -20,7 +20,7 @@
"passHostHeader": true "passHostHeader": true
}, },
"usedBy": [ "usedBy": [
"kubernetes.whoami-test/whoami" "kubernetes@whoami-test/whoami"
], ],
"serverStatus": { "serverStatus": {
"http://10.42.0.2:80": "UP", "http://10.42.0.2:80": "UP",

View file

@ -89,7 +89,7 @@ func (s *TracingSuite) TestZipkinRateLimit(c *check.C) {
err = try.GetRequest("http://127.0.0.1:8000/ratelimit", 500*time.Millisecond, try.StatusCodeIs(http.StatusTooManyRequests)) err = try.GetRequest("http://127.0.0.1:8000/ratelimit", 500*time.Millisecond, try.StatusCodeIs(http.StatusTooManyRequests))
c.Assert(err, checker.IsNil) c.Assert(err, checker.IsNil)
err = try.GetRequest("http://"+s.ZipkinIP+":9411/api/v2/spans?serviceName=tracing", 20*time.Second, try.BodyContains("forward service1/file.router1", "file.ratelimit")) err = try.GetRequest("http://"+s.ZipkinIP+":9411/api/v2/spans?serviceName=tracing", 20*time.Second, try.BodyContains("forward service1/file@router1", "file@ratelimit"))
c.Assert(err, checker.IsNil) c.Assert(err, checker.IsNil)
} }
@ -117,7 +117,7 @@ func (s *TracingSuite) TestZipkinRetry(c *check.C) {
err = try.GetRequest("http://127.0.0.1:8000/retry", 500*time.Millisecond, try.StatusCodeIs(http.StatusBadGateway)) err = try.GetRequest("http://127.0.0.1:8000/retry", 500*time.Millisecond, try.StatusCodeIs(http.StatusBadGateway))
c.Assert(err, checker.IsNil) c.Assert(err, checker.IsNil)
err = try.GetRequest("http://"+s.ZipkinIP+":9411/api/v2/spans?serviceName=tracing", 20*time.Second, try.BodyContains("forward service2/file.router2", "file.retry")) err = try.GetRequest("http://"+s.ZipkinIP+":9411/api/v2/spans?serviceName=tracing", 20*time.Second, try.BodyContains("forward service2/file@router2", "file@retry"))
c.Assert(err, checker.IsNil) c.Assert(err, checker.IsNil)
} }
@ -144,6 +144,6 @@ func (s *TracingSuite) TestZipkinAuth(c *check.C) {
err = try.GetRequest("http://127.0.0.1:8000/auth", 500*time.Millisecond, try.StatusCodeIs(http.StatusUnauthorized)) err = try.GetRequest("http://127.0.0.1:8000/auth", 500*time.Millisecond, try.StatusCodeIs(http.StatusUnauthorized))
c.Assert(err, checker.IsNil) c.Assert(err, checker.IsNil)
err = try.GetRequest("http://"+s.ZipkinIP+":9411/api/v2/spans?serviceName=tracing", 20*time.Second, try.BodyContains("entrypoint web", "file.basic-auth")) err = try.GetRequest("http://"+s.ZipkinIP+":9411/api/v2/spans?serviceName=tracing", 20*time.Second, try.BodyContains("entrypoint web", "file@basic-auth"))
c.Assert(err, checker.IsNil) c.Assert(err, checker.IsNil)
} }

View file

@ -47,20 +47,20 @@ func TestHandlerTCP_API(t *testing.T) {
path: "/api/tcp/routers", path: "/api/tcp/routers",
conf: config.RuntimeConfiguration{ conf: config.RuntimeConfiguration{
TCPRouters: map[string]*config.TCPRouterInfo{ TCPRouters: map[string]*config.TCPRouterInfo{
"myprovider.test": { "myprovider@test": {
TCPRouter: &config.TCPRouter{ TCPRouter: &config.TCPRouter{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`foo.bar.other`)", Rule: "Host(`foo.bar.other`)",
TLS: &config.RouterTCPTLSConfig{ TLS: &config.RouterTCPTLSConfig{
Passthrough: false, Passthrough: false,
}, },
}, },
}, },
"myprovider.bar": { "myprovider@bar": {
TCPRouter: &config.TCPRouter{ TCPRouter: &config.TCPRouter{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`foo.bar`)", Rule: "Host(`foo.bar`)",
}, },
}, },
@ -77,24 +77,24 @@ func TestHandlerTCP_API(t *testing.T) {
path: "/api/tcp/routers?page=2&per_page=1", path: "/api/tcp/routers?page=2&per_page=1",
conf: config.RuntimeConfiguration{ conf: config.RuntimeConfiguration{
TCPRouters: map[string]*config.TCPRouterInfo{ TCPRouters: map[string]*config.TCPRouterInfo{
"myprovider.bar": { "myprovider@bar": {
TCPRouter: &config.TCPRouter{ TCPRouter: &config.TCPRouter{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`foo.bar`)", Rule: "Host(`foo.bar`)",
}, },
}, },
"myprovider.baz": { "myprovider@baz": {
TCPRouter: &config.TCPRouter{ TCPRouter: &config.TCPRouter{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`toto.bar`)", Rule: "Host(`toto.bar`)",
}, },
}, },
"myprovider.test": { "myprovider@test": {
TCPRouter: &config.TCPRouter{ TCPRouter: &config.TCPRouter{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`foo.bar.other`)", Rule: "Host(`foo.bar.other`)",
}, },
}, },
@ -108,13 +108,13 @@ func TestHandlerTCP_API(t *testing.T) {
}, },
{ {
desc: "one TCP router by id", desc: "one TCP router by id",
path: "/api/tcp/routers/myprovider.bar", path: "/api/tcp/routers/myprovider@bar",
conf: config.RuntimeConfiguration{ conf: config.RuntimeConfiguration{
TCPRouters: map[string]*config.TCPRouterInfo{ TCPRouters: map[string]*config.TCPRouterInfo{
"myprovider.bar": { "myprovider@bar": {
TCPRouter: &config.TCPRouter{ TCPRouter: &config.TCPRouter{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`foo.bar`)", Rule: "Host(`foo.bar`)",
}, },
}, },
@ -127,13 +127,13 @@ func TestHandlerTCP_API(t *testing.T) {
}, },
{ {
desc: "one TCP router by id, that does not exist", desc: "one TCP router by id, that does not exist",
path: "/api/tcp/routers/myprovider.foo", path: "/api/tcp/routers/myprovider@foo",
conf: config.RuntimeConfiguration{ conf: config.RuntimeConfiguration{
TCPRouters: map[string]*config.TCPRouterInfo{ TCPRouters: map[string]*config.TCPRouterInfo{
"myprovider.bar": { "myprovider@bar": {
TCPRouter: &config.TCPRouter{ TCPRouter: &config.TCPRouter{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`foo.bar`)", Rule: "Host(`foo.bar`)",
}, },
}, },
@ -145,7 +145,7 @@ func TestHandlerTCP_API(t *testing.T) {
}, },
{ {
desc: "one TCP router by id, but no config", desc: "one TCP router by id, but no config",
path: "/api/tcp/routers/myprovider.bar", path: "/api/tcp/routers/myprovider@bar",
conf: config.RuntimeConfiguration{}, conf: config.RuntimeConfiguration{},
expected: expected{ expected: expected{
statusCode: http.StatusNotFound, statusCode: http.StatusNotFound,
@ -166,7 +166,7 @@ func TestHandlerTCP_API(t *testing.T) {
path: "/api/tcp/services", path: "/api/tcp/services",
conf: config.RuntimeConfiguration{ conf: config.RuntimeConfiguration{
TCPServices: map[string]*config.TCPServiceInfo{ TCPServices: map[string]*config.TCPServiceInfo{
"myprovider.bar": { "myprovider@bar": {
TCPService: &config.TCPService{ TCPService: &config.TCPService{
LoadBalancer: &config.TCPLoadBalancerService{ LoadBalancer: &config.TCPLoadBalancerService{
Servers: []config.TCPServer{ Servers: []config.TCPServer{
@ -176,9 +176,9 @@ func TestHandlerTCP_API(t *testing.T) {
}, },
}, },
}, },
UsedBy: []string{"myprovider.foo", "myprovider.test"}, UsedBy: []string{"myprovider@foo", "myprovider@test"},
}, },
"myprovider.baz": { "myprovider@baz": {
TCPService: &config.TCPService{ TCPService: &config.TCPService{
LoadBalancer: &config.TCPLoadBalancerService{ LoadBalancer: &config.TCPLoadBalancerService{
Servers: []config.TCPServer{ Servers: []config.TCPServer{
@ -188,7 +188,7 @@ func TestHandlerTCP_API(t *testing.T) {
}, },
}, },
}, },
UsedBy: []string{"myprovider.foo"}, UsedBy: []string{"myprovider@foo"},
}, },
}, },
}, },
@ -203,7 +203,7 @@ func TestHandlerTCP_API(t *testing.T) {
path: "/api/tcp/services?page=2&per_page=1", path: "/api/tcp/services?page=2&per_page=1",
conf: config.RuntimeConfiguration{ conf: config.RuntimeConfiguration{
TCPServices: map[string]*config.TCPServiceInfo{ TCPServices: map[string]*config.TCPServiceInfo{
"myprovider.bar": { "myprovider@bar": {
TCPService: &config.TCPService{ TCPService: &config.TCPService{
LoadBalancer: &config.TCPLoadBalancerService{ LoadBalancer: &config.TCPLoadBalancerService{
Servers: []config.TCPServer{ Servers: []config.TCPServer{
@ -213,9 +213,9 @@ func TestHandlerTCP_API(t *testing.T) {
}, },
}, },
}, },
UsedBy: []string{"myprovider.foo", "myprovider.test"}, UsedBy: []string{"myprovider@foo", "myprovider@test"},
}, },
"myprovider.baz": { "myprovider@baz": {
TCPService: &config.TCPService{ TCPService: &config.TCPService{
LoadBalancer: &config.TCPLoadBalancerService{ LoadBalancer: &config.TCPLoadBalancerService{
Servers: []config.TCPServer{ Servers: []config.TCPServer{
@ -225,9 +225,9 @@ func TestHandlerTCP_API(t *testing.T) {
}, },
}, },
}, },
UsedBy: []string{"myprovider.foo"}, UsedBy: []string{"myprovider@foo"},
}, },
"myprovider.test": { "myprovider@test": {
TCPService: &config.TCPService{ TCPService: &config.TCPService{
LoadBalancer: &config.TCPLoadBalancerService{ LoadBalancer: &config.TCPLoadBalancerService{
Servers: []config.TCPServer{ Servers: []config.TCPServer{
@ -248,10 +248,10 @@ func TestHandlerTCP_API(t *testing.T) {
}, },
{ {
desc: "one tcp service by id", desc: "one tcp service by id",
path: "/api/tcp/services/myprovider.bar", path: "/api/tcp/services/myprovider@bar",
conf: config.RuntimeConfiguration{ conf: config.RuntimeConfiguration{
TCPServices: map[string]*config.TCPServiceInfo{ TCPServices: map[string]*config.TCPServiceInfo{
"myprovider.bar": { "myprovider@bar": {
TCPService: &config.TCPService{ TCPService: &config.TCPService{
LoadBalancer: &config.TCPLoadBalancerService{ LoadBalancer: &config.TCPLoadBalancerService{
Servers: []config.TCPServer{ Servers: []config.TCPServer{
@ -261,7 +261,7 @@ func TestHandlerTCP_API(t *testing.T) {
}, },
}, },
}, },
UsedBy: []string{"myprovider.foo", "myprovider.test"}, UsedBy: []string{"myprovider@foo", "myprovider@test"},
}, },
}, },
}, },
@ -272,10 +272,10 @@ func TestHandlerTCP_API(t *testing.T) {
}, },
{ {
desc: "one tcp service by id, that does not exist", desc: "one tcp service by id, that does not exist",
path: "/api/tcp/services/myprovider.nono", path: "/api/tcp/services/myprovider@nono",
conf: config.RuntimeConfiguration{ conf: config.RuntimeConfiguration{
TCPServices: map[string]*config.TCPServiceInfo{ TCPServices: map[string]*config.TCPServiceInfo{
"myprovider.bar": { "myprovider@bar": {
TCPService: &config.TCPService{ TCPService: &config.TCPService{
LoadBalancer: &config.TCPLoadBalancerService{ LoadBalancer: &config.TCPLoadBalancerService{
Servers: []config.TCPServer{ Servers: []config.TCPServer{
@ -285,7 +285,7 @@ func TestHandlerTCP_API(t *testing.T) {
}, },
}, },
}, },
UsedBy: []string{"myprovider.foo", "myprovider.test"}, UsedBy: []string{"myprovider@foo", "myprovider@test"},
}, },
}, },
}, },
@ -295,7 +295,7 @@ func TestHandlerTCP_API(t *testing.T) {
}, },
{ {
desc: "one tcp service by id, but no config", desc: "one tcp service by id, but no config",
path: "/api/tcp/services/myprovider.foo", path: "/api/tcp/services/myprovider@foo",
conf: config.RuntimeConfiguration{}, conf: config.RuntimeConfiguration{},
expected: expected{ expected: expected{
statusCode: http.StatusNotFound, statusCode: http.StatusNotFound,
@ -379,20 +379,20 @@ func TestHandlerHTTP_API(t *testing.T) {
path: "/api/http/routers", path: "/api/http/routers",
conf: config.RuntimeConfiguration{ conf: config.RuntimeConfiguration{
Routers: map[string]*config.RouterInfo{ Routers: map[string]*config.RouterInfo{
"myprovider.test": { "myprovider@test": {
Router: &config.Router{ Router: &config.Router{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`foo.bar.other`)", Rule: "Host(`foo.bar.other`)",
Middlewares: []string{"addPrefixTest", "auth"}, Middlewares: []string{"addPrefixTest", "auth"},
}, },
}, },
"myprovider.bar": { "myprovider@bar": {
Router: &config.Router{ Router: &config.Router{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`foo.bar`)", Rule: "Host(`foo.bar`)",
Middlewares: []string{"auth", "anotherprovider.addPrefixTest"}, Middlewares: []string{"auth", "anotherprovider@addPrefixTest"},
}, },
}, },
}, },
@ -408,25 +408,25 @@ func TestHandlerHTTP_API(t *testing.T) {
path: "/api/http/routers?page=2&per_page=1", path: "/api/http/routers?page=2&per_page=1",
conf: config.RuntimeConfiguration{ conf: config.RuntimeConfiguration{
Routers: map[string]*config.RouterInfo{ Routers: map[string]*config.RouterInfo{
"myprovider.bar": { "myprovider@bar": {
Router: &config.Router{ Router: &config.Router{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`foo.bar`)", Rule: "Host(`foo.bar`)",
Middlewares: []string{"auth", "anotherprovider.addPrefixTest"}, Middlewares: []string{"auth", "anotherprovider@addPrefixTest"},
}, },
}, },
"myprovider.baz": { "myprovider@baz": {
Router: &config.Router{ Router: &config.Router{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`toto.bar`)", Rule: "Host(`toto.bar`)",
}, },
}, },
"myprovider.test": { "myprovider@test": {
Router: &config.Router{ Router: &config.Router{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`foo.bar.other`)", Rule: "Host(`foo.bar.other`)",
Middlewares: []string{"addPrefixTest", "auth"}, Middlewares: []string{"addPrefixTest", "auth"},
}, },
@ -473,15 +473,15 @@ func TestHandlerHTTP_API(t *testing.T) {
}, },
{ {
desc: "one router by id", desc: "one router by id",
path: "/api/http/routers/myprovider.bar", path: "/api/http/routers/myprovider@bar",
conf: config.RuntimeConfiguration{ conf: config.RuntimeConfiguration{
Routers: map[string]*config.RouterInfo{ Routers: map[string]*config.RouterInfo{
"myprovider.bar": { "myprovider@bar": {
Router: &config.Router{ Router: &config.Router{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`foo.bar`)", Rule: "Host(`foo.bar`)",
Middlewares: []string{"auth", "anotherprovider.addPrefixTest"}, Middlewares: []string{"auth", "anotherprovider@addPrefixTest"},
}, },
}, },
}, },
@ -493,15 +493,15 @@ func TestHandlerHTTP_API(t *testing.T) {
}, },
{ {
desc: "one router by id, that does not exist", desc: "one router by id, that does not exist",
path: "/api/http/routers/myprovider.foo", path: "/api/http/routers/myprovider@foo",
conf: config.RuntimeConfiguration{ conf: config.RuntimeConfiguration{
Routers: map[string]*config.RouterInfo{ Routers: map[string]*config.RouterInfo{
"myprovider.bar": { "myprovider@bar": {
Router: &config.Router{ Router: &config.Router{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`foo.bar`)", Rule: "Host(`foo.bar`)",
Middlewares: []string{"auth", "anotherprovider.addPrefixTest"}, Middlewares: []string{"auth", "anotherprovider@addPrefixTest"},
}, },
}, },
}, },
@ -512,7 +512,7 @@ func TestHandlerHTTP_API(t *testing.T) {
}, },
{ {
desc: "one router by id, but no config", desc: "one router by id, but no config",
path: "/api/http/routers/myprovider.foo", path: "/api/http/routers/myprovider@foo",
conf: config.RuntimeConfiguration{}, conf: config.RuntimeConfiguration{},
expected: expected{ expected: expected{
statusCode: http.StatusNotFound, statusCode: http.StatusNotFound,
@ -533,7 +533,7 @@ func TestHandlerHTTP_API(t *testing.T) {
path: "/api/http/services", path: "/api/http/services",
conf: config.RuntimeConfiguration{ conf: config.RuntimeConfiguration{
Services: map[string]*config.ServiceInfo{ Services: map[string]*config.ServiceInfo{
"myprovider.bar": func() *config.ServiceInfo { "myprovider@bar": func() *config.ServiceInfo {
si := &config.ServiceInfo{ si := &config.ServiceInfo{
Service: &config.Service{ Service: &config.Service{
LoadBalancer: &config.LoadBalancerService{ LoadBalancer: &config.LoadBalancerService{
@ -544,12 +544,12 @@ func TestHandlerHTTP_API(t *testing.T) {
}, },
}, },
}, },
UsedBy: []string{"myprovider.foo", "myprovider.test"}, UsedBy: []string{"myprovider@foo", "myprovider@test"},
} }
si.UpdateStatus("http://127.0.0.1", "UP") si.UpdateStatus("http://127.0.0.1", "UP")
return si return si
}(), }(),
"myprovider.baz": func() *config.ServiceInfo { "myprovider@baz": func() *config.ServiceInfo {
si := &config.ServiceInfo{ si := &config.ServiceInfo{
Service: &config.Service{ Service: &config.Service{
LoadBalancer: &config.LoadBalancerService{ LoadBalancer: &config.LoadBalancerService{
@ -560,7 +560,7 @@ func TestHandlerHTTP_API(t *testing.T) {
}, },
}, },
}, },
UsedBy: []string{"myprovider.foo"}, UsedBy: []string{"myprovider@foo"},
} }
si.UpdateStatus("http://127.0.0.2", "UP") si.UpdateStatus("http://127.0.0.2", "UP")
return si return si
@ -578,7 +578,7 @@ func TestHandlerHTTP_API(t *testing.T) {
path: "/api/http/services?page=2&per_page=1", path: "/api/http/services?page=2&per_page=1",
conf: config.RuntimeConfiguration{ conf: config.RuntimeConfiguration{
Services: map[string]*config.ServiceInfo{ Services: map[string]*config.ServiceInfo{
"myprovider.bar": func() *config.ServiceInfo { "myprovider@bar": func() *config.ServiceInfo {
si := &config.ServiceInfo{ si := &config.ServiceInfo{
Service: &config.Service{ Service: &config.Service{
LoadBalancer: &config.LoadBalancerService{ LoadBalancer: &config.LoadBalancerService{
@ -589,12 +589,12 @@ func TestHandlerHTTP_API(t *testing.T) {
}, },
}, },
}, },
UsedBy: []string{"myprovider.foo", "myprovider.test"}, UsedBy: []string{"myprovider@foo", "myprovider@test"},
} }
si.UpdateStatus("http://127.0.0.1", "UP") si.UpdateStatus("http://127.0.0.1", "UP")
return si return si
}(), }(),
"myprovider.baz": func() *config.ServiceInfo { "myprovider@baz": func() *config.ServiceInfo {
si := &config.ServiceInfo{ si := &config.ServiceInfo{
Service: &config.Service{ Service: &config.Service{
LoadBalancer: &config.LoadBalancerService{ LoadBalancer: &config.LoadBalancerService{
@ -605,12 +605,12 @@ func TestHandlerHTTP_API(t *testing.T) {
}, },
}, },
}, },
UsedBy: []string{"myprovider.foo"}, UsedBy: []string{"myprovider@foo"},
} }
si.UpdateStatus("http://127.0.0.2", "UP") si.UpdateStatus("http://127.0.0.2", "UP")
return si return si
}(), }(),
"myprovider.test": func() *config.ServiceInfo { "myprovider@test": func() *config.ServiceInfo {
si := &config.ServiceInfo{ si := &config.ServiceInfo{
Service: &config.Service{ Service: &config.Service{
LoadBalancer: &config.LoadBalancerService{ LoadBalancer: &config.LoadBalancerService{
@ -621,7 +621,7 @@ func TestHandlerHTTP_API(t *testing.T) {
}, },
}, },
}, },
UsedBy: []string{"myprovider.foo", "myprovider.test"}, UsedBy: []string{"myprovider@foo", "myprovider@test"},
} }
si.UpdateStatus("http://127.0.0.4", "UP") si.UpdateStatus("http://127.0.0.4", "UP")
return si return si
@ -636,10 +636,10 @@ func TestHandlerHTTP_API(t *testing.T) {
}, },
{ {
desc: "one service by id", desc: "one service by id",
path: "/api/http/services/myprovider.bar", path: "/api/http/services/myprovider@bar",
conf: config.RuntimeConfiguration{ conf: config.RuntimeConfiguration{
Services: map[string]*config.ServiceInfo{ Services: map[string]*config.ServiceInfo{
"myprovider.bar": func() *config.ServiceInfo { "myprovider@bar": func() *config.ServiceInfo {
si := &config.ServiceInfo{ si := &config.ServiceInfo{
Service: &config.Service{ Service: &config.Service{
LoadBalancer: &config.LoadBalancerService{ LoadBalancer: &config.LoadBalancerService{
@ -650,7 +650,7 @@ func TestHandlerHTTP_API(t *testing.T) {
}, },
}, },
}, },
UsedBy: []string{"myprovider.foo", "myprovider.test"}, UsedBy: []string{"myprovider@foo", "myprovider@test"},
} }
si.UpdateStatus("http://127.0.0.1", "UP") si.UpdateStatus("http://127.0.0.1", "UP")
return si return si
@ -664,10 +664,10 @@ func TestHandlerHTTP_API(t *testing.T) {
}, },
{ {
desc: "one service by id, that does not exist", desc: "one service by id, that does not exist",
path: "/api/http/services/myprovider.nono", path: "/api/http/services/myprovider@nono",
conf: config.RuntimeConfiguration{ conf: config.RuntimeConfiguration{
Services: map[string]*config.ServiceInfo{ Services: map[string]*config.ServiceInfo{
"myprovider.bar": func() *config.ServiceInfo { "myprovider@bar": func() *config.ServiceInfo {
si := &config.ServiceInfo{ si := &config.ServiceInfo{
Service: &config.Service{ Service: &config.Service{
LoadBalancer: &config.LoadBalancerService{ LoadBalancer: &config.LoadBalancerService{
@ -678,7 +678,7 @@ func TestHandlerHTTP_API(t *testing.T) {
}, },
}, },
}, },
UsedBy: []string{"myprovider.foo", "myprovider.test"}, UsedBy: []string{"myprovider@foo", "myprovider@test"},
} }
si.UpdateStatus("http://127.0.0.1", "UP") si.UpdateStatus("http://127.0.0.1", "UP")
return si return si
@ -691,7 +691,7 @@ func TestHandlerHTTP_API(t *testing.T) {
}, },
{ {
desc: "one service by id, but no config", desc: "one service by id, but no config",
path: "/api/http/services/myprovider.foo", path: "/api/http/services/myprovider@foo",
conf: config.RuntimeConfiguration{}, conf: config.RuntimeConfiguration{},
expected: expected{ expected: expected{
statusCode: http.StatusNotFound, statusCode: http.StatusNotFound,
@ -712,29 +712,29 @@ func TestHandlerHTTP_API(t *testing.T) {
path: "/api/http/middlewares", path: "/api/http/middlewares",
conf: config.RuntimeConfiguration{ conf: config.RuntimeConfiguration{
Middlewares: map[string]*config.MiddlewareInfo{ Middlewares: map[string]*config.MiddlewareInfo{
"myprovider.auth": { "myprovider@auth": {
Middleware: &config.Middleware{ Middleware: &config.Middleware{
BasicAuth: &config.BasicAuth{ BasicAuth: &config.BasicAuth{
Users: []string{"admin:admin"}, Users: []string{"admin:admin"},
}, },
}, },
UsedBy: []string{"myprovider.bar", "myprovider.test"}, UsedBy: []string{"myprovider@bar", "myprovider@test"},
}, },
"myprovider.addPrefixTest": { "myprovider@addPrefixTest": {
Middleware: &config.Middleware{ Middleware: &config.Middleware{
AddPrefix: &config.AddPrefix{ AddPrefix: &config.AddPrefix{
Prefix: "/titi", Prefix: "/titi",
}, },
}, },
UsedBy: []string{"myprovider.test"}, UsedBy: []string{"myprovider@test"},
}, },
"anotherprovider.addPrefixTest": { "anotherprovider@addPrefixTest": {
Middleware: &config.Middleware{ Middleware: &config.Middleware{
AddPrefix: &config.AddPrefix{ AddPrefix: &config.AddPrefix{
Prefix: "/toto", Prefix: "/toto",
}, },
}, },
UsedBy: []string{"myprovider.bar"}, UsedBy: []string{"myprovider@bar"},
}, },
}, },
}, },
@ -749,29 +749,29 @@ func TestHandlerHTTP_API(t *testing.T) {
path: "/api/http/middlewares?page=2&per_page=1", path: "/api/http/middlewares?page=2&per_page=1",
conf: config.RuntimeConfiguration{ conf: config.RuntimeConfiguration{
Middlewares: map[string]*config.MiddlewareInfo{ Middlewares: map[string]*config.MiddlewareInfo{
"myprovider.auth": { "myprovider@auth": {
Middleware: &config.Middleware{ Middleware: &config.Middleware{
BasicAuth: &config.BasicAuth{ BasicAuth: &config.BasicAuth{
Users: []string{"admin:admin"}, Users: []string{"admin:admin"},
}, },
}, },
UsedBy: []string{"myprovider.bar", "myprovider.test"}, UsedBy: []string{"myprovider@bar", "myprovider@test"},
}, },
"myprovider.addPrefixTest": { "myprovider@addPrefixTest": {
Middleware: &config.Middleware{ Middleware: &config.Middleware{
AddPrefix: &config.AddPrefix{ AddPrefix: &config.AddPrefix{
Prefix: "/titi", Prefix: "/titi",
}, },
}, },
UsedBy: []string{"myprovider.test"}, UsedBy: []string{"myprovider@test"},
}, },
"anotherprovider.addPrefixTest": { "anotherprovider@addPrefixTest": {
Middleware: &config.Middleware{ Middleware: &config.Middleware{
AddPrefix: &config.AddPrefix{ AddPrefix: &config.AddPrefix{
Prefix: "/toto", Prefix: "/toto",
}, },
}, },
UsedBy: []string{"myprovider.bar"}, UsedBy: []string{"myprovider@bar"},
}, },
}, },
}, },
@ -783,32 +783,32 @@ func TestHandlerHTTP_API(t *testing.T) {
}, },
{ {
desc: "one middleware by id", desc: "one middleware by id",
path: "/api/http/middlewares/myprovider.auth", path: "/api/http/middlewares/myprovider@auth",
conf: config.RuntimeConfiguration{ conf: config.RuntimeConfiguration{
Middlewares: map[string]*config.MiddlewareInfo{ Middlewares: map[string]*config.MiddlewareInfo{
"myprovider.auth": { "myprovider@auth": {
Middleware: &config.Middleware{ Middleware: &config.Middleware{
BasicAuth: &config.BasicAuth{ BasicAuth: &config.BasicAuth{
Users: []string{"admin:admin"}, Users: []string{"admin:admin"},
}, },
}, },
UsedBy: []string{"myprovider.bar", "myprovider.test"}, UsedBy: []string{"myprovider@bar", "myprovider@test"},
}, },
"myprovider.addPrefixTest": { "myprovider@addPrefixTest": {
Middleware: &config.Middleware{ Middleware: &config.Middleware{
AddPrefix: &config.AddPrefix{ AddPrefix: &config.AddPrefix{
Prefix: "/titi", Prefix: "/titi",
}, },
}, },
UsedBy: []string{"myprovider.test"}, UsedBy: []string{"myprovider@test"},
}, },
"anotherprovider.addPrefixTest": { "anotherprovider@addPrefixTest": {
Middleware: &config.Middleware{ Middleware: &config.Middleware{
AddPrefix: &config.AddPrefix{ AddPrefix: &config.AddPrefix{
Prefix: "/toto", Prefix: "/toto",
}, },
}, },
UsedBy: []string{"myprovider.bar"}, UsedBy: []string{"myprovider@bar"},
}, },
}, },
}, },
@ -819,16 +819,16 @@ func TestHandlerHTTP_API(t *testing.T) {
}, },
{ {
desc: "one middleware by id, that does not exist", desc: "one middleware by id, that does not exist",
path: "/api/http/middlewares/myprovider.foo", path: "/api/http/middlewares/myprovider@foo",
conf: config.RuntimeConfiguration{ conf: config.RuntimeConfiguration{
Middlewares: map[string]*config.MiddlewareInfo{ Middlewares: map[string]*config.MiddlewareInfo{
"myprovider.auth": { "myprovider@auth": {
Middleware: &config.Middleware{ Middleware: &config.Middleware{
BasicAuth: &config.BasicAuth{ BasicAuth: &config.BasicAuth{
Users: []string{"admin:admin"}, Users: []string{"admin:admin"},
}, },
}, },
UsedBy: []string{"myprovider.bar", "myprovider.test"}, UsedBy: []string{"myprovider@bar", "myprovider@test"},
}, },
}, },
}, },
@ -838,7 +838,7 @@ func TestHandlerHTTP_API(t *testing.T) {
}, },
{ {
desc: "one middleware by id, but no config", desc: "one middleware by id, but no config",
path: "/api/http/middlewares/myprovider.foo", path: "/api/http/middlewares/myprovider@foo",
conf: config.RuntimeConfiguration{}, conf: config.RuntimeConfiguration{},
expected: expected{ expected: expected{
statusCode: http.StatusNotFound, statusCode: http.StatusNotFound,
@ -912,7 +912,7 @@ func TestHandler_Configuration(t *testing.T) {
path: "/api/rawdata", path: "/api/rawdata",
conf: config.RuntimeConfiguration{ conf: config.RuntimeConfiguration{
Services: map[string]*config.ServiceInfo{ Services: map[string]*config.ServiceInfo{
"myprovider.foo-service": { "myprovider@foo-service": {
Service: &config.Service{ Service: &config.Service{
LoadBalancer: &config.LoadBalancerService{ LoadBalancer: &config.LoadBalancerService{
Servers: []config.Server{ Servers: []config.Server{
@ -925,21 +925,21 @@ func TestHandler_Configuration(t *testing.T) {
}, },
}, },
Middlewares: map[string]*config.MiddlewareInfo{ Middlewares: map[string]*config.MiddlewareInfo{
"myprovider.auth": { "myprovider@auth": {
Middleware: &config.Middleware{ Middleware: &config.Middleware{
BasicAuth: &config.BasicAuth{ BasicAuth: &config.BasicAuth{
Users: []string{"admin:admin"}, Users: []string{"admin:admin"},
}, },
}, },
}, },
"myprovider.addPrefixTest": { "myprovider@addPrefixTest": {
Middleware: &config.Middleware{ Middleware: &config.Middleware{
AddPrefix: &config.AddPrefix{ AddPrefix: &config.AddPrefix{
Prefix: "/titi", Prefix: "/titi",
}, },
}, },
}, },
"anotherprovider.addPrefixTest": { "anotherprovider@addPrefixTest": {
Middleware: &config.Middleware{ Middleware: &config.Middleware{
AddPrefix: &config.AddPrefix{ AddPrefix: &config.AddPrefix{
Prefix: "/toto", Prefix: "/toto",
@ -948,25 +948,25 @@ func TestHandler_Configuration(t *testing.T) {
}, },
}, },
Routers: map[string]*config.RouterInfo{ Routers: map[string]*config.RouterInfo{
"myprovider.bar": { "myprovider@bar": {
Router: &config.Router{ Router: &config.Router{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`foo.bar`)", Rule: "Host(`foo.bar`)",
Middlewares: []string{"auth", "anotherprovider.addPrefixTest"}, Middlewares: []string{"auth", "anotherprovider@addPrefixTest"},
}, },
}, },
"myprovider.test": { "myprovider@test": {
Router: &config.Router{ Router: &config.Router{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`foo.bar.other`)", Rule: "Host(`foo.bar.other`)",
Middlewares: []string{"addPrefixTest", "auth"}, Middlewares: []string{"addPrefixTest", "auth"},
}, },
}, },
}, },
TCPServices: map[string]*config.TCPServiceInfo{ TCPServices: map[string]*config.TCPServiceInfo{
"myprovider.tcpfoo-service": { "myprovider@tcpfoo-service": {
TCPService: &config.TCPService{ TCPService: &config.TCPService{
LoadBalancer: &config.TCPLoadBalancerService{ LoadBalancer: &config.TCPLoadBalancerService{
Servers: []config.TCPServer{ Servers: []config.TCPServer{
@ -979,17 +979,17 @@ func TestHandler_Configuration(t *testing.T) {
}, },
}, },
TCPRouters: map[string]*config.TCPRouterInfo{ TCPRouters: map[string]*config.TCPRouterInfo{
"myprovider.tcpbar": { "myprovider@tcpbar": {
TCPRouter: &config.TCPRouter{ TCPRouter: &config.TCPRouter{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.tcpfoo-service", Service: "myprovider@tcpfoo-service",
Rule: "HostSNI(`foo.bar`)", Rule: "HostSNI(`foo.bar`)",
}, },
}, },
"myprovider.tcptest": { "myprovider@tcptest": {
TCPRouter: &config.TCPRouter{ TCPRouter: &config.TCPRouter{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.tcpfoo-service", Service: "myprovider@tcpfoo-service",
Rule: "HostSNI(`foo.bar.other`)", Rule: "HostSNI(`foo.bar.other`)",
}, },
}, },
@ -1054,10 +1054,10 @@ func TestHandler_Configuration(t *testing.T) {
func generateHTTPRouters(nbRouters int) map[string]*config.RouterInfo { func generateHTTPRouters(nbRouters int) map[string]*config.RouterInfo {
routers := make(map[string]*config.RouterInfo, nbRouters) routers := make(map[string]*config.RouterInfo, nbRouters)
for i := 0; i < nbRouters; i++ { for i := 0; i < nbRouters; i++ {
routers[fmt.Sprintf("myprovider.bar%2d", i)] = &config.RouterInfo{ routers[fmt.Sprintf("myprovider@bar%2d", i)] = &config.RouterInfo{
Router: &config.Router{ Router: &config.Router{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`foo.bar" + strconv.Itoa(i) + "`)", Rule: "Host(`foo.bar" + strconv.Itoa(i) + "`)",
}, },
} }

View file

@ -1,17 +1,17 @@
{ {
"routers": { "routers": {
"myprovider.bar": { "myprovider@bar": {
"entryPoints": [ "entryPoints": [
"web" "web"
], ],
"middlewares": [ "middlewares": [
"auth", "auth",
"anotherprovider.addPrefixTest" "anotherprovider@addPrefixTest"
], ],
"service": "myprovider.foo-service", "service": "myprovider@foo-service",
"rule": "Host(`foo.bar`)" "rule": "Host(`foo.bar`)"
}, },
"myprovider.test": { "myprovider@test": {
"entryPoints": [ "entryPoints": [
"web" "web"
], ],
@ -19,41 +19,41 @@
"addPrefixTest", "addPrefixTest",
"auth" "auth"
], ],
"service": "myprovider.foo-service", "service": "myprovider@foo-service",
"rule": "Host(`foo.bar.other`)" "rule": "Host(`foo.bar.other`)"
} }
}, },
"middlewares": { "middlewares": {
"anotherprovider.addPrefixTest": { "anotherprovider@addPrefixTest": {
"addPrefix": { "addPrefix": {
"prefix": "/toto" "prefix": "/toto"
}, },
"usedBy": [ "usedBy": [
"myprovider.bar" "myprovider@bar"
] ]
}, },
"myprovider.addPrefixTest": { "myprovider@addPrefixTest": {
"addPrefix": { "addPrefix": {
"prefix": "/titi" "prefix": "/titi"
}, },
"usedBy": [ "usedBy": [
"myprovider.test" "myprovider@test"
] ]
}, },
"myprovider.auth": { "myprovider@auth": {
"basicAuth": { "basicAuth": {
"users": [ "users": [
"admin:admin" "admin:admin"
] ]
}, },
"usedBy": [ "usedBy": [
"myprovider.bar", "myprovider@bar",
"myprovider.test" "myprovider@test"
] ]
} }
}, },
"services": { "services": {
"myprovider.foo-service": { "myprovider@foo-service": {
"loadbalancer": { "loadbalancer": {
"servers": [ "servers": [
{ {
@ -63,29 +63,29 @@
"passHostHeader": false "passHostHeader": false
}, },
"usedBy": [ "usedBy": [
"myprovider.bar", "myprovider@bar",
"myprovider.test" "myprovider@test"
] ]
} }
}, },
"tcpRouters": { "tcpRouters": {
"myprovider.tcpbar": { "myprovider@tcpbar": {
"entryPoints": [ "entryPoints": [
"web" "web"
], ],
"service": "myprovider.tcpfoo-service", "service": "myprovider@tcpfoo-service",
"rule": "HostSNI(`foo.bar`)" "rule": "HostSNI(`foo.bar`)"
}, },
"myprovider.tcptest": { "myprovider@tcptest": {
"entryPoints": [ "entryPoints": [
"web" "web"
], ],
"service": "myprovider.tcpfoo-service", "service": "myprovider@tcpfoo-service",
"rule": "HostSNI(`foo.bar.other`)" "rule": "HostSNI(`foo.bar.other`)"
} }
}, },
"tcpServices": { "tcpServices": {
"myprovider.tcpfoo-service": { "myprovider@tcpfoo-service": {
"loadbalancer": { "loadbalancer": {
"servers": [ "servers": [
{ {
@ -94,8 +94,8 @@
] ]
}, },
"usedBy": [ "usedBy": [
"myprovider.tcpbar", "myprovider@tcpbar",
"myprovider.tcptest" "myprovider@tcptest"
] ]
} }
} }

View file

@ -4,10 +4,10 @@
"admin:admin" "admin:admin"
] ]
}, },
"name": "myprovider.auth", "name": "myprovider@auth",
"provider": "myprovider", "provider": "myprovider@auth",
"usedBy": [ "usedBy": [
"myprovider.bar", "myprovider@bar",
"myprovider.test" "myprovider@test"
] ]
} }

View file

@ -3,10 +3,10 @@
"addPrefix": { "addPrefix": {
"prefix": "/titi" "prefix": "/titi"
}, },
"name": "myprovider.addPrefixTest", "name": "myprovider@addPrefixTest",
"provider": "myprovider", "provider": "myprovider@addPrefixTest",
"usedBy": [ "usedBy": [
"myprovider.test" "myprovider@test"
] ]
} }
] ]

View file

@ -3,20 +3,20 @@
"addPrefix": { "addPrefix": {
"prefix": "/toto" "prefix": "/toto"
}, },
"name": "anotherprovider.addPrefixTest", "name": "anotherprovider@addPrefixTest",
"provider": "anotherprovider", "provider": "anotherprovider@addPrefixTest",
"usedBy": [ "usedBy": [
"myprovider.bar" "myprovider@bar"
] ]
}, },
{ {
"addPrefix": { "addPrefix": {
"prefix": "/titi" "prefix": "/titi"
}, },
"name": "myprovider.addPrefixTest", "name": "myprovider@addPrefixTest",
"provider": "myprovider", "provider": "myprovider@addPrefixTest",
"usedBy": [ "usedBy": [
"myprovider.test" "myprovider@test"
] ]
}, },
{ {
@ -25,11 +25,11 @@
"admin:admin" "admin:admin"
] ]
}, },
"name": "myprovider.auth", "name": "myprovider@auth",
"provider": "myprovider", "provider": "myprovider@auth",
"usedBy": [ "usedBy": [
"myprovider.bar", "myprovider@bar",
"myprovider.test" "myprovider@test"
] ]
} }
] ]

View file

@ -4,10 +4,10 @@
], ],
"middlewares": [ "middlewares": [
"auth", "auth",
"anotherprovider.addPrefixTest" "anotherprovider@addPrefixTest"
], ],
"name": "myprovider.bar", "name": "myprovider@bar",
"provider": "myprovider", "provider": "myprovider@bar",
"rule": "Host(`foo.bar`)", "rule": "Host(`foo.bar`)",
"service": "myprovider.foo-service" "service": "myprovider@foo-service"
} }

View file

@ -3,45 +3,45 @@
"entryPoints": [ "entryPoints": [
"web" "web"
], ],
"name": "myprovider.bar14", "name": "myprovider@bar14",
"provider": "myprovider", "provider": "myprovider@bar14",
"rule": "Host(`foo.bar14`)", "rule": "Host(`foo.bar14`)",
"service": "myprovider.foo-service" "service": "myprovider@foo-service"
}, },
{ {
"entryPoints": [ "entryPoints": [
"web" "web"
], ],
"name": "myprovider.bar15", "name": "myprovider@bar15",
"provider": "myprovider", "provider": "myprovider@bar15",
"rule": "Host(`foo.bar15`)", "rule": "Host(`foo.bar15`)",
"service": "myprovider.foo-service" "service": "myprovider@foo-service"
}, },
{ {
"entryPoints": [ "entryPoints": [
"web" "web"
], ],
"name": "myprovider.bar16", "name": "myprovider@bar16",
"provider": "myprovider", "provider": "myprovider@bar16",
"rule": "Host(`foo.bar16`)", "rule": "Host(`foo.bar16`)",
"service": "myprovider.foo-service" "service": "myprovider@foo-service"
}, },
{ {
"entryPoints": [ "entryPoints": [
"web" "web"
], ],
"name": "myprovider.bar17", "name": "myprovider@bar17",
"provider": "myprovider", "provider": "myprovider@bar17",
"rule": "Host(`foo.bar17`)", "rule": "Host(`foo.bar17`)",
"service": "myprovider.foo-service" "service": "myprovider@foo-service"
}, },
{ {
"entryPoints": [ "entryPoints": [
"web" "web"
], ],
"name": "myprovider.bar18", "name": "myprovider@bar18",
"provider": "myprovider", "provider": "myprovider@bar18",
"rule": "Host(`foo.bar18`)", "rule": "Host(`foo.bar18`)",
"service": "myprovider.foo-service" "service": "myprovider@foo-service"
} }
] ]

View file

@ -3,9 +3,9 @@
"entryPoints": [ "entryPoints": [
"web" "web"
], ],
"name": "myprovider.baz", "name": "myprovider@baz",
"provider": "myprovider", "provider": "myprovider@baz",
"rule": "Host(`toto.bar`)", "rule": "Host(`toto.bar`)",
"service": "myprovider.foo-service" "service": "myprovider@foo-service"
} }
] ]

View file

@ -5,12 +5,12 @@
], ],
"middlewares": [ "middlewares": [
"auth", "auth",
"anotherprovider.addPrefixTest" "anotherprovider@addPrefixTest"
], ],
"name": "myprovider.bar", "name": "myprovider@bar",
"provider": "myprovider", "provider": "myprovider@bar",
"rule": "Host(`foo.bar`)", "rule": "Host(`foo.bar`)",
"service": "myprovider.foo-service" "service": "myprovider@foo-service"
}, },
{ {
"entryPoints": [ "entryPoints": [
@ -20,9 +20,9 @@
"addPrefixTest", "addPrefixTest",
"auth" "auth"
], ],
"name": "myprovider.test", "name": "myprovider@test",
"provider": "myprovider", "provider": "myprovider@test",
"rule": "Host(`foo.bar.other`)", "rule": "Host(`foo.bar.other`)",
"service": "myprovider.foo-service" "service": "myprovider@foo-service"
} }
] ]

View file

@ -7,13 +7,13 @@
} }
] ]
}, },
"name": "myprovider.bar", "name": "myprovider@bar",
"provider": "myprovider", "provider": "myprovider@bar",
"serverStatus": { "serverStatus": {
"http://127.0.0.1": "UP" "http://127.0.0.1": "UP"
}, },
"usedBy": [ "usedBy": [
"myprovider.foo", "myprovider@foo",
"myprovider.test" "myprovider@test"
] ]
} }

View file

@ -8,13 +8,13 @@
} }
] ]
}, },
"name": "myprovider.baz", "name": "myprovider@baz",
"provider": "myprovider", "provider": "myprovider@baz",
"serverStatus": { "serverStatus": {
"http://127.0.0.2": "UP" "http://127.0.0.2": "UP"
}, },
"usedBy": [ "usedBy": [
"myprovider.foo" "myprovider@foo"
] ]
} }
] ]

View file

@ -8,14 +8,14 @@
} }
] ]
}, },
"name": "myprovider.bar", "name": "myprovider@bar",
"provider": "myprovider", "provider": "myprovider@bar",
"serverStatus": { "serverStatus": {
"http://127.0.0.1": "UP" "http://127.0.0.1": "UP"
}, },
"usedBy": [ "usedBy": [
"myprovider.foo", "myprovider@foo",
"myprovider.test" "myprovider@test"
] ]
}, },
{ {
@ -27,13 +27,13 @@
} }
] ]
}, },
"name": "myprovider.baz", "name": "myprovider@baz",
"provider": "myprovider", "provider": "myprovider@baz",
"serverStatus": { "serverStatus": {
"http://127.0.0.2": "UP" "http://127.0.0.2": "UP"
}, },
"usedBy": [ "usedBy": [
"myprovider.foo" "myprovider@foo"
] ]
} }
] ]

View file

@ -2,8 +2,8 @@
"entryPoints": [ "entryPoints": [
"web" "web"
], ],
"name": "myprovider.bar", "name": "myprovider@bar",
"provider": "myprovider", "provider": "myprovider@bar",
"rule": "Host(`foo.bar`)", "rule": "Host(`foo.bar`)",
"service": "myprovider.foo-service" "service": "myprovider@foo-service"
} }

View file

@ -3,9 +3,9 @@
"entryPoints": [ "entryPoints": [
"web" "web"
], ],
"name": "myprovider.baz", "name": "myprovider@baz",
"provider": "myprovider", "provider": "myprovider@baz",
"rule": "Host(`toto.bar`)", "rule": "Host(`toto.bar`)",
"service": "myprovider.foo-service" "service": "myprovider@foo-service"
} }
] ]

View file

@ -3,19 +3,19 @@
"entryPoints": [ "entryPoints": [
"web" "web"
], ],
"name": "myprovider.bar", "name": "myprovider@bar",
"provider": "myprovider", "provider": "myprovider@bar",
"rule": "Host(`foo.bar`)", "rule": "Host(`foo.bar`)",
"service": "myprovider.foo-service" "service": "myprovider@foo-service"
}, },
{ {
"entryPoints": [ "entryPoints": [
"web" "web"
], ],
"name": "myprovider.test", "name": "myprovider@test",
"provider": "myprovider", "provider": "myprovider@test",
"rule": "Host(`foo.bar.other`)", "rule": "Host(`foo.bar.other`)",
"service": "myprovider.foo-service", "service": "myprovider@foo-service",
"tls": { "tls": {
"passthrough": false "passthrough": false
} }

View file

@ -6,10 +6,10 @@
} }
] ]
}, },
"name": "myprovider.bar", "name": "myprovider@bar",
"provider": "myprovider", "provider": "myprovider@bar",
"usedBy": [ "usedBy": [
"myprovider.foo", "myprovider@foo",
"myprovider.test" "myprovider@test"
] ]
} }

View file

@ -7,10 +7,10 @@
} }
] ]
}, },
"name": "myprovider.baz", "name": "myprovider@baz",
"provider": "myprovider", "provider": "myprovider@baz",
"usedBy": [ "usedBy": [
"myprovider.foo" "myprovider@foo"
] ]
} }
] ]

View file

@ -7,11 +7,11 @@
} }
] ]
}, },
"name": "myprovider.bar", "name": "myprovider@bar",
"provider": "myprovider", "provider": "myprovider@bar",
"usedBy": [ "usedBy": [
"myprovider.foo", "myprovider@foo",
"myprovider.test" "myprovider@test"
] ]
}, },
{ {
@ -22,10 +22,10 @@
} }
] ]
}, },
"name": "myprovider.baz", "name": "myprovider@baz",
"provider": "myprovider", "provider": "myprovider@baz",
"usedBy": [ "usedBy": [
"myprovider.foo" "myprovider@foo"
] ]
} }
] ]

View file

@ -263,7 +263,7 @@ type TCPServiceInfo struct {
} }
func getProviderName(elementName string) string { func getProviderName(elementName string) string {
parts := strings.Split(elementName, ".") parts := strings.Split(elementName, "@")
if len(parts) > 1 { if len(parts) > 1 {
return parts[0] return parts[0]
} }
@ -271,9 +271,9 @@ func getProviderName(elementName string) string {
} }
func getQualifiedName(provider, elementName string) string { func getQualifiedName(provider, elementName string) string {
parts := strings.Split(elementName, ".") parts := strings.Split(elementName, "@")
if len(parts) == 1 { if len(parts) == 1 {
return provider + "." + elementName return provider + "@" + elementName
} }
return elementName return elementName
} }

View file

@ -25,23 +25,23 @@ func TestPopulateUsedby(t *testing.T) {
desc: "One service used by two routers", desc: "One service used by two routers",
conf: &config.RuntimeConfiguration{ conf: &config.RuntimeConfiguration{
Routers: map[string]*config.RouterInfo{ Routers: map[string]*config.RouterInfo{
"myprovider.foo": { "myprovider@foo": {
Router: &config.Router{ Router: &config.Router{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`bar.foo`)", Rule: "Host(`bar.foo`)",
}, },
}, },
"myprovider.bar": { "myprovider@bar": {
Router: &config.Router{ Router: &config.Router{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`foo.bar`)", Rule: "Host(`foo.bar`)",
}, },
}, },
}, },
Services: map[string]*config.ServiceInfo{ Services: map[string]*config.ServiceInfo{
"myprovider.foo-service": { "myprovider@foo-service": {
Service: &config.Service{ Service: &config.Service{
LoadBalancer: &config.LoadBalancerService{ LoadBalancer: &config.LoadBalancerService{
Servers: []config.Server{ Servers: []config.Server{
@ -59,12 +59,12 @@ func TestPopulateUsedby(t *testing.T) {
}, },
expected: config.RuntimeConfiguration{ expected: config.RuntimeConfiguration{
Routers: map[string]*config.RouterInfo{ Routers: map[string]*config.RouterInfo{
"myprovider.foo": {}, "myprovider@foo": {},
"myprovider.bar": {}, "myprovider@bar": {},
}, },
Services: map[string]*config.ServiceInfo{ Services: map[string]*config.ServiceInfo{
"myprovider.foo-service": { "myprovider@foo-service": {
UsedBy: []string{"myprovider.bar", "myprovider.foo"}, UsedBy: []string{"myprovider@bar", "myprovider@foo"},
}, },
}, },
}, },
@ -73,7 +73,7 @@ func TestPopulateUsedby(t *testing.T) {
desc: "One service used by two routers, but one router with wrong rule", desc: "One service used by two routers, but one router with wrong rule",
conf: &config.RuntimeConfiguration{ conf: &config.RuntimeConfiguration{
Services: map[string]*config.ServiceInfo{ Services: map[string]*config.ServiceInfo{
"myprovider.foo-service": { "myprovider@foo-service": {
Service: &config.Service{ Service: &config.Service{
LoadBalancer: &config.LoadBalancerService{ LoadBalancer: &config.LoadBalancerService{
Servers: []config.Server{ Servers: []config.Server{
@ -84,17 +84,17 @@ func TestPopulateUsedby(t *testing.T) {
}, },
}, },
Routers: map[string]*config.RouterInfo{ Routers: map[string]*config.RouterInfo{
"myprovider.foo": { "myprovider@foo": {
Router: &config.Router{ Router: &config.Router{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "WrongRule(`bar.foo`)", Rule: "WrongRule(`bar.foo`)",
}, },
}, },
"myprovider.bar": { "myprovider@bar": {
Router: &config.Router{ Router: &config.Router{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`foo.bar`)", Rule: "Host(`foo.bar`)",
}, },
}, },
@ -102,12 +102,12 @@ func TestPopulateUsedby(t *testing.T) {
}, },
expected: config.RuntimeConfiguration{ expected: config.RuntimeConfiguration{
Routers: map[string]*config.RouterInfo{ Routers: map[string]*config.RouterInfo{
"myprovider.foo": {}, "myprovider@foo": {},
"myprovider.bar": {}, "myprovider@bar": {},
}, },
Services: map[string]*config.ServiceInfo{ Services: map[string]*config.ServiceInfo{
"myprovider.foo-service": { "myprovider@foo-service": {
UsedBy: []string{"myprovider.bar", "myprovider.foo"}, UsedBy: []string{"myprovider@bar", "myprovider@foo"},
}, },
}, },
}, },
@ -116,17 +116,17 @@ func TestPopulateUsedby(t *testing.T) {
desc: "Broken Service used by one Router", desc: "Broken Service used by one Router",
conf: &config.RuntimeConfiguration{ conf: &config.RuntimeConfiguration{
Services: map[string]*config.ServiceInfo{ Services: map[string]*config.ServiceInfo{
"myprovider.foo-service": { "myprovider@foo-service": {
Service: &config.Service{ Service: &config.Service{
LoadBalancer: nil, LoadBalancer: nil,
}, },
}, },
}, },
Routers: map[string]*config.RouterInfo{ Routers: map[string]*config.RouterInfo{
"myprovider.bar": { "myprovider@bar": {
Router: &config.Router{ Router: &config.Router{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`foo.bar`)", Rule: "Host(`foo.bar`)",
}, },
}, },
@ -134,11 +134,11 @@ func TestPopulateUsedby(t *testing.T) {
}, },
expected: config.RuntimeConfiguration{ expected: config.RuntimeConfiguration{
Routers: map[string]*config.RouterInfo{ Routers: map[string]*config.RouterInfo{
"myprovider.bar": {}, "myprovider@bar": {},
}, },
Services: map[string]*config.ServiceInfo{ Services: map[string]*config.ServiceInfo{
"myprovider.foo-service": { "myprovider@foo-service": {
UsedBy: []string{"myprovider.bar"}, UsedBy: []string{"myprovider@bar"},
}, },
}, },
}, },
@ -147,7 +147,7 @@ func TestPopulateUsedby(t *testing.T) {
desc: "2 different Services each used by a disctinct router.", desc: "2 different Services each used by a disctinct router.",
conf: &config.RuntimeConfiguration{ conf: &config.RuntimeConfiguration{
Services: map[string]*config.ServiceInfo{ Services: map[string]*config.ServiceInfo{
"myprovider.foo-service": { "myprovider@foo-service": {
Service: &config.Service{ Service: &config.Service{
LoadBalancer: &config.LoadBalancerService{ LoadBalancer: &config.LoadBalancerService{
Servers: []config.Server{ Servers: []config.Server{
@ -165,7 +165,7 @@ func TestPopulateUsedby(t *testing.T) {
}, },
}, },
}, },
"myprovider.bar-service": { "myprovider@bar-service": {
Service: &config.Service{ Service: &config.Service{
LoadBalancer: &config.LoadBalancerService{ LoadBalancer: &config.LoadBalancerService{
Servers: []config.Server{ Servers: []config.Server{
@ -185,17 +185,17 @@ func TestPopulateUsedby(t *testing.T) {
}, },
}, },
Routers: map[string]*config.RouterInfo{ Routers: map[string]*config.RouterInfo{
"myprovider.foo": { "myprovider@foo": {
Router: &config.Router{ Router: &config.Router{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`bar.foo`)", Rule: "Host(`bar.foo`)",
}, },
}, },
"myprovider.bar": { "myprovider@bar": {
Router: &config.Router{ Router: &config.Router{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.bar-service", Service: "myprovider@bar-service",
Rule: "Host(`foo.bar`)", Rule: "Host(`foo.bar`)",
}, },
}, },
@ -203,15 +203,15 @@ func TestPopulateUsedby(t *testing.T) {
}, },
expected: config.RuntimeConfiguration{ expected: config.RuntimeConfiguration{
Routers: map[string]*config.RouterInfo{ Routers: map[string]*config.RouterInfo{
"myprovider.bar": {}, "myprovider@bar": {},
"myprovider.foo": {}, "myprovider@foo": {},
}, },
Services: map[string]*config.ServiceInfo{ Services: map[string]*config.ServiceInfo{
"myprovider.foo-service": { "myprovider@foo-service": {
UsedBy: []string{"myprovider.foo"}, UsedBy: []string{"myprovider@foo"},
}, },
"myprovider.bar-service": { "myprovider@bar-service": {
UsedBy: []string{"myprovider.bar"}, UsedBy: []string{"myprovider@bar"},
}, },
}, },
}, },
@ -220,7 +220,7 @@ func TestPopulateUsedby(t *testing.T) {
desc: "2 middlewares both used by 2 Routers", desc: "2 middlewares both used by 2 Routers",
conf: &config.RuntimeConfiguration{ conf: &config.RuntimeConfiguration{
Services: map[string]*config.ServiceInfo{ Services: map[string]*config.ServiceInfo{
"myprovider.foo-service": { "myprovider@foo-service": {
Service: &config.Service{ Service: &config.Service{
LoadBalancer: &config.LoadBalancerService{ LoadBalancer: &config.LoadBalancerService{
Servers: []config.Server{ Servers: []config.Server{
@ -233,14 +233,14 @@ func TestPopulateUsedby(t *testing.T) {
}, },
}, },
Middlewares: map[string]*config.MiddlewareInfo{ Middlewares: map[string]*config.MiddlewareInfo{
"myprovider.auth": { "myprovider@auth": {
Middleware: &config.Middleware{ Middleware: &config.Middleware{
BasicAuth: &config.BasicAuth{ BasicAuth: &config.BasicAuth{
Users: []string{"admin:admin"}, Users: []string{"admin:admin"},
}, },
}, },
}, },
"myprovider.addPrefixTest": { "myprovider@addPrefixTest": {
Middleware: &config.Middleware{ Middleware: &config.Middleware{
AddPrefix: &config.AddPrefix{ AddPrefix: &config.AddPrefix{
Prefix: "/toto", Prefix: "/toto",
@ -249,18 +249,18 @@ func TestPopulateUsedby(t *testing.T) {
}, },
}, },
Routers: map[string]*config.RouterInfo{ Routers: map[string]*config.RouterInfo{
"myprovider.bar": { "myprovider@bar": {
Router: &config.Router{ Router: &config.Router{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`foo.bar`)", Rule: "Host(`foo.bar`)",
Middlewares: []string{"auth", "addPrefixTest"}, Middlewares: []string{"auth", "addPrefixTest"},
}, },
}, },
"myprovider.test": { "myprovider@test": {
Router: &config.Router{ Router: &config.Router{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`foo.bar.other`)", Rule: "Host(`foo.bar.other`)",
Middlewares: []string{"addPrefixTest", "auth"}, Middlewares: []string{"addPrefixTest", "auth"},
}, },
@ -269,20 +269,20 @@ func TestPopulateUsedby(t *testing.T) {
}, },
expected: config.RuntimeConfiguration{ expected: config.RuntimeConfiguration{
Routers: map[string]*config.RouterInfo{ Routers: map[string]*config.RouterInfo{
"myprovider.bar": {}, "myprovider@bar": {},
"myprovider.test": {}, "myprovider@test": {},
}, },
Services: map[string]*config.ServiceInfo{ Services: map[string]*config.ServiceInfo{
"myprovider.foo-service": { "myprovider@foo-service": {
UsedBy: []string{"myprovider.bar", "myprovider.test"}, UsedBy: []string{"myprovider@bar", "myprovider@test"},
}, },
}, },
Middlewares: map[string]*config.MiddlewareInfo{ Middlewares: map[string]*config.MiddlewareInfo{
"myprovider.auth": { "myprovider@auth": {
UsedBy: []string{"myprovider.bar", "myprovider.test"}, UsedBy: []string{"myprovider@bar", "myprovider@test"},
}, },
"myprovider.addPrefixTest": { "myprovider@addPrefixTest": {
UsedBy: []string{"myprovider.bar", "myprovider.test"}, UsedBy: []string{"myprovider@bar", "myprovider@test"},
}, },
}, },
}, },
@ -291,7 +291,7 @@ func TestPopulateUsedby(t *testing.T) {
desc: "Unknown middleware is not used by the Router", desc: "Unknown middleware is not used by the Router",
conf: &config.RuntimeConfiguration{ conf: &config.RuntimeConfiguration{
Services: map[string]*config.ServiceInfo{ Services: map[string]*config.ServiceInfo{
"myprovider.foo-service": { "myprovider@foo-service": {
Service: &config.Service{ Service: &config.Service{
LoadBalancer: &config.LoadBalancerService{ LoadBalancer: &config.LoadBalancerService{
Servers: []config.Server{ Servers: []config.Server{
@ -304,7 +304,7 @@ func TestPopulateUsedby(t *testing.T) {
}, },
}, },
Middlewares: map[string]*config.MiddlewareInfo{ Middlewares: map[string]*config.MiddlewareInfo{
"myprovider.auth": { "myprovider@auth": {
Middleware: &config.Middleware{ Middleware: &config.Middleware{
BasicAuth: &config.BasicAuth{ BasicAuth: &config.BasicAuth{
Users: []string{"admin:admin"}, Users: []string{"admin:admin"},
@ -313,10 +313,10 @@ func TestPopulateUsedby(t *testing.T) {
}, },
}, },
Routers: map[string]*config.RouterInfo{ Routers: map[string]*config.RouterInfo{
"myprovider.bar": { "myprovider@bar": {
Router: &config.Router{ Router: &config.Router{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`foo.bar`)", Rule: "Host(`foo.bar`)",
Middlewares: []string{"unknown"}, Middlewares: []string{"unknown"},
}, },
@ -325,8 +325,8 @@ func TestPopulateUsedby(t *testing.T) {
}, },
expected: config.RuntimeConfiguration{ expected: config.RuntimeConfiguration{
Services: map[string]*config.ServiceInfo{ Services: map[string]*config.ServiceInfo{
"myprovider.foo-service": { "myprovider@foo-service": {
UsedBy: []string{"myprovider.bar"}, UsedBy: []string{"myprovider@bar"},
}, },
}, },
}, },
@ -335,7 +335,7 @@ func TestPopulateUsedby(t *testing.T) {
desc: "Broken middleware is used by Router", desc: "Broken middleware is used by Router",
conf: &config.RuntimeConfiguration{ conf: &config.RuntimeConfiguration{
Services: map[string]*config.ServiceInfo{ Services: map[string]*config.ServiceInfo{
"myprovider.foo-service": { "myprovider@foo-service": {
Service: &config.Service{ Service: &config.Service{
LoadBalancer: &config.LoadBalancerService{ LoadBalancer: &config.LoadBalancerService{
Servers: []config.Server{ Servers: []config.Server{
@ -348,7 +348,7 @@ func TestPopulateUsedby(t *testing.T) {
}, },
}, },
Middlewares: map[string]*config.MiddlewareInfo{ Middlewares: map[string]*config.MiddlewareInfo{
"myprovider.auth": { "myprovider@auth": {
Middleware: &config.Middleware{ Middleware: &config.Middleware{
BasicAuth: &config.BasicAuth{ BasicAuth: &config.BasicAuth{
Users: []string{"badConf"}, Users: []string{"badConf"},
@ -357,28 +357,28 @@ func TestPopulateUsedby(t *testing.T) {
}, },
}, },
Routers: map[string]*config.RouterInfo{ Routers: map[string]*config.RouterInfo{
"myprovider.bar": { "myprovider@bar": {
Router: &config.Router{ Router: &config.Router{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`foo.bar`)", Rule: "Host(`foo.bar`)",
Middlewares: []string{"myprovider.auth"}, Middlewares: []string{"myprovider@auth"},
}, },
}, },
}, },
}, },
expected: config.RuntimeConfiguration{ expected: config.RuntimeConfiguration{
Routers: map[string]*config.RouterInfo{ Routers: map[string]*config.RouterInfo{
"myprovider.bar": {}, "myprovider@bar": {},
}, },
Services: map[string]*config.ServiceInfo{ Services: map[string]*config.ServiceInfo{
"myprovider.foo-service": { "myprovider@foo-service": {
UsedBy: []string{"myprovider.bar"}, UsedBy: []string{"myprovider@bar"},
}, },
}, },
Middlewares: map[string]*config.MiddlewareInfo{ Middlewares: map[string]*config.MiddlewareInfo{
"myprovider.auth": { "myprovider@auth": {
UsedBy: []string{"myprovider.bar"}, UsedBy: []string{"myprovider@bar"},
}, },
}, },
}, },
@ -387,7 +387,7 @@ func TestPopulateUsedby(t *testing.T) {
desc: "2 middlewares from 2 disctinct providers both used by 2 Routers", desc: "2 middlewares from 2 disctinct providers both used by 2 Routers",
conf: &config.RuntimeConfiguration{ conf: &config.RuntimeConfiguration{
Services: map[string]*config.ServiceInfo{ Services: map[string]*config.ServiceInfo{
"myprovider.foo-service": { "myprovider@foo-service": {
Service: &config.Service{ Service: &config.Service{
LoadBalancer: &config.LoadBalancerService{ LoadBalancer: &config.LoadBalancerService{
Servers: []config.Server{ Servers: []config.Server{
@ -400,21 +400,21 @@ func TestPopulateUsedby(t *testing.T) {
}, },
}, },
Middlewares: map[string]*config.MiddlewareInfo{ Middlewares: map[string]*config.MiddlewareInfo{
"myprovider.auth": { "myprovider@auth": {
Middleware: &config.Middleware{ Middleware: &config.Middleware{
BasicAuth: &config.BasicAuth{ BasicAuth: &config.BasicAuth{
Users: []string{"admin:admin"}, Users: []string{"admin:admin"},
}, },
}, },
}, },
"myprovider.addPrefixTest": { "myprovider@addPrefixTest": {
Middleware: &config.Middleware{ Middleware: &config.Middleware{
AddPrefix: &config.AddPrefix{ AddPrefix: &config.AddPrefix{
Prefix: "/titi", Prefix: "/titi",
}, },
}, },
}, },
"anotherprovider.addPrefixTest": { "anotherprovider@addPrefixTest": {
Middleware: &config.Middleware{ Middleware: &config.Middleware{
AddPrefix: &config.AddPrefix{ AddPrefix: &config.AddPrefix{
Prefix: "/toto", Prefix: "/toto",
@ -423,18 +423,18 @@ func TestPopulateUsedby(t *testing.T) {
}, },
}, },
Routers: map[string]*config.RouterInfo{ Routers: map[string]*config.RouterInfo{
"myprovider.bar": { "myprovider@bar": {
Router: &config.Router{ Router: &config.Router{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`foo.bar`)", Rule: "Host(`foo.bar`)",
Middlewares: []string{"auth", "anotherprovider.addPrefixTest"}, Middlewares: []string{"auth", "anotherprovider@addPrefixTest"},
}, },
}, },
"myprovider.test": { "myprovider@test": {
Router: &config.Router{ Router: &config.Router{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`foo.bar.other`)", Rule: "Host(`foo.bar.other`)",
Middlewares: []string{"addPrefixTest", "auth"}, Middlewares: []string{"addPrefixTest", "auth"},
}, },
@ -443,23 +443,23 @@ func TestPopulateUsedby(t *testing.T) {
}, },
expected: config.RuntimeConfiguration{ expected: config.RuntimeConfiguration{
Routers: map[string]*config.RouterInfo{ Routers: map[string]*config.RouterInfo{
"myprovider.bar": {}, "myprovider@bar": {},
"myprovider.test": {}, "myprovider@test": {},
}, },
Services: map[string]*config.ServiceInfo{ Services: map[string]*config.ServiceInfo{
"myprovider.foo-service": { "myprovider@foo-service": {
UsedBy: []string{"myprovider.bar", "myprovider.test"}, UsedBy: []string{"myprovider@bar", "myprovider@test"},
}, },
}, },
Middlewares: map[string]*config.MiddlewareInfo{ Middlewares: map[string]*config.MiddlewareInfo{
"myprovider.auth": { "myprovider@auth": {
UsedBy: []string{"myprovider.bar", "myprovider.test"}, UsedBy: []string{"myprovider@bar", "myprovider@test"},
}, },
"myprovider.addPrefixTest": { "myprovider@addPrefixTest": {
UsedBy: []string{"myprovider.test"}, UsedBy: []string{"myprovider@test"},
}, },
"anotherprovider.addPrefixTest": { "anotherprovider@addPrefixTest": {
UsedBy: []string{"myprovider.bar"}, UsedBy: []string{"myprovider@bar"},
}, },
}, },
}, },
@ -470,23 +470,23 @@ func TestPopulateUsedby(t *testing.T) {
desc: "TCP, One service used by two routers", desc: "TCP, One service used by two routers",
conf: &config.RuntimeConfiguration{ conf: &config.RuntimeConfiguration{
TCPRouters: map[string]*config.TCPRouterInfo{ TCPRouters: map[string]*config.TCPRouterInfo{
"myprovider.foo": { "myprovider@foo": {
TCPRouter: &config.TCPRouter{ TCPRouter: &config.TCPRouter{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`bar.foo`)", Rule: "Host(`bar.foo`)",
}, },
}, },
"myprovider.bar": { "myprovider@bar": {
TCPRouter: &config.TCPRouter{ TCPRouter: &config.TCPRouter{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`foo.bar`)", Rule: "Host(`foo.bar`)",
}, },
}, },
}, },
TCPServices: map[string]*config.TCPServiceInfo{ TCPServices: map[string]*config.TCPServiceInfo{
"myprovider.foo-service": { "myprovider@foo-service": {
TCPService: &config.TCPService{ TCPService: &config.TCPService{
LoadBalancer: &config.TCPLoadBalancerService{ LoadBalancer: &config.TCPLoadBalancerService{
Servers: []config.TCPServer{ Servers: []config.TCPServer{
@ -506,12 +506,12 @@ func TestPopulateUsedby(t *testing.T) {
}, },
expected: config.RuntimeConfiguration{ expected: config.RuntimeConfiguration{
TCPRouters: map[string]*config.TCPRouterInfo{ TCPRouters: map[string]*config.TCPRouterInfo{
"myprovider.foo": {}, "myprovider@foo": {},
"myprovider.bar": {}, "myprovider@bar": {},
}, },
TCPServices: map[string]*config.TCPServiceInfo{ TCPServices: map[string]*config.TCPServiceInfo{
"myprovider.foo-service": { "myprovider@foo-service": {
UsedBy: []string{"myprovider.bar", "myprovider.foo"}, UsedBy: []string{"myprovider@bar", "myprovider@foo"},
}, },
}, },
}, },
@ -520,7 +520,7 @@ func TestPopulateUsedby(t *testing.T) {
desc: "TCP, One service used by two routers, but one router with wrong rule", desc: "TCP, One service used by two routers, but one router with wrong rule",
conf: &config.RuntimeConfiguration{ conf: &config.RuntimeConfiguration{
TCPServices: map[string]*config.TCPServiceInfo{ TCPServices: map[string]*config.TCPServiceInfo{
"myprovider.foo-service": { "myprovider@foo-service": {
TCPService: &config.TCPService{ TCPService: &config.TCPService{
LoadBalancer: &config.TCPLoadBalancerService{ LoadBalancer: &config.TCPLoadBalancerService{
Servers: []config.TCPServer{ Servers: []config.TCPServer{
@ -533,17 +533,17 @@ func TestPopulateUsedby(t *testing.T) {
}, },
}, },
TCPRouters: map[string]*config.TCPRouterInfo{ TCPRouters: map[string]*config.TCPRouterInfo{
"myprovider.foo": { "myprovider@foo": {
TCPRouter: &config.TCPRouter{ TCPRouter: &config.TCPRouter{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "WrongRule(`bar.foo`)", Rule: "WrongRule(`bar.foo`)",
}, },
}, },
"myprovider.bar": { "myprovider@bar": {
TCPRouter: &config.TCPRouter{ TCPRouter: &config.TCPRouter{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`foo.bar`)", Rule: "Host(`foo.bar`)",
}, },
}, },
@ -551,12 +551,12 @@ func TestPopulateUsedby(t *testing.T) {
}, },
expected: config.RuntimeConfiguration{ expected: config.RuntimeConfiguration{
TCPRouters: map[string]*config.TCPRouterInfo{ TCPRouters: map[string]*config.TCPRouterInfo{
"myprovider.foo": {}, "myprovider@foo": {},
"myprovider.bar": {}, "myprovider@bar": {},
}, },
TCPServices: map[string]*config.TCPServiceInfo{ TCPServices: map[string]*config.TCPServiceInfo{
"myprovider.foo-service": { "myprovider@foo-service": {
UsedBy: []string{"myprovider.bar", "myprovider.foo"}, UsedBy: []string{"myprovider@bar", "myprovider@foo"},
}, },
}, },
}, },
@ -565,17 +565,17 @@ func TestPopulateUsedby(t *testing.T) {
desc: "TCP, Broken Service used by one Router", desc: "TCP, Broken Service used by one Router",
conf: &config.RuntimeConfiguration{ conf: &config.RuntimeConfiguration{
TCPServices: map[string]*config.TCPServiceInfo{ TCPServices: map[string]*config.TCPServiceInfo{
"myprovider.foo-service": { "myprovider@foo-service": {
TCPService: &config.TCPService{ TCPService: &config.TCPService{
LoadBalancer: nil, LoadBalancer: nil,
}, },
}, },
}, },
TCPRouters: map[string]*config.TCPRouterInfo{ TCPRouters: map[string]*config.TCPRouterInfo{
"myprovider.bar": { "myprovider@bar": {
TCPRouter: &config.TCPRouter{ TCPRouter: &config.TCPRouter{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`foo.bar`)", Rule: "Host(`foo.bar`)",
}, },
}, },
@ -583,11 +583,11 @@ func TestPopulateUsedby(t *testing.T) {
}, },
expected: config.RuntimeConfiguration{ expected: config.RuntimeConfiguration{
TCPRouters: map[string]*config.TCPRouterInfo{ TCPRouters: map[string]*config.TCPRouterInfo{
"myprovider.bar": {}, "myprovider@bar": {},
}, },
TCPServices: map[string]*config.TCPServiceInfo{ TCPServices: map[string]*config.TCPServiceInfo{
"myprovider.foo-service": { "myprovider@foo-service": {
UsedBy: []string{"myprovider.bar"}, UsedBy: []string{"myprovider@bar"},
}, },
}, },
}, },
@ -596,7 +596,7 @@ func TestPopulateUsedby(t *testing.T) {
desc: "TCP, 2 different Services each used by a disctinct router.", desc: "TCP, 2 different Services each used by a disctinct router.",
conf: &config.RuntimeConfiguration{ conf: &config.RuntimeConfiguration{
TCPServices: map[string]*config.TCPServiceInfo{ TCPServices: map[string]*config.TCPServiceInfo{
"myprovider.foo-service": { "myprovider@foo-service": {
TCPService: &config.TCPService{ TCPService: &config.TCPService{
LoadBalancer: &config.TCPLoadBalancerService{ LoadBalancer: &config.TCPLoadBalancerService{
Servers: []config.TCPServer{ Servers: []config.TCPServer{
@ -612,7 +612,7 @@ func TestPopulateUsedby(t *testing.T) {
}, },
}, },
}, },
"myprovider.bar-service": { "myprovider@bar-service": {
TCPService: &config.TCPService{ TCPService: &config.TCPService{
LoadBalancer: &config.TCPLoadBalancerService{ LoadBalancer: &config.TCPLoadBalancerService{
Servers: []config.TCPServer{ Servers: []config.TCPServer{
@ -630,17 +630,17 @@ func TestPopulateUsedby(t *testing.T) {
}, },
}, },
TCPRouters: map[string]*config.TCPRouterInfo{ TCPRouters: map[string]*config.TCPRouterInfo{
"myprovider.foo": { "myprovider@foo": {
TCPRouter: &config.TCPRouter{ TCPRouter: &config.TCPRouter{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`bar.foo`)", Rule: "Host(`bar.foo`)",
}, },
}, },
"myprovider.bar": { "myprovider@bar": {
TCPRouter: &config.TCPRouter{ TCPRouter: &config.TCPRouter{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.bar-service", Service: "myprovider@bar-service",
Rule: "Host(`foo.bar`)", Rule: "Host(`foo.bar`)",
}, },
}, },
@ -648,15 +648,15 @@ func TestPopulateUsedby(t *testing.T) {
}, },
expected: config.RuntimeConfiguration{ expected: config.RuntimeConfiguration{
TCPRouters: map[string]*config.TCPRouterInfo{ TCPRouters: map[string]*config.TCPRouterInfo{
"myprovider.bar": {}, "myprovider@bar": {},
"myprovider.foo": {}, "myprovider@foo": {},
}, },
TCPServices: map[string]*config.TCPServiceInfo{ TCPServices: map[string]*config.TCPServiceInfo{
"myprovider.foo-service": { "myprovider@foo-service": {
UsedBy: []string{"myprovider.foo"}, UsedBy: []string{"myprovider@foo"},
}, },
"myprovider.bar-service": { "myprovider@bar-service": {
UsedBy: []string{"myprovider.bar"}, UsedBy: []string{"myprovider@bar"},
}, },
}, },
}, },
@ -716,7 +716,7 @@ func TestGetTCPRoutersByEntrypoints(t *testing.T) {
Routers: map[string]*config.Router{ Routers: map[string]*config.Router{
"foo": { "foo": {
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`bar.foo`)", Rule: "Host(`bar.foo`)",
}, },
}, },
@ -725,7 +725,7 @@ func TestGetTCPRoutersByEntrypoints(t *testing.T) {
Routers: map[string]*config.TCPRouter{ Routers: map[string]*config.TCPRouter{
"foo": { "foo": {
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "HostSNI(`bar.foo`)", Rule: "HostSNI(`bar.foo`)",
}, },
}, },
@ -741,17 +741,17 @@ func TestGetTCPRoutersByEntrypoints(t *testing.T) {
Routers: map[string]*config.Router{ Routers: map[string]*config.Router{
"foo": { "foo": {
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`bar.foo`)", Rule: "Host(`bar.foo`)",
}, },
"bar": { "bar": {
EntryPoints: []string{"webs"}, EntryPoints: []string{"webs"},
Service: "myprovider.bar-service", Service: "myprovider@bar-service",
Rule: "Host(`foo.bar`)", Rule: "Host(`foo.bar`)",
}, },
"foobar": { "foobar": {
EntryPoints: []string{"web", "webs"}, EntryPoints: []string{"web", "webs"},
Service: "myprovider.foobar-service", Service: "myprovider@foobar-service",
Rule: "Host(`bar.foobar`)", Rule: "Host(`bar.foobar`)",
}, },
}, },
@ -760,17 +760,17 @@ func TestGetTCPRoutersByEntrypoints(t *testing.T) {
Routers: map[string]*config.TCPRouter{ Routers: map[string]*config.TCPRouter{
"foo": { "foo": {
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "HostSNI(`bar.foo`)", Rule: "HostSNI(`bar.foo`)",
}, },
"bar": { "bar": {
EntryPoints: []string{"webs"}, EntryPoints: []string{"webs"},
Service: "myprovider.bar-service", Service: "myprovider@bar-service",
Rule: "HostSNI(`foo.bar`)", Rule: "HostSNI(`foo.bar`)",
}, },
"foobar": { "foobar": {
EntryPoints: []string{"web", "webs"}, EntryPoints: []string{"web", "webs"},
Service: "myprovider.foobar-service", Service: "myprovider@foobar-service",
Rule: "HostSNI(`bar.foobar`)", Rule: "HostSNI(`bar.foobar`)",
}, },
}, },
@ -782,14 +782,14 @@ func TestGetTCPRoutersByEntrypoints(t *testing.T) {
"foo": { "foo": {
TCPRouter: &config.TCPRouter{ TCPRouter: &config.TCPRouter{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "HostSNI(`bar.foo`)", Rule: "HostSNI(`bar.foo`)",
}, },
}, },
"foobar": { "foobar": {
TCPRouter: &config.TCPRouter{ TCPRouter: &config.TCPRouter{
EntryPoints: []string{"web", "webs"}, EntryPoints: []string{"web", "webs"},
Service: "myprovider.foobar-service", Service: "myprovider@foobar-service",
Rule: "HostSNI(`bar.foobar`)", Rule: "HostSNI(`bar.foobar`)",
}, },
}, },
@ -803,17 +803,17 @@ func TestGetTCPRoutersByEntrypoints(t *testing.T) {
Routers: map[string]*config.Router{ Routers: map[string]*config.Router{
"foo": { "foo": {
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`bar.foo`)", Rule: "Host(`bar.foo`)",
}, },
"bar": { "bar": {
EntryPoints: []string{"webs"}, EntryPoints: []string{"webs"},
Service: "myprovider.bar-service", Service: "myprovider@bar-service",
Rule: "Host(`foo.bar`)", Rule: "Host(`foo.bar`)",
}, },
"foobar": { "foobar": {
EntryPoints: []string{"web", "webs"}, EntryPoints: []string{"web", "webs"},
Service: "myprovider.foobar-service", Service: "myprovider@foobar-service",
Rule: "Host(`bar.foobar`)", Rule: "Host(`bar.foobar`)",
}, },
}, },
@ -822,17 +822,17 @@ func TestGetTCPRoutersByEntrypoints(t *testing.T) {
Routers: map[string]*config.TCPRouter{ Routers: map[string]*config.TCPRouter{
"foo": { "foo": {
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "HostSNI(`bar.foo`)", Rule: "HostSNI(`bar.foo`)",
}, },
"bar": { "bar": {
EntryPoints: []string{"webs"}, EntryPoints: []string{"webs"},
Service: "myprovider.bar-service", Service: "myprovider@bar-service",
Rule: "HostSNI(`foo.bar`)", Rule: "HostSNI(`foo.bar`)",
}, },
"foobar": { "foobar": {
EntryPoints: []string{"web", "webs"}, EntryPoints: []string{"web", "webs"},
Service: "myprovider.foobar-service", Service: "myprovider@foobar-service",
Rule: "HostSNI(`bar.foobar`)", Rule: "HostSNI(`bar.foobar`)",
}, },
}, },
@ -844,14 +844,14 @@ func TestGetTCPRoutersByEntrypoints(t *testing.T) {
"foo": { "foo": {
TCPRouter: &config.TCPRouter{ TCPRouter: &config.TCPRouter{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "HostSNI(`bar.foo`)", Rule: "HostSNI(`bar.foo`)",
}, },
}, },
"foobar": { "foobar": {
TCPRouter: &config.TCPRouter{ TCPRouter: &config.TCPRouter{
EntryPoints: []string{"web", "webs"}, EntryPoints: []string{"web", "webs"},
Service: "myprovider.foobar-service", Service: "myprovider@foobar-service",
Rule: "HostSNI(`bar.foobar`)", Rule: "HostSNI(`bar.foobar`)",
}, },
}, },
@ -861,14 +861,14 @@ func TestGetTCPRoutersByEntrypoints(t *testing.T) {
TCPRouter: &config.TCPRouter{ TCPRouter: &config.TCPRouter{
EntryPoints: []string{"webs"}, EntryPoints: []string{"webs"},
Service: "myprovider.bar-service", Service: "myprovider@bar-service",
Rule: "HostSNI(`foo.bar`)", Rule: "HostSNI(`foo.bar`)",
}, },
}, },
"foobar": { "foobar": {
TCPRouter: &config.TCPRouter{ TCPRouter: &config.TCPRouter{
EntryPoints: []string{"web", "webs"}, EntryPoints: []string{"web", "webs"},
Service: "myprovider.foobar-service", Service: "myprovider@foobar-service",
Rule: "HostSNI(`bar.foobar`)", Rule: "HostSNI(`bar.foobar`)",
}, },
}, },
@ -914,7 +914,7 @@ func TestGetRoutersByEntrypoints(t *testing.T) {
Routers: map[string]*config.Router{ Routers: map[string]*config.Router{
"foo": { "foo": {
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`bar.foo`)", Rule: "Host(`bar.foo`)",
}, },
}, },
@ -923,7 +923,7 @@ func TestGetRoutersByEntrypoints(t *testing.T) {
Routers: map[string]*config.TCPRouter{ Routers: map[string]*config.TCPRouter{
"foo": { "foo": {
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "HostSNI(`bar.foo`)", Rule: "HostSNI(`bar.foo`)",
}, },
}, },
@ -939,17 +939,17 @@ func TestGetRoutersByEntrypoints(t *testing.T) {
Routers: map[string]*config.Router{ Routers: map[string]*config.Router{
"foo": { "foo": {
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`bar.foo`)", Rule: "Host(`bar.foo`)",
}, },
"bar": { "bar": {
EntryPoints: []string{"webs"}, EntryPoints: []string{"webs"},
Service: "myprovider.bar-service", Service: "myprovider@bar-service",
Rule: "Host(`foo.bar`)", Rule: "Host(`foo.bar`)",
}, },
"foobar": { "foobar": {
EntryPoints: []string{"web", "webs"}, EntryPoints: []string{"web", "webs"},
Service: "myprovider.foobar-service", Service: "myprovider@foobar-service",
Rule: "Host(`bar.foobar`)", Rule: "Host(`bar.foobar`)",
}, },
}, },
@ -958,17 +958,17 @@ func TestGetRoutersByEntrypoints(t *testing.T) {
Routers: map[string]*config.TCPRouter{ Routers: map[string]*config.TCPRouter{
"foo": { "foo": {
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "HostSNI(`bar.foo`)", Rule: "HostSNI(`bar.foo`)",
}, },
"bar": { "bar": {
EntryPoints: []string{"webs"}, EntryPoints: []string{"webs"},
Service: "myprovider.bar-service", Service: "myprovider@bar-service",
Rule: "HostSNI(`foo.bar`)", Rule: "HostSNI(`foo.bar`)",
}, },
"foobar": { "foobar": {
EntryPoints: []string{"web", "webs"}, EntryPoints: []string{"web", "webs"},
Service: "myprovider.foobar-service", Service: "myprovider@foobar-service",
Rule: "HostSNI(`bar.foobar`)", Rule: "HostSNI(`bar.foobar`)",
}, },
}, },
@ -980,14 +980,14 @@ func TestGetRoutersByEntrypoints(t *testing.T) {
"foo": { "foo": {
Router: &config.Router{ Router: &config.Router{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`bar.foo`)", Rule: "Host(`bar.foo`)",
}, },
}, },
"foobar": { "foobar": {
Router: &config.Router{ Router: &config.Router{
EntryPoints: []string{"web", "webs"}, EntryPoints: []string{"web", "webs"},
Service: "myprovider.foobar-service", Service: "myprovider@foobar-service",
Rule: "Host(`bar.foobar`)", Rule: "Host(`bar.foobar`)",
}, },
}, },
@ -1001,17 +1001,17 @@ func TestGetRoutersByEntrypoints(t *testing.T) {
Routers: map[string]*config.Router{ Routers: map[string]*config.Router{
"foo": { "foo": {
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`bar.foo`)", Rule: "Host(`bar.foo`)",
}, },
"bar": { "bar": {
EntryPoints: []string{"webs"}, EntryPoints: []string{"webs"},
Service: "myprovider.bar-service", Service: "myprovider@bar-service",
Rule: "Host(`foo.bar`)", Rule: "Host(`foo.bar`)",
}, },
"foobar": { "foobar": {
EntryPoints: []string{"web", "webs"}, EntryPoints: []string{"web", "webs"},
Service: "myprovider.foobar-service", Service: "myprovider@foobar-service",
Rule: "Host(`bar.foobar`)", Rule: "Host(`bar.foobar`)",
}, },
}, },
@ -1020,17 +1020,17 @@ func TestGetRoutersByEntrypoints(t *testing.T) {
Routers: map[string]*config.TCPRouter{ Routers: map[string]*config.TCPRouter{
"foo": { "foo": {
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "HostSNI(`bar.foo`)", Rule: "HostSNI(`bar.foo`)",
}, },
"bar": { "bar": {
EntryPoints: []string{"webs"}, EntryPoints: []string{"webs"},
Service: "myprovider.bar-service", Service: "myprovider@bar-service",
Rule: "HostSNI(`foo.bar`)", Rule: "HostSNI(`foo.bar`)",
}, },
"foobar": { "foobar": {
EntryPoints: []string{"web", "webs"}, EntryPoints: []string{"web", "webs"},
Service: "myprovider.foobar-service", Service: "myprovider@foobar-service",
Rule: "HostSNI(`bar.foobar`)", Rule: "HostSNI(`bar.foobar`)",
}, },
}, },
@ -1042,14 +1042,14 @@ func TestGetRoutersByEntrypoints(t *testing.T) {
"foo": { "foo": {
Router: &config.Router{ Router: &config.Router{
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "myprovider.foo-service", Service: "myprovider@foo-service",
Rule: "Host(`bar.foo`)", Rule: "Host(`bar.foo`)",
}, },
}, },
"foobar": { "foobar": {
Router: &config.Router{ Router: &config.Router{
EntryPoints: []string{"web", "webs"}, EntryPoints: []string{"web", "webs"},
Service: "myprovider.foobar-service", Service: "myprovider@foobar-service",
Rule: "Host(`bar.foobar`)", Rule: "Host(`bar.foobar`)",
}, },
}, },
@ -1059,14 +1059,14 @@ func TestGetRoutersByEntrypoints(t *testing.T) {
Router: &config.Router{ Router: &config.Router{
EntryPoints: []string{"webs"}, EntryPoints: []string{"webs"},
Service: "myprovider.bar-service", Service: "myprovider@bar-service",
Rule: "Host(`foo.bar`)", Rule: "Host(`foo.bar`)",
}, },
}, },
"foobar": { "foobar": {
Router: &config.Router{ Router: &config.Router{
EntryPoints: []string{"web", "webs"}, EntryPoints: []string{"web", "webs"},
Service: "myprovider.foobar-service", Service: "myprovider@foobar-service",
Rule: "Host(`bar.foobar`)", Rule: "Host(`bar.foobar`)",
}, },
}, },

View file

@ -41,13 +41,13 @@ func TestAggregator(t *testing.T) {
}, },
expected: &config.HTTPConfiguration{ expected: &config.HTTPConfiguration{
Routers: map[string]*config.Router{ Routers: map[string]*config.Router{
"provider-1.router-1": {}, "provider-1@router-1": {},
}, },
Middlewares: map[string]*config.Middleware{ Middlewares: map[string]*config.Middleware{
"provider-1.middleware-1": {}, "provider-1@middleware-1": {},
}, },
Services: map[string]*config.Service{ Services: map[string]*config.Service{
"provider-1.service-1": {}, "provider-1@service-1": {},
}, },
}, },
}, },
@ -83,16 +83,16 @@ func TestAggregator(t *testing.T) {
}, },
expected: &config.HTTPConfiguration{ expected: &config.HTTPConfiguration{
Routers: map[string]*config.Router{ Routers: map[string]*config.Router{
"provider-1.router-1": {}, "provider-1@router-1": {},
"provider-2.router-1": {}, "provider-2@router-1": {},
}, },
Middlewares: map[string]*config.Middleware{ Middlewares: map[string]*config.Middleware{
"provider-1.middleware-1": {}, "provider-1@middleware-1": {},
"provider-2.middleware-1": {}, "provider-2@middleware-1": {},
}, },
Services: map[string]*config.Service{ Services: map[string]*config.Service{
"provider-1.service-1": {}, "provider-1@service-1": {},
"provider-2.service-1": {}, "provider-2@service-1": {},
}, },
}, },
}, },

View file

@ -15,7 +15,7 @@ const (
// AddProviderInContext Adds the provider name in the context // AddProviderInContext Adds the provider name in the context
func AddProviderInContext(ctx context.Context, elementName string) context.Context { func AddProviderInContext(ctx context.Context, elementName string) context.Context {
parts := strings.Split(elementName, ".") parts := strings.Split(elementName, "@")
if len(parts) == 1 { if len(parts) == 1 {
log.FromContext(ctx).Debugf("Could not find a provider for %s.", elementName) log.FromContext(ctx).Debugf("Could not find a provider for %s.", elementName)
return ctx return ctx
@ -30,7 +30,7 @@ func AddProviderInContext(ctx context.Context, elementName string) context.Conte
// GetQualifiedName Gets the fully qualified name. // GetQualifiedName Gets the fully qualified name.
func GetQualifiedName(ctx context.Context, elementName string) string { func GetQualifiedName(ctx context.Context, elementName string) string {
parts := strings.Split(elementName, ".") parts := strings.Split(elementName, "@")
if len(parts) == 1 { if len(parts) == 1 {
if providerName, ok := ctx.Value(providerKey).(string); ok { if providerName, ok := ctx.Value(providerKey).(string); ok {
return MakeQualifiedName(providerName, parts[0]) return MakeQualifiedName(providerName, parts[0])
@ -41,5 +41,5 @@ func GetQualifiedName(ctx context.Context, elementName string) string {
// MakeQualifiedName Creates a qualified name for an element // MakeQualifiedName Creates a qualified name for an element
func MakeQualifiedName(providerName string, elementName string) string { func MakeQualifiedName(providerName string, elementName string) string {
return providerName + "." + elementName return providerName + "@" + elementName
} }

View file

@ -77,7 +77,7 @@ func TestBuilder_BuildChainWithContext(t *testing.T) {
desc: "Should prefix the middlewareName with the provider in the context", desc: "Should prefix the middlewareName with the provider in the context",
buildChain: []string{"middleware-1"}, buildChain: []string{"middleware-1"},
configuration: map[string]*config.Middleware{ configuration: map[string]*config.Middleware{
"provider-1.middleware-1": { "provider-1@middleware-1": {
Headers: &config.Headers{ Headers: &config.Headers{
CustomRequestHeaders: map[string]string{"provider-1.middleware-1": "value-middleware-1"}, CustomRequestHeaders: map[string]string{"provider-1.middleware-1": "value-middleware-1"},
}, },
@ -88,9 +88,9 @@ func TestBuilder_BuildChainWithContext(t *testing.T) {
}, },
{ {
desc: "Should not prefix a qualified middlewareName with the provider in the context", desc: "Should not prefix a qualified middlewareName with the provider in the context",
buildChain: []string{"provider-1.middleware-1"}, buildChain: []string{"provider-1@middleware-1"},
configuration: map[string]*config.Middleware{ configuration: map[string]*config.Middleware{
"provider-1.middleware-1": { "provider-1@middleware-1": {
Headers: &config.Headers{ Headers: &config.Headers{
CustomRequestHeaders: map[string]string{"provider-1.middleware-1": "value-middleware-1"}, CustomRequestHeaders: map[string]string{"provider-1.middleware-1": "value-middleware-1"},
}, },
@ -101,14 +101,14 @@ func TestBuilder_BuildChainWithContext(t *testing.T) {
}, },
{ {
desc: "Should be context aware if a chain references another middleware", desc: "Should be context aware if a chain references another middleware",
buildChain: []string{"provider-1.middleware-chain-1"}, buildChain: []string{"provider-1@middleware-chain-1"},
configuration: map[string]*config.Middleware{ configuration: map[string]*config.Middleware{
"provider-1.middleware-1": { "provider-1@middleware-1": {
Headers: &config.Headers{ Headers: &config.Headers{
CustomRequestHeaders: map[string]string{"middleware-1": "value-middleware-1"}, CustomRequestHeaders: map[string]string{"middleware-1": "value-middleware-1"},
}, },
}, },
"provider-1.middleware-chain-1": { "provider-1@middleware-chain-1": {
Chain: &config.Chain{ Chain: &config.Chain{
Middlewares: []string{"middleware-1"}, Middlewares: []string{"middleware-1"},
}, },
@ -118,31 +118,31 @@ func TestBuilder_BuildChainWithContext(t *testing.T) {
}, },
{ {
desc: "Should handle nested chains with different context", desc: "Should handle nested chains with different context",
buildChain: []string{"provider-1.middleware-chain-1", "middleware-chain-1"}, buildChain: []string{"provider-1@middleware-chain-1", "middleware-chain-1"},
configuration: map[string]*config.Middleware{ configuration: map[string]*config.Middleware{
"provider-1.middleware-1": { "provider-1@middleware-1": {
Headers: &config.Headers{ Headers: &config.Headers{
CustomRequestHeaders: map[string]string{"middleware-1": "value-middleware-1"}, CustomRequestHeaders: map[string]string{"middleware-1": "value-middleware-1"},
}, },
}, },
"provider-1.middleware-2": { "provider-1@middleware-2": {
Headers: &config.Headers{ Headers: &config.Headers{
CustomRequestHeaders: map[string]string{"middleware-2": "value-middleware-2"}, CustomRequestHeaders: map[string]string{"middleware-2": "value-middleware-2"},
}, },
}, },
"provider-1.middleware-chain-1": { "provider-1@middleware-chain-1": {
Chain: &config.Chain{ Chain: &config.Chain{
Middlewares: []string{"middleware-1"}, Middlewares: []string{"middleware-1"},
}, },
}, },
"provider-1.middleware-chain-2": { "provider-1@middleware-chain-2": {
Chain: &config.Chain{ Chain: &config.Chain{
Middlewares: []string{"middleware-2"}, Middlewares: []string{"middleware-2"},
}, },
}, },
"provider-2.middleware-chain-1": { "provider-2@middleware-chain-1": {
Chain: &config.Chain{ Chain: &config.Chain{
Middlewares: []string{"provider-1.middleware-2", "provider-1.middleware-chain-2"}, Middlewares: []string{"provider-1@middleware-2", "provider-1@middleware-chain-2"},
}, },
}, },
}, },
@ -176,28 +176,28 @@ func TestBuilder_BuildChainWithContext(t *testing.T) {
}, },
{ {
desc: "Detects recursion in Middleware chain", desc: "Detects recursion in Middleware chain",
buildChain: []string{"provider.m1"}, buildChain: []string{"provider@m1"},
configuration: map[string]*config.Middleware{ configuration: map[string]*config.Middleware{
"provider2.ok": { "provider2@ok": {
Retry: &config.Retry{}, Retry: &config.Retry{},
}, },
"provider.m1": { "provider@m1": {
Chain: &config.Chain{ Chain: &config.Chain{
Middlewares: []string{"provider2.m2"}, Middlewares: []string{"provider2@m2"},
}, },
}, },
"provider2.m2": { "provider2@m2": {
Chain: &config.Chain{ Chain: &config.Chain{
Middlewares: []string{"ok", "provider.m3"}, Middlewares: []string{"ok", "provider@m3"},
}, },
}, },
"provider.m3": { "provider@m3": {
Chain: &config.Chain{ Chain: &config.Chain{
Middlewares: []string{"m1"}, Middlewares: []string{"m1"},
}, },
}, },
}, },
expectedError: errors.New("could not instantiate middleware provider.m1: recursion detected in provider.m1->provider2.m2->provider.m3->provider.m1"), expectedError: errors.New("could not instantiate middleware provider@m1: recursion detected in provider@m1->provider2@m2->provider@m3->provider@m1"),
}, },
{ {
buildChain: []string{"ok", "m0"}, buildChain: []string{"ok", "m0"},
@ -261,7 +261,7 @@ func TestBuilder_BuildChainWithContext(t *testing.T) {
ctx := context.Background() ctx := context.Background()
if len(test.contextProvider) > 0 { if len(test.contextProvider) > 0 {
ctx = internal.AddProviderInContext(ctx, test.contextProvider+".foobar") ctx = internal.AddProviderInContext(ctx, test.contextProvider+"@foobar")
} }
rtConf := config.NewRuntimeConfig(config.Configuration{ rtConf := config.NewRuntimeConfig(config.Configuration{

View file

@ -204,14 +204,14 @@ func TestRouterManager_Get(t *testing.T) {
{ {
desc: "no middleware with provider name", desc: "no middleware with provider name",
routersConfig: map[string]*config.Router{ routersConfig: map[string]*config.Router{
"provider-1.foo": { "provider-1@foo": {
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "foo-service", Service: "foo-service",
Rule: "Host(`foo.bar`)", Rule: "Host(`foo.bar`)",
}, },
}, },
serviceConfig: map[string]*config.Service{ serviceConfig: map[string]*config.Service{
"provider-1.foo-service": { "provider-1@foo-service": {
LoadBalancer: &config.LoadBalancerService{ LoadBalancer: &config.LoadBalancerService{
Servers: []config.Server{ Servers: []config.Server{
{ {
@ -227,14 +227,14 @@ func TestRouterManager_Get(t *testing.T) {
{ {
desc: "no middleware with specified provider name", desc: "no middleware with specified provider name",
routersConfig: map[string]*config.Router{ routersConfig: map[string]*config.Router{
"provider-1.foo": { "provider-1@foo": {
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Service: "provider-2.foo-service", Service: "provider-2@foo-service",
Rule: "Host(`foo.bar`)", Rule: "Host(`foo.bar`)",
}, },
}, },
serviceConfig: map[string]*config.Service{ serviceConfig: map[string]*config.Service{
"provider-2.foo-service": { "provider-2@foo-service": {
LoadBalancer: &config.LoadBalancerService{ LoadBalancer: &config.LoadBalancerService{
Servers: []config.Server{ Servers: []config.Server{
{ {
@ -250,15 +250,15 @@ func TestRouterManager_Get(t *testing.T) {
{ {
desc: "middleware: chain with provider name", desc: "middleware: chain with provider name",
routersConfig: map[string]*config.Router{ routersConfig: map[string]*config.Router{
"provider-1.foo": { "provider-1@foo": {
EntryPoints: []string{"web"}, EntryPoints: []string{"web"},
Middlewares: []string{"provider-2.chain-middle", "headers-middle"}, Middlewares: []string{"provider-2@chain-middle", "headers-middle"},
Service: "foo-service", Service: "foo-service",
Rule: "Host(`foo.bar`)", Rule: "Host(`foo.bar`)",
}, },
}, },
serviceConfig: map[string]*config.Service{ serviceConfig: map[string]*config.Service{
"provider-1.foo-service": { "provider-1@foo-service": {
LoadBalancer: &config.LoadBalancerService{ LoadBalancer: &config.LoadBalancerService{
Servers: []config.Server{ Servers: []config.Server{
{ {
@ -269,15 +269,15 @@ func TestRouterManager_Get(t *testing.T) {
}, },
}, },
middlewaresConfig: map[string]*config.Middleware{ middlewaresConfig: map[string]*config.Middleware{
"provider-2.chain-middle": { "provider-2@chain-middle": {
Chain: &config.Chain{Middlewares: []string{"auth-middle"}}, Chain: &config.Chain{Middlewares: []string{"auth-middle"}},
}, },
"provider-2.auth-middle": { "provider-2@auth-middle": {
BasicAuth: &config.BasicAuth{ BasicAuth: &config.BasicAuth{
Users: []string{"toto:titi"}, Users: []string{"toto:titi"},
}, },
}, },
"provider-1.headers-middle": { "provider-1@headers-middle": {
Headers: &config.Headers{ Headers: &config.Headers{
CustomRequestHeaders: map[string]string{"X-Apero": "beer"}, CustomRequestHeaders: map[string]string{"X-Apero": "beer"},
}, },

View file

@ -303,9 +303,9 @@ func TestManager_Build(t *testing.T) {
}, },
{ {
desc: "Service name with provider", desc: "Service name with provider",
serviceName: "provider-1.serviceName", serviceName: "provider-1@serviceName",
configs: map[string]*config.ServiceInfo{ configs: map[string]*config.ServiceInfo{
"provider-1.serviceName": { "provider-1@serviceName": {
Service: &config.Service{ Service: &config.Service{
LoadBalancer: &config.LoadBalancerService{}, LoadBalancer: &config.LoadBalancerService{},
}, },
@ -316,7 +316,7 @@ func TestManager_Build(t *testing.T) {
desc: "Service name with provider in context", desc: "Service name with provider in context",
serviceName: "serviceName", serviceName: "serviceName",
configs: map[string]*config.ServiceInfo{ configs: map[string]*config.ServiceInfo{
"provider-1.serviceName": { "provider-1@serviceName": {
Service: &config.Service{ Service: &config.Service{
LoadBalancer: &config.LoadBalancerService{}, LoadBalancer: &config.LoadBalancerService{},
}, },
@ -335,7 +335,7 @@ func TestManager_Build(t *testing.T) {
ctx := context.Background() ctx := context.Background()
if len(test.providerName) > 0 { if len(test.providerName) > 0 {
ctx = internal.AddProviderInContext(ctx, test.providerName+".foobar") ctx = internal.AddProviderInContext(ctx, test.providerName+"@foobar")
} }
_, err := manager.BuildHTTP(ctx, test.serviceName, nil) _, err := manager.BuildHTTP(ctx, test.serviceName, nil)

View file

@ -77,9 +77,9 @@ func TestManager_BuildTCP(t *testing.T) {
}, },
{ {
desc: "Service name with provider", desc: "Service name with provider",
serviceName: "provider-1.serviceName", serviceName: "provider-1@serviceName",
configs: map[string]*config.TCPServiceInfo{ configs: map[string]*config.TCPServiceInfo{
"provider-1.serviceName": { "provider-1@serviceName": {
TCPService: &config.TCPService{ TCPService: &config.TCPService{
LoadBalancer: &config.TCPLoadBalancerService{}, LoadBalancer: &config.TCPLoadBalancerService{},
}, },
@ -90,7 +90,7 @@ func TestManager_BuildTCP(t *testing.T) {
desc: "Service name with provider in context", desc: "Service name with provider in context",
serviceName: "serviceName", serviceName: "serviceName",
configs: map[string]*config.TCPServiceInfo{ configs: map[string]*config.TCPServiceInfo{
"provider-1.serviceName": { "provider-1@serviceName": {
TCPService: &config.TCPService{ TCPService: &config.TCPService{
LoadBalancer: &config.TCPLoadBalancerService{}, LoadBalancer: &config.TCPLoadBalancerService{},
}, },
@ -102,7 +102,7 @@ func TestManager_BuildTCP(t *testing.T) {
desc: "Server with correct host:port as address", desc: "Server with correct host:port as address",
serviceName: "serviceName", serviceName: "serviceName",
configs: map[string]*config.TCPServiceInfo{ configs: map[string]*config.TCPServiceInfo{
"provider-1.serviceName": { "provider-1@serviceName": {
TCPService: &config.TCPService{ TCPService: &config.TCPService{
LoadBalancer: &config.TCPLoadBalancerService{ LoadBalancer: &config.TCPLoadBalancerService{
Servers: []config.TCPServer{ Servers: []config.TCPServer{
@ -120,7 +120,7 @@ func TestManager_BuildTCP(t *testing.T) {
desc: "Server with correct ip:port as address", desc: "Server with correct ip:port as address",
serviceName: "serviceName", serviceName: "serviceName",
configs: map[string]*config.TCPServiceInfo{ configs: map[string]*config.TCPServiceInfo{
"provider-1.serviceName": { "provider-1@serviceName": {
TCPService: &config.TCPService{ TCPService: &config.TCPService{
LoadBalancer: &config.TCPLoadBalancerService{ LoadBalancer: &config.TCPLoadBalancerService{
Servers: []config.TCPServer{ Servers: []config.TCPServer{
@ -138,7 +138,7 @@ func TestManager_BuildTCP(t *testing.T) {
desc: "missing port in address with hostname, server is skipped, error is logged", desc: "missing port in address with hostname, server is skipped, error is logged",
serviceName: "serviceName", serviceName: "serviceName",
configs: map[string]*config.TCPServiceInfo{ configs: map[string]*config.TCPServiceInfo{
"provider-1.serviceName": { "provider-1@serviceName": {
TCPService: &config.TCPService{ TCPService: &config.TCPService{
LoadBalancer: &config.TCPLoadBalancerService{ LoadBalancer: &config.TCPLoadBalancerService{
Servers: []config.TCPServer{ Servers: []config.TCPServer{
@ -156,7 +156,7 @@ func TestManager_BuildTCP(t *testing.T) {
desc: "missing port in address with ip, server is skipped, error is logged", desc: "missing port in address with ip, server is skipped, error is logged",
serviceName: "serviceName", serviceName: "serviceName",
configs: map[string]*config.TCPServiceInfo{ configs: map[string]*config.TCPServiceInfo{
"provider-1.serviceName": { "provider-1@serviceName": {
TCPService: &config.TCPService{ TCPService: &config.TCPService{
LoadBalancer: &config.TCPLoadBalancerService{ LoadBalancer: &config.TCPLoadBalancerService{
Servers: []config.TCPServer{ Servers: []config.TCPServer{
@ -183,7 +183,7 @@ func TestManager_BuildTCP(t *testing.T) {
ctx := context.Background() ctx := context.Background()
if len(test.providerName) > 0 { if len(test.providerName) > 0 {
ctx = internal.AddProviderInContext(ctx, test.providerName+".foobar") ctx = internal.AddProviderInContext(ctx, test.providerName+"@foobar")
} }
handler, err := manager.BuildTCP(ctx, test.serviceName) handler, err := manager.BuildTCP(ctx, test.serviceName)