Skip to content

Commit 372e941

Browse files
committed
do not set failure reason/message when LB not created
1 parent 5ac49e7 commit 372e941

File tree

3 files changed

+18
-15
lines changed

3 files changed

+18
-15
lines changed

controllers/openstackcluster_controller.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -520,9 +520,12 @@ func reconcileNetworkComponents(scope scope.Scope, cluster *clusterv1.Cluster, o
520520
return err
521521
}
522522

523-
err = loadBalancerService.ReconcileLoadBalancer(openStackCluster, clusterName, apiServerPort)
523+
terminalFailure, err := loadBalancerService.ReconcileLoadBalancer(openStackCluster, clusterName, apiServerPort)
524524
if err != nil {
525-
handleUpdateOSCError(openStackCluster, fmt.Errorf("failed to reconcile load balancer: %w", err))
525+
// if it's terminalFailure (not Transient), set the Failure reason and message
526+
if terminalFailure {
527+
handleUpdateOSCError(openStackCluster, fmt.Errorf("failed to reconcile load balancer: %w", err))
528+
}
526529
return fmt.Errorf("failed to reconcile load balancer: %w", err)
527530
}
528531
}

pkg/cloud/services/loadbalancer/loadbalancer.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ const (
4646

4747
const loadBalancerProvisioningStatusActive = "ACTIVE"
4848

49-
func (s *Service) ReconcileLoadBalancer(openStackCluster *infrav1.OpenStackCluster, clusterName string, apiServerPort int) error {
49+
func (s *Service) ReconcileLoadBalancer(openStackCluster *infrav1.OpenStackCluster, clusterName string, apiServerPort int) (bool, error) {
5050
loadBalancerName := getLoadBalancerName(clusterName)
5151
s.scope.Logger().Info("Reconciling load balancer", "name", loadBalancerName)
5252

@@ -60,7 +60,7 @@ func (s *Service) ReconcileLoadBalancer(openStackCluster *infrav1.OpenStackClust
6060

6161
providers, err := s.loadbalancerClient.ListLoadBalancerProviders()
6262
if err != nil {
63-
return err
63+
return false, err
6464
}
6565

6666
// Choose the selected provider if it is set in cluster spec, if not, omit the field and Octavia will use the default provider.
@@ -80,10 +80,10 @@ func (s *Service) ReconcileLoadBalancer(openStackCluster *infrav1.OpenStackClust
8080

8181
lb, err := s.getOrCreateLoadBalancer(openStackCluster, loadBalancerName, openStackCluster.Status.Network.Subnet.ID, clusterName, fixedIPAddress, lbProvider)
8282
if err != nil {
83-
return err
83+
return false, err
8484
}
8585
if err := s.waitForLoadBalancerActive(lb.ID); err != nil {
86-
return fmt.Errorf("load balancer %q with id %s is not active after timeout: %v", loadBalancerName, lb.ID, err)
86+
return false, fmt.Errorf("load balancer %q with id %s is not active after timeout: %v", loadBalancerName, lb.ID, err)
8787
}
8888

8989
var lbFloatingIP string
@@ -97,10 +97,10 @@ func (s *Service) ReconcileLoadBalancer(openStackCluster *infrav1.OpenStackClust
9797
}
9898
fp, err := s.networkingService.GetOrCreateFloatingIP(openStackCluster, openStackCluster, clusterName, floatingIPAddress)
9999
if err != nil {
100-
return err
100+
return false, err
101101
}
102102
if err = s.networkingService.AssociateFloatingIP(openStackCluster, fp, lb.VipPortID); err != nil {
103-
return err
103+
return false, err
104104
}
105105
lbFloatingIP = fp.FloatingIP
106106
}
@@ -110,7 +110,7 @@ func (s *Service) ReconcileLoadBalancer(openStackCluster *infrav1.OpenStackClust
110110
allowedCIDRsSupported := false
111111
octaviaVersions, err := s.loadbalancerClient.ListOctaviaVersions()
112112
if err != nil {
113-
return err
113+
return false, err
114114
}
115115
// The current version is always the last one in the list.
116116
octaviaVersion := octaviaVersions[len(octaviaVersions)-1].ID
@@ -125,23 +125,23 @@ func (s *Service) ReconcileLoadBalancer(openStackCluster *infrav1.OpenStackClust
125125

126126
listener, err := s.getOrCreateListener(openStackCluster, lbPortObjectsName, lb.ID, port)
127127
if err != nil {
128-
return err
128+
return false, err
129129
}
130130

131131
pool, err := s.getOrCreatePool(openStackCluster, lbPortObjectsName, listener.ID, lb.ID, lb.Provider)
132132
if err != nil {
133-
return err
133+
return false, err
134134
}
135135

136136
if err := s.getOrCreateMonitor(openStackCluster, lbPortObjectsName, pool.ID, lb.ID); err != nil {
137-
return err
137+
return false, err
138138
}
139139

140140
if allowedCIDRsSupported {
141141
// Skip reconciliation if network status is nil (e.g. during clusterctl move)
142142
if openStackCluster.Status.Network != nil {
143143
if err := s.getOrUpdateAllowedCIDRS(openStackCluster, listener); err != nil {
144-
return err
144+
return false, err
145145
}
146146
allowedCIDRs = listener.AllowedCIDRs
147147
}
@@ -156,7 +156,7 @@ func (s *Service) ReconcileLoadBalancer(openStackCluster *infrav1.OpenStackClust
156156
AllowedCIDRs: allowedCIDRs,
157157
Tags: lb.Tags,
158158
}
159-
return nil
159+
return false, nil
160160
}
161161

162162
func (s *Service) getOrCreateLoadBalancer(openStackCluster *infrav1.OpenStackCluster, loadBalancerName, subnetID, clusterName, vipAddress, provider string) (*loadbalancers.LoadBalancer, error) {

pkg/cloud/services/loadbalancer/loadbalancer_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ func Test_ReconcileLoadBalancer(t *testing.T) {
132132

133133
tt.expectNetwork(mockScopeFactory.NetworkClient.EXPECT())
134134
tt.expectLoadBalancer(mockScopeFactory.LbClient.EXPECT())
135-
err = lbs.ReconcileLoadBalancer(openStackCluster, "AAAAA", 0)
135+
_, err = lbs.ReconcileLoadBalancer(openStackCluster, "AAAAA", 0)
136136
if tt.wantError != nil {
137137
g.Expect(err).To(MatchError(tt.wantError))
138138
} else {

0 commit comments

Comments
 (0)