Skip to content

Commit 7c443eb

Browse files
authored
fix: Register cleanup-contentmanager-cache finalizer for BoxcutterRuntime (#2304)
When BoxcutterRuntime is enabled, ClusterExtensions created with the Helm runtime still have the cleanup-contentmanager-cache finalizer, but the finalizer handler is not registered in setupBoxcutter(). This causes ClusterExtension deletions to hang indefinitely. This commit registers a no-op finalizer handler in setupBoxcutter() to allow deletion of ClusterExtensions that were created before BoxcutterRuntime was enabled. Since Boxcutter doesn't use contentmanager (it has its own tracking mechanism), no actual cleanup is needed. Assisted-by: Claude code Signed-off-by: Todd Short <tshort@redhat.com>
1 parent aab9527 commit 7c443eb

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

cmd/operator-controller/main.go

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -460,7 +460,7 @@ func run() error {
460460
}
461461

462462
if features.OperatorControllerFeatureGate.Enabled(features.BoxcutterRuntime) {
463-
err = setupBoxcutter(mgr, ceReconciler, preflights, regv1ManifestProvider)
463+
err = setupBoxcutter(mgr, ceReconciler, preflights, clusterExtensionFinalizers, regv1ManifestProvider)
464464
} else {
465465
err = setupHelm(mgr, ceReconciler, preflights, ceController, clusterExtensionFinalizers, regv1ManifestProvider)
466466
}
@@ -527,6 +527,7 @@ func setupBoxcutter(
527527
mgr manager.Manager,
528528
ceReconciler *controllers.ClusterExtensionReconciler,
529529
preflights []applier.Preflight,
530+
clusterExtensionFinalizers crfinalizer.Registerer,
530531
regv1ManifestProvider applier.ManifestProvider,
531532
) error {
532533
coreClient, err := corev1client.NewForConfig(mgr.GetConfig())
@@ -551,6 +552,19 @@ func setupBoxcutter(
551552
return fmt.Errorf("unable to create helm action client getter: %w", err)
552553
}
553554

555+
// Register a no-op finalizer handler for cleanup-contentmanager-cache.
556+
// This finalizer was added by the Helm applier for ClusterExtensions created
557+
// before BoxcutterRuntime was enabled. Boxcutter doesn't use contentmanager,
558+
// so we just need to acknowledge the finalizer to allow deletion to proceed.
559+
err = clusterExtensionFinalizers.Register(controllers.ClusterExtensionCleanupContentManagerCacheFinalizer, finalizers.FinalizerFunc(func(ctx context.Context, obj client.Object) (crfinalizer.Result, error) {
560+
// No-op: Boxcutter doesn't use contentmanager, so no cleanup is needed
561+
return crfinalizer.Result{}, nil
562+
}))
563+
if err != nil {
564+
setupLog.Error(err, "unable to register content manager cleanup finalizer for boxcutter")
565+
return err
566+
}
567+
554568
// TODO: add support for preflight checks
555569
// TODO: better scheme handling - which types do we want to support?
556570
_ = apiextensionsv1.AddToScheme(mgr.GetScheme())

0 commit comments

Comments
 (0)