Skip to content

Commit 41c2908

Browse files
authored
Merge pull request #281 from vishesh92/fix-base-reconciler
Add checks to ensure that ReconcileDelete runs
2 parents 0d26a04 + fd14ade commit 41c2908

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed

controllers/cloudstackmachine_controller.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ func (reconciler *CloudStackMachineReconciler) Reconcile(ctx context.Context, re
107107
r := NewCSMachineReconciliationRunner()
108108
r.UsingBaseReconciler(reconciler.ReconcilerBase).ForRequest(req).WithRequestCtx(ctx)
109109
r.WithAdditionalCommonStages(
110-
r.GetParent(r.ReconciliationSubject, r.CAPIMachine),
110+
r.RunIf(func() bool { return r.ReconciliationSubject.GetDeletionTimestamp().IsZero() }, r.GetParent(r.ReconciliationSubject, r.CAPIMachine)),
111111
r.RequeueIfCloudStackClusterNotReady,
112112
r.SetFailureDomainOnCSMachine,
113113
r.GetFailureDomainByName(func() string { return r.ReconciliationSubject.Spec.FailureDomainName }, r.FailureDomain),
@@ -174,7 +174,8 @@ func (r *CloudStackMachineReconciliationRunner) ConsiderAffinity() (ctrl.Result,
174174
func (r *CloudStackMachineReconciliationRunner) SetFailureDomainOnCSMachine() (retRes ctrl.Result, reterr error) {
175175
if r.ReconciliationSubject.Spec.FailureDomainName == "" {
176176
var name string
177-
if r.CAPIMachine.Spec.FailureDomain != nil &&
177+
// CAPIMachine is null if it's been deleted but we're still reconciling the CS machine.
178+
if r.CAPIMachine != nil && r.CAPIMachine.Spec.FailureDomain != nil &&
178179
(util.IsControlPlaneMachine(r.CAPIMachine) || // Is control plane machine -- CAPI will specify.
179180
*r.CAPIMachine.Spec.FailureDomain != "") { // Or potentially another machine controller specified.
180181
name = *r.CAPIMachine.Spec.FailureDomain

controllers/utils/base_reconciler.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,11 @@ package utils
1919
import (
2020
"context"
2121
"fmt"
22-
"k8s.io/client-go/tools/record"
2322
"strings"
2423
"time"
2524

25+
"k8s.io/client-go/tools/record"
26+
2627
"github.com/go-logr/logr"
2728
"github.com/hashicorp/go-multierror"
2829
"github.com/pkg/errors"
@@ -311,7 +312,7 @@ func (r *ReconciliationRunner) CheckOwnedObjectsDeleted(gvks ...schema.GroupVers
311312

312313
// RequeueIfCloudStackClusterNotReady requeues the reconciliation request if the CloudStackCluster is not ready.
313314
func (r *ReconciliationRunner) RequeueIfCloudStackClusterNotReady() (ctrl.Result, error) {
314-
if !r.CSCluster.Status.Ready {
315+
if r.CSCluster.DeletionTimestamp.IsZero() && !r.CSCluster.Status.Ready {
315316
r.Log.Info("CloudStackCluster not ready. Requeuing.")
316317
return ctrl.Result{RequeueAfter: RequeueTimeout}, nil
317318
}
@@ -402,7 +403,7 @@ func (r *ReconciliationRunner) RunBaseReconciliationStages() (res ctrl.Result, r
402403
r.SetupPatcher,
403404
r.GetCAPICluster,
404405
r.GetCSCluster,
405-
r.RequeueIfMissingBaseCRs,
406+
r.RunIf(func() bool { return r.ReconciliationSubject.GetDeletionTimestamp().IsZero() }, r.RequeueIfMissingBaseCRs),
406407
r.CheckIfPaused}
407408
baseStages = append(
408409
append(baseStages, r.additionalCommonStages...),

0 commit comments

Comments
 (0)