@@ -188,14 +188,7 @@ func (r *Reconciler) install(ctx context.Context, req ctrl.Request,
188188 }
189189
190190 if manifest .IsUnmanaged () {
191- if controllerutil .ContainsFinalizer (manifest , finalizer .LabelRemovalFinalizer ) {
192- return r .handleLabelsRemovalFinalizer (ctx , req , skrClient , manifest )
193- }
194-
195- if err := r .kcpClient .Delete (ctx , manifest ); err != nil {
196- return ctrl.Result {}, fmt .Errorf ("manifestController: %w" , err )
197- }
198- return ctrl.Result {RequeueAfter : r .requeueIntervals .Success }, nil
191+ return r .handleUnmanagedManifest (ctx , req , skrClient , manifest )
199192 }
200193
201194 err = r .orphanDetectionService .DetectOrphanedManifest (ctx , manifest )
@@ -240,11 +233,19 @@ func (r *Reconciler) install(ctx context.Context, req ctrl.Request,
240233 return r .finishReconcile (ctx , manifest , metrics .ManifestSyncResources , manifestStatus , err )
241234 }
242235
243- if err := r .syncManifestState (ctx , skrClient , manifest , target ); err != nil {
236+ if err := r .syncDefaultModuleCR (ctx , skrClient , manifest ); err != nil {
237+ return r .finishReconcile (ctx , manifest , metrics .ManifestSyncState , manifestStatus , err )
238+ }
239+
240+ if err := finalizer .EnsureCRFinalizer (ctx , r .kcpClient , manifest ); err != nil {
244241 if errors .Is (err , finalizer .ErrRequeueRequired ) {
245242 r .manifestMetrics .RecordRequeueReason (metrics .ManifestSyncResourcesEnqueueRequired , queue .IntendedRequeue )
246243 return ctrl.Result {RequeueAfter : r .rateLimiter .When (req )}, nil
247244 }
245+ return r .finishReconcile (ctx , manifest , metrics .ManifestSyncState , manifestStatus , err )
246+ }
247+
248+ if err := r .updateManifestStateAfterSync (ctx , skrClient , manifest , target ); err != nil {
248249 logf .FromContext (ctx ).Error (err , "failed to sync manifest state" )
249250 return r .finishReconcile (ctx , manifest , metrics .ManifestSyncState , manifestStatus , err )
250251 }
@@ -328,11 +329,7 @@ func (r *Reconciler) delete(ctx context.Context, req ctrl.Request,
328329 return r .finishReconcile (ctx , manifest , metrics .ManifestSyncResources , manifestStatus , err )
329330 }
330331
331- if err := r .syncManifestState (ctx , skrClient , manifest , target ); err != nil {
332- if errors .Is (err , finalizer .ErrRequeueRequired ) {
333- r .manifestMetrics .RecordRequeueReason (metrics .ManifestSyncResourcesEnqueueRequired , queue .IntendedRequeue )
334- return ctrl.Result {RequeueAfter : r .rateLimiter .When (req )}, nil
335- }
332+ if err := r .updateDeletingState (manifest ); err != nil {
336333 logf .FromContext (ctx ).Error (err , "failed to sync manifest state" )
337334 return r .finishReconcile (ctx , manifest , metrics .ManifestSyncState , manifestStatus , err )
338335 }
@@ -481,40 +478,51 @@ func ensureModuleCRsAllDeleted(ctx context.Context, skrClient skrclient.Client,
481478 return modulecr .NewClient (skrClient ).CheckDefaultCRDeletion (ctx , manifest )
482479}
483480
484- func (r * Reconciler ) syncManifestState (ctx context.Context , skrClient skrclient.Client , manifest * v1beta2.Manifest ,
485- target []client.Object ,
481+ func (r * Reconciler ) handleUnmanagedManifest (ctx context.Context , req ctrl.Request ,
482+ skrClient client.Client , manifest * v1beta2.Manifest ,
483+ ) (ctrl.Result , error ) {
484+ if controllerutil .ContainsFinalizer (manifest , finalizer .LabelRemovalFinalizer ) {
485+ return r .handleLabelsRemovalFinalizer (ctx , req , skrClient , manifest )
486+ }
487+ if err := r .kcpClient .Delete (ctx , manifest ); err != nil {
488+ return ctrl.Result {}, fmt .Errorf ("manifestController: %w" , err )
489+ }
490+ return ctrl.Result {RequeueAfter : r .requeueIntervals .Success }, nil
491+ }
492+
493+ func (r * Reconciler ) syncDefaultModuleCR (ctx context.Context , skrClient skrclient.Client ,
494+ manifest * v1beta2.Manifest ,
486495) error {
487496 manifestStatus := manifest .GetStatus ()
488-
489497 if manifest .ShouldCreateDefaultModuleCR () && ! status .IsModuleCRInstallConditionTrue (manifestStatus ) {
490498 if err := modulecr .NewClient (skrClient ).SyncDefaultModuleCR (ctx , manifest ); err != nil {
491499 manifest .SetStatus (manifestStatus .WithState (shared .StateError ).WithErr (err ))
492500 return err
493501 }
494502 status .SetModuleCRInstallConditionTrue (manifest )
495503 }
504+ return nil
505+ }
496506
497- if err := finalizer .EnsureCRFinalizer (ctx , r .kcpClient , manifest ); err != nil {
498- return err
499- }
500-
501- if ! manifest .GetDeletionTimestamp ().IsZero () {
502- if status .RequireManifestStateUpdateAfterSyncResource (manifest , shared .StateDeleting ) {
503- return fmt .Errorf ("%w: from %s to %s" , errStateRequireUpdate ,
504- manifestStatus .State , shared .StateDeleting )
505- }
506- return nil
507- }
508-
507+ func (r * Reconciler ) updateManifestStateAfterSync (ctx context.Context , skrClient skrclient.Client ,
508+ manifest * v1beta2.Manifest , target []client.Object ,
509+ ) error {
510+ manifestStatus := manifest .GetStatus ()
509511 managerState , err := r .checkManagerState (ctx , skrClient , target )
510512 if err != nil {
511513 manifest .SetStatus (manifestStatus .WithState (shared .StateError ).WithErr (err ))
512514 return err
513515 }
514-
515516 if status .RequireManifestStateUpdateAfterSyncResource (manifest , managerState ) {
516- return fmt .Errorf ("%w: from %s to %s" , errStateRequireUpdate ,
517- manifestStatus .State , managerState )
517+ return fmt .Errorf ("%w: from %s to %s" , errStateRequireUpdate , manifestStatus .State , managerState )
518+ }
519+ return nil
520+ }
521+
522+ func (r * Reconciler ) updateDeletingState (manifest * v1beta2.Manifest ) error {
523+ manifestStatus := manifest .GetStatus ()
524+ if status .RequireManifestStateUpdateAfterSyncResource (manifest , shared .StateDeleting ) {
525+ return fmt .Errorf ("%w: from %s to %s" , errStateRequireUpdate , manifestStatus .State , shared .StateDeleting )
518526 }
519527 return nil
520528}
0 commit comments