Skip to content

Commit d33cd5f

Browse files
committed
fixed ITs
1 parent b9b9c63 commit d33cd5f

File tree

6 files changed

+61
-46
lines changed

6 files changed

+61
-46
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package io.javaoperatorsdk.operator.api.reconciler;
2+
3+
import java.util.Optional;
4+
import java.util.function.Function;
5+
6+
import io.fabric8.kubernetes.api.model.HasMetadata;
7+
import io.javaoperatorsdk.operator.processing.event.EventSourceRetriever;
8+
import io.javaoperatorsdk.operator.processing.event.ResourceID;
9+
10+
public class ResourceIDMatcherDiscriminator<R extends HasMetadata, P extends HasMetadata>
11+
implements ResourceDiscriminator<R, P> {
12+
13+
private final Function<P, ResourceID> mapper;
14+
15+
public ResourceIDMatcherDiscriminator(Function<P, ResourceID> mapper) {
16+
this.mapper = mapper;
17+
}
18+
19+
@Override
20+
public Optional<R> distinguish(Class<R> resource, P primary, Context<P> context,
21+
EventSourceRetriever<P> eventSourceManager) {
22+
var resourceID = mapper.apply(primary);
23+
return context.getSecondaryResources(resource).stream()
24+
.filter(r -> r.getMetadata().getName()
25+
.equals(resourceID.getName()) &&
26+
resourceID.getNamespace().map(ns -> ns.equals(r.getMetadata().getNamespace()))
27+
.orElse(true))
28+
.findFirst();
29+
}
30+
}

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

Lines changed: 0 additions & 20 deletions
This file was deleted.

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,4 +94,10 @@ public GenericFilter<R> genericFilter() {
9494
public ResourceDiscriminator getResourceDiscriminator() {
9595
return resourceDiscriminator;
9696
}
97+
98+
public <P> KubernetesDependentResourceConfig<R> setResourceDiscriminator(
99+
ResourceDiscriminator<R, ?> resourceDiscriminator) {
100+
this.resourceDiscriminator = resourceDiscriminator;
101+
return this;
102+
}
97103
}

operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multipledependentresource/MultipleDependentResourceReconciler.java

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,12 @@
33
import java.util.Map;
44
import java.util.concurrent.atomic.AtomicInteger;
55

6+
import io.fabric8.kubernetes.api.model.ConfigMap;
67
import io.fabric8.kubernetes.client.KubernetesClient;
7-
import io.javaoperatorsdk.operator.api.reconciler.Context;
8-
import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration;
9-
import io.javaoperatorsdk.operator.api.reconciler.EventSourceContext;
10-
import io.javaoperatorsdk.operator.api.reconciler.EventSourceInitializer;
11-
import io.javaoperatorsdk.operator.api.reconciler.Reconciler;
12-
import io.javaoperatorsdk.operator.api.reconciler.UpdateControl;
8+
import io.javaoperatorsdk.operator.api.reconciler.*;
139
import io.javaoperatorsdk.operator.junit.KubernetesClientAware;
1410
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentResourceConfig;
11+
import io.javaoperatorsdk.operator.processing.event.ResourceID;
1512
import io.javaoperatorsdk.operator.processing.event.source.EventSource;
1613
import io.javaoperatorsdk.operator.support.TestExecutionInfoProvider;
1714

@@ -32,14 +29,24 @@ public class MultipleDependentResourceReconciler
3229

3330
public MultipleDependentResourceReconciler() {
3431
firstDependentResourceConfigMap = new MultipleDependentResourceConfigMap(FIRST_CONFIG_MAP_ID);
32+
3533
secondDependentResourceConfigMap = new MultipleDependentResourceConfigMap(SECOND_CONFIG_MAP_ID);
3634

3735
firstDependentResourceConfigMap.configureWith(
3836
new KubernetesDependentResourceConfig()
39-
.setLabelSelector(getLabelSelector(FIRST_CONFIG_MAP_ID)));
37+
.setLabelSelector(getLabelSelector(FIRST_CONFIG_MAP_ID))
38+
.setResourceDiscriminator(
39+
new ResourceIDMatcherDiscriminator<ConfigMap, MultipleDependentResourceCustomResource>(
40+
p -> new ResourceID(p.getConfigMapName(FIRST_CONFIG_MAP_ID),
41+
p.getMetadata().getNamespace()))));
42+
4043
secondDependentResourceConfigMap.configureWith(
4144
new KubernetesDependentResourceConfig()
42-
.setLabelSelector(getLabelSelector(SECOND_CONFIG_MAP_ID)));
45+
.setLabelSelector(getLabelSelector(SECOND_CONFIG_MAP_ID))
46+
.setResourceDiscriminator(
47+
new ResourceIDMatcherDiscriminator<ConfigMap, MultipleDependentResourceCustomResource>(
48+
p -> new ResourceID(p.getConfigMapName(SECOND_CONFIG_MAP_ID),
49+
p.getMetadata().getNamespace()))));
4350
}
4451

4552
private String getLabelSelector(int resourceId) {

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

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,15 @@
22

33
import java.util.HashMap;
44
import java.util.Map;
5-
import java.util.Optional;
6-
import java.util.Set;
75

86
import io.fabric8.kubernetes.api.model.ConfigMap;
97
import io.fabric8.kubernetes.api.model.ObjectMeta;
108
import io.javaoperatorsdk.operator.api.reconciler.Context;
11-
import io.javaoperatorsdk.operator.api.reconciler.ResourceListDiscriminator;
9+
import io.javaoperatorsdk.operator.api.reconciler.ResourceIDMatcherDiscriminator;
1210
import io.javaoperatorsdk.operator.api.reconciler.dependent.ReconcileResult;
1311
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.CRUDKubernetesDependentResource;
1412
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependent;
13+
import io.javaoperatorsdk.operator.processing.event.ResourceID;
1514

1615
@KubernetesDependent(labelSelector = "dependent = cm1",
1716
resourceDiscriminator = ConfigMapDependentResource1.CM1ResourceDiscriminator.class)
@@ -47,12 +46,9 @@ protected ConfigMap desired(OrderedManagedDependentCustomResource primary,
4746
}
4847

4948
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();
49+
extends ResourceIDMatcherDiscriminator<ConfigMap, OrderedManagedDependentCustomResource> {
50+
public CM1ResourceDiscriminator() {
51+
super(p -> new ResourceID(p.getMetadata().getName() + "1", p.getMetadata().getNamespace()));
5652
}
5753
}
5854

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

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,15 @@
22

33
import java.util.HashMap;
44
import java.util.Map;
5-
import java.util.Optional;
6-
import java.util.Set;
75

86
import io.fabric8.kubernetes.api.model.ConfigMap;
97
import io.fabric8.kubernetes.api.model.ObjectMeta;
108
import io.javaoperatorsdk.operator.api.reconciler.Context;
11-
import io.javaoperatorsdk.operator.api.reconciler.ResourceListDiscriminator;
9+
import io.javaoperatorsdk.operator.api.reconciler.ResourceIDMatcherDiscriminator;
1210
import io.javaoperatorsdk.operator.api.reconciler.dependent.ReconcileResult;
1311
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.CRUDKubernetesDependentResource;
1412
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependent;
13+
import io.javaoperatorsdk.operator.processing.event.ResourceID;
1514

1615
@KubernetesDependent(labelSelector = "dependent = cm2",
1716
resourceDiscriminator = ConfigMapDependentResource2.CM2ResourceDiscriminator.class)
@@ -47,12 +46,9 @@ protected ConfigMap desired(OrderedManagedDependentCustomResource primary,
4746
}
4847

4948
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();
49+
extends ResourceIDMatcherDiscriminator<ConfigMap, OrderedManagedDependentCustomResource> {
50+
public CM2ResourceDiscriminator() {
51+
super(p -> new ResourceID(p.getMetadata().getName() + "2", p.getMetadata().getNamespace()));
5652
}
5753
}
5854

0 commit comments

Comments
 (0)