Skip to content

Commit a6efd9b

Browse files
mgrotetfussell
authored andcommitted
ReconcileLoadBalancer check for appropiate load balancer state implemented to prevent creation of floating ip's for load balancer with states other than ACTIVE.
Documentation link to openstack load balancer states updated. Signed-off-by: MICHAEL GROTE <[email protected]>
1 parent d76e19e commit a6efd9b

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

pkg/cloud/services/loadbalancer/loadbalancer.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ const (
4040
kubeapiLBSuffix string = "kubeapi"
4141
)
4242

43+
const loadBalancerProvisioningStatusActive = "ACTIVE"
44+
4345
func (s *Service) ReconcileLoadBalancer(openStackCluster *infrav1.OpenStackCluster, clusterName string, apiServerPort int) error {
4446
loadBalancerName := getLoadBalancerName(clusterName)
4547
s.logger.Info("Reconciling load balancer", "name", loadBalancerName)
@@ -56,6 +58,9 @@ func (s *Service) ReconcileLoadBalancer(openStackCluster *infrav1.OpenStackClust
5658
if err != nil {
5759
return err
5860
}
61+
if lb.ProvisioningStatus != loadBalancerProvisioningStatusActive {
62+
return fmt.Errorf("load balancer %q is not in expected state %s, current state is %s", lb.ID, loadBalancerProvisioningStatusActive, lb.ProvisioningStatus)
63+
}
5964

6065
var lbFloatingIP string
6166
if !openStackCluster.Spec.DisableAPIServerFloatingIP {
@@ -524,7 +529,7 @@ var backoff = wait.Backoff{
524529
Jitter: 0.1,
525530
}
526531

527-
// Possible LoadBalancer states are documented here: https://developer.openstack.org/api-ref/network/v2/?expanded=show-load-balancer-status-tree-detail#load-balancer-statuses
532+
// Possible LoadBalancer states are documented here: https://docs.openstack.org/api-ref/load-balancer/v2/index.html#prov-status
528533
func (s *Service) waitForLoadBalancerActive(id string) error {
529534
s.logger.Info("Waiting for load balancer", "id", id, "targetStatus", "ACTIVE")
530535
return wait.ExponentialBackoff(backoff, func() (bool, error) {
@@ -533,7 +538,7 @@ func (s *Service) waitForLoadBalancerActive(id string) error {
533538
if mc.ObserveRequest(err) != nil {
534539
return false, err
535540
}
536-
return lb.ProvisioningStatus == "ACTIVE", nil
541+
return lb.ProvisioningStatus == loadBalancerProvisioningStatusActive, nil
537542
})
538543
}
539544

0 commit comments

Comments
 (0)