Skip to content

Commit b9b9c63

Browse files
committed
IT fix
1 parent 02e2377 commit b9b9c63

File tree

9 files changed

+43
-12
lines changed

9 files changed

+43
-12
lines changed

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/AnnotationControllerConfiguration.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -273,10 +273,10 @@ public List<DependentResourceSpec> getDependentResources() {
273273
return specs;
274274
}
275275

276-
private <T> T instantiateIfNotVoid(Class<T> condition, Class<?> voidClass) {
277-
if (!condition.equals(voidClass)) {
276+
private <T> T instantiateIfNotVoid(Class<T> clazz, Class<?> voidClass) {
277+
if (!clazz.equals(voidClass)) {
278278
try {
279-
return condition.getDeclaredConstructor().newInstance();
279+
return clazz.getDeclaredConstructor().newInstance();
280280
} catch (InstantiationException
281281
| IllegalAccessException
282282
| InvocationTargetException

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/DefaultContext.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,11 @@ public <T> Optional<T> getSecondaryResource(Class<T> expectedType, String eventS
4747
.getSecondaryResource(primaryResource);
4848
}
4949

50-
// todo implement
5150
@Override
5251
public <R> Optional<R> getSecondaryResource(Class<R> expectedType,
5352
ResourceDiscriminator<R, P> discriminator) {
54-
return Optional.empty();
53+
return discriminator.distinguish(expectedType, primaryResource, this,
54+
controller.getEventSourceManager());
5555
}
5656

5757
@Override

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/ResourceDiscriminator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
// todo is discriminator a good name? it not just discriminates but also reads from cache
99
public interface ResourceDiscriminator<R, P extends HasMetadata> {
1010

11-
Optional<R> distinguish(Class<R> resource, Context<P> context,
11+
Optional<R> distinguish(Class<R> resource, P primary, Context<P> context,
1212
EventSourceRetriever<P> eventSourceManager);
1313

1414
}

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/ResourceListDiscriminator.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,15 @@
66
import io.fabric8.kubernetes.api.model.HasMetadata;
77
import io.javaoperatorsdk.operator.processing.event.EventSourceRetriever;
88

9+
// todo this requires rather a matcher (name+namespace) as input
910
public abstract class ResourceListDiscriminator<R, P extends HasMetadata>
1011
implements ResourceDiscriminator<R, P> {
1112
@Override
12-
public Optional<R> distinguish(Class<R> resource, Context<P> context,
13+
public Optional<R> distinguish(Class<R> resource, P primary, Context<P> context,
1314
EventSourceRetriever<P> eventSourceManager) {
1415
var resources = context.getSecondaryResources(resource);
15-
return distinguish(resources);
16+
return distinguish(primary, resources);
1617
}
1718

18-
abstract Optional<R> distinguish(Set<R> resourceList);
19+
protected abstract Optional<R> distinguish(P primary, Set<R> resourceList);
1920
}

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/VoidResourceDiscriminator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ public class VoidResourceDiscriminator<R, P extends HasMetadata>
99
implements ResourceDiscriminator<R, P> {
1010

1111
@Override
12-
public Optional<R> distinguish(Class<R> resource, Context<P> context,
12+
public Optional<R> distinguish(Class<R> resource, P primary, Context<P> context,
1313
EventSourceRetriever<P> eventSourceManager) {
1414
throw new UnsupportedOperationException();
1515
}

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/AbstractDependentResource.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ public abstract class AbstractDependentResource<R, P extends HasMetadata>
2424
protected Creator<R, P> creator;
2525
protected Updater<R, P> updater;
2626

27+
// todo discuss, rather implement this as interface?
2728
private ResourceDiscriminator<R, P> resourceDiscriminator;
2829

2930
@SuppressWarnings("unchecked")

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/KubernetesDependentResourceConfig.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ public KubernetesDependentResourceConfig(Set<String> namespaces, String labelSel
4141
this.onUpdateFilter = onUpdateFilter;
4242
this.onDeleteFilter = onDeleteFilter;
4343
this.genericFilter = genericFilter;
44+
this.resourceDiscriminator = resourceDiscriminator;
4445
}
4546

4647
public KubernetesDependentResourceConfig(Set<String> namespaces, String labelSelector) {

operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/orderedmanageddependent/ConfigMapDependentResource1.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,19 @@
22

33
import java.util.HashMap;
44
import java.util.Map;
5+
import java.util.Optional;
6+
import java.util.Set;
57

68
import io.fabric8.kubernetes.api.model.ConfigMap;
79
import io.fabric8.kubernetes.api.model.ObjectMeta;
810
import io.javaoperatorsdk.operator.api.reconciler.Context;
11+
import io.javaoperatorsdk.operator.api.reconciler.ResourceListDiscriminator;
912
import io.javaoperatorsdk.operator.api.reconciler.dependent.ReconcileResult;
1013
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.CRUDKubernetesDependentResource;
1114
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependent;
1215

13-
@KubernetesDependent(labelSelector = "dependent = cm1")
16+
@KubernetesDependent(labelSelector = "dependent = cm1",
17+
resourceDiscriminator = ConfigMapDependentResource1.CM1ResourceDiscriminator.class)
1418
public class ConfigMapDependentResource1 extends
1519
CRUDKubernetesDependentResource<ConfigMap, OrderedManagedDependentCustomResource> {
1620

@@ -42,4 +46,14 @@ protected ConfigMap desired(OrderedManagedDependentCustomResource primary,
4246
return configMap;
4347
}
4448

49+
public static class CM1ResourceDiscriminator
50+
extends ResourceListDiscriminator<ConfigMap, OrderedManagedDependentCustomResource> {
51+
@Override
52+
protected Optional<ConfigMap> distinguish(OrderedManagedDependentCustomResource primary,
53+
Set<ConfigMap> resourceList) {
54+
return resourceList.stream().filter(cm -> cm.getMetadata().getName()
55+
.equals(primary.getMetadata().getName() + "1")).findFirst();
56+
}
57+
}
58+
4559
}

operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/orderedmanageddependent/ConfigMapDependentResource2.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,19 @@
22

33
import java.util.HashMap;
44
import java.util.Map;
5+
import java.util.Optional;
6+
import java.util.Set;
57

68
import io.fabric8.kubernetes.api.model.ConfigMap;
79
import io.fabric8.kubernetes.api.model.ObjectMeta;
810
import io.javaoperatorsdk.operator.api.reconciler.Context;
11+
import io.javaoperatorsdk.operator.api.reconciler.ResourceListDiscriminator;
912
import io.javaoperatorsdk.operator.api.reconciler.dependent.ReconcileResult;
1013
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.CRUDKubernetesDependentResource;
1114
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependent;
1215

13-
@KubernetesDependent(labelSelector = "dependent = cm2")
16+
@KubernetesDependent(labelSelector = "dependent = cm2",
17+
resourceDiscriminator = ConfigMapDependentResource2.CM2ResourceDiscriminator.class)
1418
public class ConfigMapDependentResource2 extends
1519
CRUDKubernetesDependentResource<ConfigMap, OrderedManagedDependentCustomResource> {
1620

@@ -42,4 +46,14 @@ protected ConfigMap desired(OrderedManagedDependentCustomResource primary,
4246
return configMap;
4347
}
4448

49+
public static class CM2ResourceDiscriminator
50+
extends ResourceListDiscriminator<ConfigMap, OrderedManagedDependentCustomResource> {
51+
@Override
52+
protected Optional<ConfigMap> distinguish(OrderedManagedDependentCustomResource primary,
53+
Set<ConfigMap> resourceList) {
54+
return resourceList.stream().filter(cm -> cm.getMetadata().getName()
55+
.equals(primary.getMetadata().getName() + "2")).findFirst();
56+
}
57+
}
58+
4559
}

0 commit comments

Comments
 (0)