Skip to content

Commit f735079

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

File tree

3 files changed

+453
-8
lines changed

3 files changed

+453
-8
lines changed

cloud/scope/powervs_machine.go

Lines changed: 1 addition & 1 deletion
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

Lines changed: 21 additions & 6 deletions
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{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,10 @@ 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()
293-
if err != nil {
294-
return ctrl.Result{}, fmt.Errorf("failed CreateVPCLoadBalancerPoolMember %s: %w", machineScope.IBMPowerVSMachine.Name, err)
295-
}
296-
if poolMember != nil && *poolMember.ProvisioningStatus != string(infrav1beta2.VPCLoadBalancerStateActive) {
297-
return ctrl.Result{RequeueAfter: 1 * time.Minute}, nil
309+
310+
if poolMemberReconcileResult, err := r.handleLoadBalancerPoolMemberConfiguration(machineScope); err != nil || poolMemberReconcileResult.RequeueAfter > 0 {
311+
return poolMemberReconcileResult, err
298312
}
313+
299314
return ctrl.Result{}, nil
300315
}

0 commit comments

Comments
 (0)