diff --git a/pkg/cloudprovider/providers/openstack/openstack_loadbalancer.go b/pkg/cloudprovider/providers/openstack/openstack_loadbalancer.go index 19bd2ba69a9..c5d95ffb620 100644 --- a/pkg/cloudprovider/providers/openstack/openstack_loadbalancer.go +++ b/pkg/cloudprovider/providers/openstack/openstack_loadbalancer.go @@ -538,7 +538,17 @@ func (lbaas *LbaasV2) GetLoadBalancer(clusterName string, service *v1.Service) ( } status := &v1.LoadBalancerStatus{} - status.Ingress = []v1.LoadBalancerIngress{{IP: loadbalancer.VipAddress}} + + portID := loadbalancer.VipPortID + if portID != "" { + floatIP, err := getFloatingIPByPortID(lbaas.network, portID) + if err != nil { + return nil, false, fmt.Errorf("Error getting floating ip for port %s: %v", portID, err) + } + status.Ingress = []v1.LoadBalancerIngress{{IP: floatIP.FloatingIP}} + } else { + status.Ingress = []v1.LoadBalancerIngress{{IP: loadbalancer.VipAddress}} + } return status, true, err } @@ -1289,7 +1299,16 @@ func (lb *LbaasV1) GetLoadBalancer(clusterName string, service *v1.Service) (*v1 } status := &v1.LoadBalancerStatus{} - status.Ingress = []v1.LoadBalancerIngress{{IP: vip.Address}} + + if vip.PortID != "" { + floatingIP, err := getFloatingIPByPortID(lb.network, vip.PortID) + if err != nil { + return nil, false, fmt.Errorf("Error getting floating ip for port %s: %v", vip.PortID, err) + } + status.Ingress = []v1.LoadBalancerIngress{{IP: floatingIP.FloatingIP}} + } else { + status.Ingress = []v1.LoadBalancerIngress{{IP: vip.Address}} + } return status, true, err }