Return unique addresses from service

This commit is contained in:
hazim1093 2020-08-30 18:27:24 +02:00
parent 12150e318b
commit 32b8a3a473
2 changed files with 38 additions and 9 deletions

View file

@ -25,6 +25,7 @@ import (
"time"
"github.com/pkg/errors"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/klog/v2"
pool "gopkg.in/go-playground/pool.v3"
@ -339,26 +340,26 @@ func statusAddressFromService(service string, kubeClient clientset.Interface) ([
case apiv1.ServiceTypeClusterIP:
return []string{svc.Spec.ClusterIP}, nil
case apiv1.ServiceTypeNodePort:
addresses := []string{}
addresses := sets.NewString()
if svc.Spec.ExternalIPs != nil {
addresses = append(addresses, svc.Spec.ExternalIPs...)
addresses.Insert(svc.Spec.ExternalIPs...)
} else {
addresses = append(addresses, svc.Spec.ClusterIP)
addresses.Insert(svc.Spec.ClusterIP)
}
return addresses, nil
return addresses.List(), nil
case apiv1.ServiceTypeLoadBalancer:
addresses := []string{}
addresses := sets.NewString()
for _, ip := range svc.Status.LoadBalancer.Ingress {
if ip.IP == "" {
addresses = append(addresses, ip.Hostname)
addresses.Insert(ip.Hostname)
} else {
addresses = append(addresses, ip.IP)
addresses.Insert(ip.IP)
}
}
addresses = append(addresses, svc.Spec.ExternalIPs...)
addresses.Insert(svc.Spec.ExternalIPs...)
return addresses, nil
return addresses.List(), nil
}
return nil, fmt.Errorf("unable to extract IP address/es from service %v", service)