diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/AbstractDependentResource.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/AbstractDependentResource.java index 63223a01ff..db69d8134b 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/AbstractDependentResource.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/AbstractDependentResource.java @@ -114,7 +114,7 @@ public Optional getSecondaryResource(P primary, Context

context) { if (secondaryResources.isEmpty()) { return Optional.empty(); } else { - return selectManagedSecondaryResource(secondaryResources, primary, context); + return selectTargetSecondaryResource(secondaryResources, primary, context); } } @@ -132,7 +132,7 @@ public Optional getSecondaryResource(P primary, Context

context) { * @throws IllegalStateException if more than one candidate is found, in which case some other * mechanism might be necessary to distinguish between candidate secondary resources */ - protected Optional selectManagedSecondaryResource(Set secondaryResources, P primary, + protected Optional selectTargetSecondaryResource(Set secondaryResources, P primary, Context

context) { R desired = desired(primary, context); var targetResources = secondaryResources.stream().filter(r -> r.equals(desired)).toList(); 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 e629feb329..7b228df881 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 @@ -221,9 +221,9 @@ protected void addSecondaryToPrimaryMapperAnnotations(R desired, P primary, Stri } @Override - protected Optional selectManagedSecondaryResource(Set secondaryResources, P primary, + protected Optional selectTargetSecondaryResource(Set secondaryResources, P primary, Context

context) { - ResourceID managedResourceID = managedSecondaryResourceID(primary, context); + ResourceID managedResourceID = targetSecondaryResourceID(primary, context); return secondaryResources.stream() .filter(r -> r.getMetadata().getName().equals(managedResourceID.getName()) && Objects.equals(r.getMetadata().getNamespace(), @@ -239,7 +239,7 @@ protected Optional selectManagedSecondaryResource(Set secondaryResources, * @param context of current reconciliation * @return id of the target managed resource */ - protected ResourceID managedSecondaryResourceID(P primary, Context

context) { + protected ResourceID targetSecondaryResourceID(P primary, Context

context) { return ResourceID.fromResource(desired(primary, context)); } diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/externalstate/ExternalWithStateDependentResource.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/externalstate/ExternalWithStateDependentResource.java index 9bdeea93cd..47d6a25144 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/externalstate/ExternalWithStateDependentResource.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/externalstate/ExternalWithStateDependentResource.java @@ -40,7 +40,7 @@ public Set fetchResources( } @Override - protected Optional selectManagedSecondaryResource( + protected Optional selectTargetSecondaryResource( Set secondaryResources, ExternalStateCustomResource primary, Context context) { var id = getResourceID(primary); diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/multipledrsametypenodiscriminator/MultipleManagedDependentNoDiscriminatorConfigMap1.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/multipledrsametypenodiscriminator/MultipleManagedDependentNoDiscriminatorConfigMap1.java index 750f8489b7..6b83593173 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/multipledrsametypenodiscriminator/MultipleManagedDependentNoDiscriminatorConfigMap1.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/multipledrsametypenodiscriminator/MultipleManagedDependentNoDiscriminatorConfigMap1.java @@ -8,6 +8,7 @@ import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.CRUDKubernetesDependentResource; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependent; +import io.javaoperatorsdk.operator.processing.event.ResourceID; @KubernetesDependent public class MultipleManagedDependentNoDiscriminatorConfigMap1 @@ -20,6 +21,19 @@ public MultipleManagedDependentNoDiscriminatorConfigMap1() { super(ConfigMap.class); } + /* + * Showcases optimization to avoid computing the whole desired state by providing the ResourceID + * of the target resource. In this particular case this would not be necessary, since desired + * state creation is pretty lightweight. However, this might make sense in situation where the + * desired state is more costly + */ + protected ResourceID targetSecondaryResourceID( + MultipleManagedDependentNoDiscriminatorCustomResource primary, + Context context) { + return new ResourceID(primary.getMetadata().getName() + NAME_SUFFIX, + primary.getMetadata().getNamespace()); + } + @Override protected ConfigMap desired(MultipleManagedDependentNoDiscriminatorCustomResource primary, Context context) {