Skip to content

Commit ded3687

Browse files
committed
Configure Loadbalancer back-end pool only for controlplane machines
1 parent 7716671 commit ded3687

File tree

3 files changed

+456
-6
lines changed

3 files changed

+456
-6
lines changed

cloud/scope/powervs_machine.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -962,7 +962,7 @@ func (m *PowerVSMachineScope) GetMachineInternalIP() string {
962962
return ""
963963
}
964964

965-
// CreateVPCLoadBalancerPoolMember creates a member in load balaner pool.
965+
// CreateVPCLoadBalancerPoolMember creates a member in load balancer pool.
966966
func (m *PowerVSMachineScope) CreateVPCLoadBalancerPoolMember() (*vpcv1.LoadBalancerPoolMember, error) { //nolint:gocyclo
967967
loadBalancers := make([]infrav1beta2.VPCLoadBalancerSpec, 0)
968968
if len(m.IBMPowerVSCluster.Spec.LoadBalancers) == 0 {

controllers/ibmpowervsmachine_controller.go

+24-4
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,23 @@ func (r *IBMPowerVSMachineReconciler) getOrCreate(scope *scope.PowerVSMachineSco
198198
return instance, err
199199
}
200200

201+
// handleLoadBalancerPoolMemberConfiguration handles loadbalancer pool member creation flow.
202+
func (r *IBMPowerVSMachineReconciler) handleLoadBalancerPoolMemberConfiguration(machineScope *scope.PowerVSMachineScope) (ctrl.Result, error) {
203+
if !util.IsControlPlaneMachine(machineScope.Machine) {
204+
return ctrl.Result{}, nil
205+
}
206+
machineScope.Info("Configuring control plane machine to backend LoadBalancer pool", "machine name", machineScope.IBMPowerVSMachine.Name)
207+
poolMember, err := machineScope.CreateVPCLoadBalancerPoolMember()
208+
if err != nil {
209+
return ctrl.Result{}, fmt.Errorf("failed CreateVPCLoadBalancerPoolMember %s: %w", machineScope.IBMPowerVSMachine.Name, err)
210+
}
211+
if poolMember != nil && *poolMember.ProvisioningStatus != string(infrav1beta2.VPCLoadBalancerStateActive) {
212+
return ctrl.Result{Requeue: true, RequeueAfter: 1 * time.Minute}, nil
213+
}
214+
215+
return ctrl.Result{}, nil
216+
}
217+
201218
func (r *IBMPowerVSMachineReconciler) reconcileNormal(machineScope *scope.PowerVSMachineScope) (ctrl.Result, error) {
202219
machineScope.Info("Reconciling IBMPowerVSMachine")
203220

@@ -289,12 +306,15 @@ func (r *IBMPowerVSMachineReconciler) reconcileNormal(machineScope *scope.PowerV
289306
machineScope.Info("Unable to update the LoadBalancer, Machine internal IP not yet set", "machine name", machineScope.IBMPowerVSMachine.Name)
290307
return ctrl.Result{}, nil
291308
}
292-
poolMember, err := machineScope.CreateVPCLoadBalancerPoolMember()
309+
310+
poolMemberReconcileResult, err := r.handleLoadBalancerPoolMemberConfiguration(machineScope)
293311
if err != nil {
294-
return ctrl.Result{}, fmt.Errorf("failed CreateVPCLoadBalancerPoolMember %s: %w", machineScope.IBMPowerVSMachine.Name, err)
312+
return ctrl.Result{}, err
295313
}
296-
if poolMember != nil && *poolMember.ProvisioningStatus != string(infrav1beta2.VPCLoadBalancerStateActive) {
297-
return ctrl.Result{RequeueAfter: 1 * time.Minute}, nil
314+
315+
if poolMemberReconcileResult.Requeue {
316+
return poolMemberReconcileResult, nil
298317
}
318+
299319
return ctrl.Result{}, nil
300320
}

0 commit comments

Comments
 (0)