@@ -51,6 +51,7 @@ const (
5151 gpuOperatorNamespace = "gpu-operator"
5252 driverAppLabel = "nvidia-driver-daemonset"
5353 clusterPolicyName = "cluster-policy"
54+ expectedCRName = "gpu"
5455)
5556
5657var clusterPolicyGVK = schema.GroupVersionKind {
@@ -131,6 +132,21 @@ func (r *GpuReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.R
131132 return r .reconcileDelete (ctx , gpu )
132133 }
133134
135+ // Singleton enforcement (defense-in-depth; CEL is the primary gate).
136+ if gpu .Name != expectedCRName {
137+ if err := r .applyStatus (ctx , gpu .Name , statusUpdate {
138+ conditions : []metav1.Condition {{
139+ Type : condReady ,
140+ Status : metav1 .ConditionFalse ,
141+ Reason : reasonForbiddenName ,
142+ Message : fmt .Sprintf ("only a singleton Gpu CR named %q is reconciled; this CR is ignored" , expectedCRName ),
143+ }},
144+ }); err != nil {
145+ return ctrl.Result {}, err
146+ }
147+ return ctrl.Result {}, nil
148+ }
149+
134150 if ! controllerutil .ContainsFinalizer (gpu , finalizer ) {
135151 controllerutil .AddFinalizer (gpu , finalizer )
136152 if err := r .Update (ctx , gpu ); err != nil {
@@ -279,6 +295,16 @@ func (r *GpuReconciler) reconcileDelete(ctx context.Context, gpu *gpuv1beta1.Gpu
279295 return ctrl.Result {}, nil
280296 }
281297
298+ // Rogue CR (name != expectedCRName) somehow has our finalizer. Drop it
299+ // without calling Helm - Uninstall would target the real release.
300+ if gpu .Name != expectedCRName {
301+ controllerutil .RemoveFinalizer (gpu , finalizer )
302+ if err := r .Update (ctx , gpu ); err != nil {
303+ return ctrl.Result {}, fmt .Errorf ("removing finalizer from rogue CR: %w" , err )
304+ }
305+ return ctrl.Result {}, nil
306+ }
307+
282308 logger .Info ("Gpu CR deleted, uninstalling GPU Operator" )
283309
284310 // Best-effort status update - do not block deletion if this fails.
0 commit comments