diff --git a/pkg/provider/docker/config.go b/pkg/provider/docker/config.go index fe1e6c655..25e0133c1 100644 --- a/pkg/provider/docker/config.go +++ b/pkg/provider/docker/config.go @@ -187,28 +187,24 @@ func (p *Provider) addServerTCP(ctx context.Context, container dockerData, loadB return errors.New("load-balancer is not defined") } - var serverPort string - if len(loadBalancer.Servers) > 0 { - serverPort = loadBalancer.Servers[0].Port - loadBalancer.Servers[0].Port = "" + if len(loadBalancer.Servers) == 0 { + loadBalancer.Servers = []dynamic.TCPServer{{}} } + serverPort := loadBalancer.Servers[0].Port + loadBalancer.Servers[0].Port = "" + ip, port, err := p.getIPPort(ctx, container, serverPort) if err != nil { return err } - if len(loadBalancer.Servers) == 0 { - server := dynamic.TCPServer{} - - loadBalancer.Servers = []dynamic.TCPServer{server} - } - if port == "" { return errors.New("port is missing") } loadBalancer.Servers[0].Address = net.JoinHostPort(ip, port) + return nil } @@ -217,28 +213,24 @@ func (p *Provider) addServerUDP(ctx context.Context, container dockerData, loadB return errors.New("load-balancer is not defined") } - var serverPort string - if len(loadBalancer.Servers) > 0 { - serverPort = loadBalancer.Servers[0].Port - loadBalancer.Servers[0].Port = "" + if len(loadBalancer.Servers) == 0 { + loadBalancer.Servers = []dynamic.UDPServer{{}} } + serverPort := loadBalancer.Servers[0].Port + loadBalancer.Servers[0].Port = "" + ip, port, err := p.getIPPort(ctx, container, serverPort) if err != nil { return err } - if len(loadBalancer.Servers) == 0 { - server := dynamic.UDPServer{} - - loadBalancer.Servers = []dynamic.UDPServer{server} - } - if port == "" { return errors.New("port is missing") } loadBalancer.Servers[0].Address = net.JoinHostPort(ip, port) + return nil } @@ -247,17 +239,6 @@ func (p *Provider) addServer(ctx context.Context, container dockerData, loadBala return errors.New("load-balancer is not defined") } - var serverPort string - if len(loadBalancer.Servers) > 0 { - serverPort = loadBalancer.Servers[0].Port - loadBalancer.Servers[0].Port = "" - } - - ip, port, err := p.getIPPort(ctx, container, serverPort) - if err != nil { - return err - } - if len(loadBalancer.Servers) == 0 { server := dynamic.Server{} server.SetDefaults() @@ -265,6 +246,14 @@ func (p *Provider) addServer(ctx context.Context, container dockerData, loadBala loadBalancer.Servers = []dynamic.Server{server} } + serverPort := loadBalancer.Servers[0].Port + loadBalancer.Servers[0].Port = "" + + ip, port, err := p.getIPPort(ctx, container, serverPort) + if err != nil { + return err + } + if port == "" { return errors.New("port is missing") } diff --git a/pkg/provider/ecs/config.go b/pkg/provider/ecs/config.go index 02684a07f..7d38d8ac3 100644 --- a/pkg/provider/ecs/config.go +++ b/pkg/provider/ecs/config.go @@ -185,7 +185,7 @@ func (p *Provider) filterInstance(ctx context.Context, instance ecsInstance) boo matches, err := constraints.MatchLabels(instance.Labels, p.Constraints) if err != nil { - logger.Errorf("Error matching constraints expression: %v", err) + logger.Errorf("Error matching constraint expression: %v", err) return false } if !matches { @@ -201,28 +201,24 @@ func (p *Provider) addServerTCP(instance ecsInstance, loadBalancer *dynamic.TCPS return errors.New("load-balancer is not defined") } - var serverPort string - if len(loadBalancer.Servers) > 0 { - serverPort = loadBalancer.Servers[0].Port - loadBalancer.Servers[0].Port = "" + if len(loadBalancer.Servers) == 0 { + loadBalancer.Servers = []dynamic.TCPServer{{}} } + serverPort := loadBalancer.Servers[0].Port + loadBalancer.Servers[0].Port = "" + ip, port, err := p.getIPPort(instance, serverPort) if err != nil { return err } - if len(loadBalancer.Servers) == 0 { - server := dynamic.TCPServer{} - - loadBalancer.Servers = []dynamic.TCPServer{server} - } - if port == "" { return errors.New("port is missing") } loadBalancer.Servers[0].Address = net.JoinHostPort(ip, port) + return nil } @@ -231,28 +227,24 @@ func (p *Provider) addServerUDP(instance ecsInstance, loadBalancer *dynamic.UDPS return errors.New("load-balancer is not defined") } - var serverPort string - if len(loadBalancer.Servers) > 0 { - serverPort = loadBalancer.Servers[0].Port - loadBalancer.Servers[0].Port = "" + if len(loadBalancer.Servers) == 0 { + loadBalancer.Servers = []dynamic.UDPServer{{}} } + serverPort := loadBalancer.Servers[0].Port + loadBalancer.Servers[0].Port = "" + ip, port, err := p.getIPPort(instance, serverPort) if err != nil { return err } - if len(loadBalancer.Servers) == 0 { - server := dynamic.UDPServer{} - - loadBalancer.Servers = []dynamic.UDPServer{server} - } - if port == "" { return errors.New("port is missing") } loadBalancer.Servers[0].Address = net.JoinHostPort(ip, port) + return nil } @@ -261,17 +253,6 @@ func (p *Provider) addServer(instance ecsInstance, loadBalancer *dynamic.Servers return errors.New("load-balancer is not defined") } - var serverPort string - if len(loadBalancer.Servers) > 0 { - serverPort = loadBalancer.Servers[0].Port - loadBalancer.Servers[0].Port = "" - } - - ip, port, err := p.getIPPort(instance, serverPort) - if err != nil { - return err - } - if len(loadBalancer.Servers) == 0 { server := dynamic.Server{} server.SetDefaults() @@ -279,6 +260,14 @@ func (p *Provider) addServer(instance ecsInstance, loadBalancer *dynamic.Servers loadBalancer.Servers = []dynamic.Server{server} } + serverPort := loadBalancer.Servers[0].Port + loadBalancer.Servers[0].Port = "" + + ip, port, err := p.getIPPort(instance, serverPort) + if err != nil { + return err + } + if port == "" { return errors.New("port is missing") } diff --git a/pkg/provider/nomad/config.go b/pkg/provider/nomad/config.go index 6ae3ebdfb..713438cb8 100644 --- a/pkg/provider/nomad/config.go +++ b/pkg/provider/nomad/config.go @@ -172,29 +172,27 @@ func (p *Provider) addServerTCP(i item, lb *dynamic.TCPServersLoadBalancer) erro return errors.New("load-balancer is missing") } - var port string - if len(lb.Servers) > 0 { - port = lb.Servers[0].Port - } - if len(lb.Servers) == 0 { lb.Servers = []dynamic.TCPServer{{}} } - if i.Port != 0 && port == "" { - port = strconv.Itoa(i.Port) - } - lb.Servers[0].Port = "" - - if port == "" { - return errors.New("port is missing") - } - if i.Address == "" { return errors.New("address is missing") } + port := lb.Servers[0].Port + lb.Servers[0].Port = "" + + if port == "" && i.Port > 0 { + port = strconv.Itoa(i.Port) + } + + if port == "" { + return errors.New("port is missing") + } + lb.Servers[0].Address = net.JoinHostPort(i.Address, port) + return nil } @@ -203,29 +201,27 @@ func (p *Provider) addServerUDP(i item, lb *dynamic.UDPServersLoadBalancer) erro return errors.New("load-balancer is missing") } - var port string - if len(lb.Servers) > 0 { - port = lb.Servers[0].Port - } - if len(lb.Servers) == 0 { lb.Servers = []dynamic.UDPServer{{}} } - if i.Port != 0 && port == "" { - port = strconv.Itoa(i.Port) - } - lb.Servers[0].Port = "" - - if port == "" { - return errors.New("port is missing") - } - if i.Address == "" { return errors.New("address is missing") } + port := lb.Servers[0].Port + lb.Servers[0].Port = "" + + if port == "" && i.Port > 0 { + port = strconv.Itoa(i.Port) + } + + if port == "" { + return errors.New("port is missing") + } + lb.Servers[0].Address = net.JoinHostPort(i.Address, port) + return nil } @@ -234,11 +230,6 @@ func (p *Provider) addServer(i item, lb *dynamic.ServersLoadBalancer) error { return errors.New("load-balancer is missing") } - var port string - if len(lb.Servers) > 0 { - port = lb.Servers[0].Port - } - if len(lb.Servers) == 0 { server := dynamic.Server{} server.SetDefaults() @@ -246,19 +237,21 @@ func (p *Provider) addServer(i item, lb *dynamic.ServersLoadBalancer) error { lb.Servers = []dynamic.Server{server} } - if i.Port != 0 && port == "" { + if i.Address == "" { + return errors.New("address is missing") + } + + port := lb.Servers[0].Port + lb.Servers[0].Port = "" + + if port == "" && i.Port > 0 { port = strconv.Itoa(i.Port) } - lb.Servers[0].Port = "" if port == "" { return errors.New("port is missing") } - if i.Address == "" { - return errors.New("address is missing") - } - scheme := lb.Servers[0].Scheme lb.Servers[0].Scheme = "" lb.Servers[0].URL = fmt.Sprintf("%s://%s", scheme, net.JoinHostPort(i.Address, port)) diff --git a/pkg/provider/rancher/config.go b/pkg/provider/rancher/config.go index 711ed5bb1..1f16e5e6f 100644 --- a/pkg/provider/rancher/config.go +++ b/pkg/provider/rancher/config.go @@ -160,7 +160,7 @@ func (p *Provider) keepService(ctx context.Context, service rancherData) bool { matches, err := constraints.MatchLabels(service.Labels, p.Constraints) if err != nil { - logger.Errorf("Error matching constraints expression: %v", err) + logger.Errorf("Error matching constraint expression: %v", err) return false } if !matches { @@ -185,23 +185,19 @@ func (p *Provider) keepService(ctx context.Context, service rancherData) bool { func (p *Provider) addServerTCP(ctx context.Context, service rancherData, loadBalancer *dynamic.TCPServersLoadBalancer) error { log.FromContext(ctx).Debugf("Trying to add servers for service %s \n", service.Name) - serverPort := "" - - if loadBalancer != nil && len(loadBalancer.Servers) > 0 { - serverPort = loadBalancer.Servers[0].Port + if loadBalancer == nil { + return errors.New("load-balancer is not defined") } - port := getServicePort(service) - if len(loadBalancer.Servers) == 0 { - server := dynamic.TCPServer{} - - loadBalancer.Servers = []dynamic.TCPServer{server} + loadBalancer.Servers = []dynamic.TCPServer{{}} } - if serverPort != "" { - port = serverPort - loadBalancer.Servers[0].Port = "" + port := loadBalancer.Servers[0].Port + loadBalancer.Servers[0].Port = "" + + if port == "" { + port = getServicePort(service) } if port == "" { @@ -216,29 +212,26 @@ func (p *Provider) addServerTCP(ctx context.Context, service rancherData, loadBa } loadBalancer.Servers = servers + return nil } func (p *Provider) addServerUDP(ctx context.Context, service rancherData, loadBalancer *dynamic.UDPServersLoadBalancer) error { log.FromContext(ctx).Debugf("Trying to add servers for service %s \n", service.Name) - serverPort := "" - - if loadBalancer != nil && len(loadBalancer.Servers) > 0 { - serverPort = loadBalancer.Servers[0].Port + if loadBalancer == nil { + return errors.New("load-balancer is not defined") } - port := getServicePort(service) - if len(loadBalancer.Servers) == 0 { - server := dynamic.UDPServer{} - - loadBalancer.Servers = []dynamic.UDPServer{server} + loadBalancer.Servers = []dynamic.UDPServer{{}} } - if serverPort != "" { - port = serverPort - loadBalancer.Servers[0].Port = "" + port := loadBalancer.Servers[0].Port + loadBalancer.Servers[0].Port = "" + + if port == "" { + port = getServicePort(service) } if port == "" { @@ -253,14 +246,16 @@ func (p *Provider) addServerUDP(ctx context.Context, service rancherData, loadBa } loadBalancer.Servers = servers + return nil } func (p *Provider) addServers(ctx context.Context, service rancherData, loadBalancer *dynamic.ServersLoadBalancer) error { log.FromContext(ctx).Debugf("Trying to add servers for service %s \n", service.Name) - serverPort := getLBServerPort(loadBalancer) - port := getServicePort(service) + if loadBalancer == nil { + return errors.New("load-balancer is not defined") + } if len(loadBalancer.Servers) == 0 { server := dynamic.Server{} @@ -269,9 +264,11 @@ func (p *Provider) addServers(ctx context.Context, service rancherData, loadBala loadBalancer.Servers = []dynamic.Server{server} } - if serverPort != "" { - port = serverPort - loadBalancer.Servers[0].Port = "" + port := loadBalancer.Servers[0].Port + loadBalancer.Servers[0].Port = "" + + if port == "" { + port = getServicePort(service) } if port == "" { @@ -286,14 +283,8 @@ func (p *Provider) addServers(ctx context.Context, service rancherData, loadBala } loadBalancer.Servers = servers - return nil -} -func getLBServerPort(loadBalancer *dynamic.ServersLoadBalancer) string { - if loadBalancer != nil && len(loadBalancer.Servers) > 0 { - return loadBalancer.Servers[0].Port - } - return "" + return nil } func getServicePort(data rancherData) string {