@@ -5,6 +5,7 @@ package controller
55
66import (
77 "context"
8+ "errors"
89 "fmt"
910 "time"
1011
@@ -25,7 +26,7 @@ import (
2526)
2627
2728const (
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
5455func (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
6562func (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