Skip to content

Commit 839a0fc

Browse files
committed
Harmonize BMCUser reconciler code
1 parent f07a5ff commit 839a0fc

File tree

1 file changed

+19
-31
lines changed

1 file changed

+19
-31
lines changed

internal/controller/bmcuser_controller.go

Lines changed: 19 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ package controller
55

66
import (
77
"context"
8+
"errors"
89
"fmt"
910
"time"
1011

@@ -25,7 +26,7 @@ import (
2526
)
2627

2728
const (
28-
BMCUserFinalizer = "metal.ironcore.dev/bmcuser-finalizer"
29+
BMCUserFinalizer = "metal.ironcore.dev/bmcuser"
2930
)
3031

3132
// BMCUserReconciler reconciles a BMCUser object
@@ -53,24 +54,18 @@ func (r *BMCUserReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ct
5354

5455
func (r *BMCUserReconciler) reconcileExists(ctx context.Context, log logr.Logger, user *metalv1alpha1.BMCUser) (ctrl.Result, error) {
5556
if !user.DeletionTimestamp.IsZero() {
56-
err := r.delete(ctx, log, user)
57-
if err != nil {
58-
return ctrl.Result{}, fmt.Errorf("failed to delete User: %w", err)
59-
}
60-
return ctrl.Result{}, nil
57+
return r.delete(ctx, log, user)
6158
}
6259
return r.reconcile(ctx, log, user)
6360
}
6461

6562
func (r *BMCUserReconciler) reconcile(ctx context.Context, log logr.Logger, user *metalv1alpha1.BMCUser) (ctrl.Result, error) {
6663
if user.Spec.BMCRef == nil {
67-
log.Info("No BMC reference set for User, skipping reconciliation", "User", user.Name)
64+
log.Info("No BMC reference set for User, skipping reconciliation")
6865
return ctrl.Result{}, nil
6966
}
7067
bmcObj := &metalv1alpha1.BMC{}
71-
if err := r.Get(ctx, client.ObjectKey{
72-
Name: user.Spec.BMCRef.Name,
73-
}, bmcObj); err != nil {
68+
if err := r.Get(ctx, client.ObjectKey{Name: user.Spec.BMCRef.Name}, bmcObj); err != nil {
7469
return ctrl.Result{}, err
7570
}
7671
if err := r.updateEffectiveSecret(ctx, log, user, bmcObj); err != nil {
@@ -84,21 +79,18 @@ func (r *BMCUserReconciler) reconcile(ctx context.Context, log logr.Logger, user
8479
return ctrl.Result{}, fmt.Errorf("failed to get BMC client: %w", err)
8580
}
8681
defer bmcClient.Logout()
87-
err = r.patchUserStatus(ctx, log, user, bmcClient)
88-
if err != nil {
82+
if err = r.patchUserStatus(ctx, log, user, bmcClient); err != nil {
8983
return ctrl.Result{}, fmt.Errorf("failed to update User status: %w", err)
9084
}
9185

9286
if user.Spec.BMCSecretRef == nil {
93-
log.Info("No BMCSecret reference set for User, creating a new one", "User", user.Name)
87+
log.Info("No BMCSecret reference set for User, creating a new one")
9488
if err := r.ensureBMCSecretForUser(ctx, log, bmcClient, user, bmcObj); err != nil {
9589
return ctrl.Result{}, fmt.Errorf("failed to handle missing BMCSecret reference: %w", err)
9690
}
9791
}
9892
bmcSecret := &metalv1alpha1.BMCSecret{}
99-
if err := r.Get(ctx, client.ObjectKey{
100-
Name: user.Spec.BMCSecretRef.Name,
101-
}, bmcSecret); err != nil {
93+
if err := r.Get(ctx, client.ObjectKey{Name: user.Spec.BMCSecretRef.Name}, bmcSecret); err != nil {
10294
return ctrl.Result{}, err
10395
}
10496

@@ -177,10 +169,7 @@ func (r *BMCUserReconciler) handleRotatingPassword(ctx context.Context, log logr
177169
user.Status.LastRotation.Time.Add(user.Spec.RotationPeriod.Duration).After(time.Now()) &&
178170
!forceRotation {
179171
log.V(1).Info("BMC user password rotation is not needed yet", "User", user.Name)
180-
return ctrl.Result{
181-
Requeue: true,
182-
RequeueAfter: user.Spec.RotationPeriod.Duration,
183-
}, nil
172+
return ctrl.Result{RequeueAfter: user.Spec.RotationPeriod.Duration}, nil
184173
}
185174
log.Info("Rotating BMC user password", "User", user.Name)
186175
accountService, err := bmcClient.GetAccountService()
@@ -362,7 +351,8 @@ func (r *BMCUserReconciler) bmcConnectionTest(ctx context.Context, secret *metal
362351
}
363352
_, err = bmcutils.CreateBMCClient(ctx, r.Client, protocolScheme, bmcObj.Spec.Protocol.Name, address, bmcObj.Spec.Protocol.Port, secret, r.BMCOptions)
364353
if err != nil {
365-
if httpErr, ok := err.(*common.Error); ok {
354+
var httpErr *common.Error
355+
if errors.As(err, &httpErr) {
366356
if httpErr.HTTPReturnedStatusCode == 401 || httpErr.HTTPReturnedStatusCode == 403 {
367357
return true, nil
368358
}
@@ -372,31 +362,29 @@ func (r *BMCUserReconciler) bmcConnectionTest(ctx context.Context, secret *metal
372362
return false, nil
373363
}
374364

375-
func (r *BMCUserReconciler) delete(ctx context.Context, log logr.Logger, user *metalv1alpha1.BMCUser) error {
365+
func (r *BMCUserReconciler) delete(ctx context.Context, log logr.Logger, user *metalv1alpha1.BMCUser) (ctrl.Result, error) {
376366
if user.Spec.BMCRef == nil {
377367
log.Info("No BMC reference set for User, skipping deletion", "User", user.Name)
378-
return nil
368+
return ctrl.Result{}, nil
379369
}
380370
bmcObj := &metalv1alpha1.BMC{}
381-
if err := r.Get(ctx, client.ObjectKey{
382-
Name: user.Spec.BMCRef.Name,
383-
}, bmcObj); err != nil {
384-
return client.IgnoreNotFound(err)
371+
if err := r.Get(ctx, client.ObjectKey{Name: user.Spec.BMCRef.Name}, bmcObj); err != nil {
372+
return ctrl.Result{}, client.IgnoreNotFound(err)
385373
}
386374
bmcClient, err := r.getBMCClient(ctx, bmcObj)
387375
if err != nil {
388-
return fmt.Errorf("failed to get BMC client: %w", err)
376+
return ctrl.Result{}, fmt.Errorf("failed to get BMC client: %w", err)
389377
}
390378
defer bmcClient.Logout()
391379
log.Info("Deleting BMC account for User", "User", user.Name)
392380
if err := bmcClient.DeleteAccount(ctx, user.Spec.UserName, user.Status.ID); err != nil {
393-
return fmt.Errorf("failed to delete BMC account: %w", err)
381+
return ctrl.Result{}, fmt.Errorf("failed to delete BMC account: %w", err)
394382
}
395383
log.Info("Successfully deleted BMC account and removed finalizer for User", "User", user.Name)
396384
if modified, err := clientutils.PatchEnsureNoFinalizer(ctx, r.Client, user, BMCUserFinalizer); err != nil || modified {
397-
return err
385+
return ctrl.Result{}, err
398386
}
399-
return nil
387+
return ctrl.Result{}, nil
400388
}
401389

402390
// SetupWithManager sets up the controller with the Manager.

0 commit comments

Comments
 (0)