From 784daf3cf9a2567f6acee3cd15808d2dfc79f44f Mon Sep 17 00:00:00 2001
From: Chris Laprun <claprun@redhat.com>
Date: Mon, 25 Mar 2024 11:04:45 +0100
Subject: [PATCH] feat: handle clustered resource on secondary to primary
 mapper init

Fixes #2311

Signed-off-by: Chris Laprun <claprun@redhat.com>
---
 .../dependent/kubernetes/KubernetesDependentResource.java   | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/KubernetesDependentResource.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/KubernetesDependentResource.java
index edc7491469..7b1bb254a3 100644
--- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/KubernetesDependentResource.java
+++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/KubernetesDependentResource.java
@@ -9,6 +9,7 @@
 import org.slf4j.LoggerFactory;
 
 import io.fabric8.kubernetes.api.model.HasMetadata;
+import io.fabric8.kubernetes.api.model.Namespaced;
 import io.fabric8.kubernetes.client.dsl.Resource;
 import io.javaoperatorsdk.operator.OperatorException;
 import io.javaoperatorsdk.operator.ReconcilerUtils;
@@ -38,11 +39,11 @@ public abstract class KubernetesDependentResource<R extends HasMetadata, P exten
   private static final Logger log = LoggerFactory.getLogger(KubernetesDependentResource.class);
   private final ResourceUpdaterMatcher<R> updaterMatcher;
   private final boolean garbageCollected = this instanceof GarbageCollected;
+  private final boolean clustered;
   private KubernetesDependentResourceConfig<R> kubernetesDependentResourceConfig;
 
   private final boolean usingCustomResourceUpdateMatcher;
 
-  @SuppressWarnings("unchecked")
   public KubernetesDependentResource(Class<R> resourceType) {
     this(resourceType, null);
   }
@@ -55,6 +56,7 @@ public KubernetesDependentResource(Class<R> resourceType, String name) {
     updaterMatcher = usingCustomResourceUpdateMatcher
         ? (ResourceUpdaterMatcher<R>) this
         : GenericResourceUpdaterMatcher.updaterMatcherFor(resourceType);
+    clustered = !Namespaced.class.isAssignableFrom(resourceType);
   }
 
   @SuppressWarnings("unchecked")
@@ -93,7 +95,7 @@ private SecondaryToPrimaryMapper<R> getSecondaryToPrimaryMapper() {
     if (this instanceof SecondaryToPrimaryMapper) {
       return (SecondaryToPrimaryMapper<R>) this;
     } else if (garbageCollected) {
-      return Mappers.fromOwnerReferences(false);
+      return Mappers.fromOwnerReferences(clustered);
     } else if (useNonOwnerRefBasedSecondaryToPrimaryMapping()) {
       return Mappers.fromDefaultAnnotations();
     } else {