Skip to content

Commit 650bc13

Browse files
authored
Merge pull request #1164 from giantswarm/cherry-pick-reconcile-handle-lb-state-1115
🐛 [v0.5.0] Prevent creation of floating IPs when reconcile load balancer in non ACTIVE state
2 parents ec1ef36 + a6efd9b commit 650bc13

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)