Skip to content

Commit 72ebce3

Browse files
committed
refactor: simplify by removing discriminator factory
1 parent cabe07d commit 72ebce3

File tree

5 files changed

+30
-46
lines changed

5 files changed

+30
-46
lines changed

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

+2-3
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public abstract class AbstractDependentResource<R, P extends HasMetadata>
2828
protected Updater<R, P> updater;
2929
protected BulkDependentResource<R, P> bulkDependentResource;
3030

31-
protected List<ResourceDiscriminator<R, P>> resourceDiscriminator = new ArrayList<>(1);
31+
private final List<ResourceDiscriminator<R, P>> resourceDiscriminator = new ArrayList<>(1);
3232

3333
@SuppressWarnings("unchecked")
3434
public AbstractDependentResource() {
@@ -74,8 +74,7 @@ private void adjustDiscriminators(int count) {
7474
}
7575
if (resourceDiscriminator.size() < count) {
7676
for (int i = resourceDiscriminator.size(); i < count; i++) {
77-
resourceDiscriminator.add(bulkDependentResource.bulkResourceDiscriminatorFactory()
78-
.createResourceDiscriminator(i));
77+
resourceDiscriminator.add(bulkDependentResource.getResourceDiscriminator(i));
7978
}
8079
}
8180
if (resourceDiscriminator.size() > count) {

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

+2-5
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import io.fabric8.kubernetes.api.model.HasMetadata;
44
import io.javaoperatorsdk.operator.api.reconciler.Context;
5+
import io.javaoperatorsdk.operator.api.reconciler.ResourceDiscriminator;
56
import io.javaoperatorsdk.operator.api.reconciler.dependent.Deleter;
67

78
/**
@@ -29,10 +30,6 @@ public interface BulkDependentResource<R, P extends HasMetadata> extends Creator
2930
*/
3031
void deleteBulkResourceWithIndex(P primary, R resource, int i, Context<P> context);
3132

32-
/**
33-
* @return a discriminator factor that helps to create a discriminator for a certain resource with
34-
* an index
35-
*/
36-
BulkResourceDiscriminatorFactory<R, P> bulkResourceDiscriminatorFactory();
33+
ResourceDiscriminator<R, P> getResourceDiscriminator(int index);
3734

3835
}

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

-10
This file was deleted.

operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/bulkdependent/ConfigMapDeleterBulkDependentResource.java

+15-17
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,11 @@
77
import io.fabric8.kubernetes.api.model.ConfigMap;
88
import io.fabric8.kubernetes.api.model.ObjectMetaBuilder;
99
import io.javaoperatorsdk.operator.api.reconciler.Context;
10+
import io.javaoperatorsdk.operator.api.reconciler.ResourceDiscriminator;
1011
import io.javaoperatorsdk.operator.api.reconciler.dependent.Deleter;
1112
import io.javaoperatorsdk.operator.processing.dependent.BulkDependentResource;
12-
import io.javaoperatorsdk.operator.processing.dependent.BulkResourceDiscriminatorFactory;
1313
import io.javaoperatorsdk.operator.processing.dependent.Creator;
1414
import io.javaoperatorsdk.operator.processing.dependent.Updater;
15-
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.CRUDKubernetesDependentResource;
1615
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentResource;
1716

1817
/**
@@ -29,19 +28,6 @@ public class ConfigMapDeleterBulkDependentResource
2928
public static final String LABEL_KEY = "bulk";
3029
public static final String LABEL_VALUE = "true";
3130
public static final String ADDITIONAL_DATA_KEY = "additionalData";
32-
private BulkResourceDiscriminatorFactory<ConfigMap, BulkDependentTestCustomResource> factory =
33-
index -> (resource, primary, context) -> {
34-
var resources = context.getSecondaryResources(resource).stream()
35-
.filter(r -> r.getMetadata().getName().endsWith("-" + index))
36-
.collect(Collectors.toList());
37-
if (resources.isEmpty()) {
38-
return Optional.empty();
39-
} else if (resources.size() > 1) {
40-
throw new IllegalStateException("More than one resource found for index:" + index);
41-
} else {
42-
return Optional.of(resources.get(0));
43-
}
44-
};
4531

4632
public ConfigMapDeleterBulkDependentResource() {
4733
super(ConfigMap.class);
@@ -68,7 +54,19 @@ public int count(BulkDependentTestCustomResource primary,
6854
}
6955

7056
@Override
71-
public BulkResourceDiscriminatorFactory<ConfigMap, BulkDependentTestCustomResource> bulkResourceDiscriminatorFactory() {
72-
return factory;
57+
public ResourceDiscriminator<ConfigMap, BulkDependentTestCustomResource> getResourceDiscriminator(
58+
int index) {
59+
return (resource, primary, context) -> {
60+
var resources = context.getSecondaryResources(resource).stream()
61+
.filter(r -> r.getMetadata().getName().endsWith("-" + index))
62+
.collect(Collectors.toList());
63+
if (resources.isEmpty()) {
64+
return Optional.empty();
65+
} else if (resources.size() > 1) {
66+
throw new IllegalStateException("More than one resource found for index:" + index);
67+
} else {
68+
return Optional.of(resources.get(0));
69+
}
70+
};
7371
}
7472
}

operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/bulkdependent/external/ExternalBulkDependentResource.java

+11-11
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import java.util.stream.Collectors;
55

66
import io.javaoperatorsdk.operator.api.reconciler.Context;
7+
import io.javaoperatorsdk.operator.api.reconciler.ResourceDiscriminator;
78
import io.javaoperatorsdk.operator.processing.dependent.*;
89
import io.javaoperatorsdk.operator.processing.dependent.external.PollingDependentResource;
910
import io.javaoperatorsdk.operator.processing.event.ResourceID;
@@ -16,7 +17,7 @@ public class ExternalBulkDependentResource
1617

1718
public static final String EXTERNAL_RESOURCE_NAME_DELIMITER = "#";
1819

19-
private ExternalServiceMock externalServiceMock = ExternalServiceMock.getInstance();
20+
private final ExternalServiceMock externalServiceMock = ExternalServiceMock.getInstance();
2021

2122
public ExternalBulkDependentResource() {
2223
super(ExternalResource.class, ExternalResource::getId);
@@ -26,7 +27,7 @@ public ExternalBulkDependentResource() {
2627
public Map<ResourceID, Set<ExternalResource>> fetchResources() {
2728
Map<ResourceID, Set<ExternalResource>> result = new HashMap<>();
2829
var resources = externalServiceMock.listResources();
29-
resources.stream().forEach(er -> {
30+
resources.forEach(er -> {
3031
var resourceID = toResourceID(er);
3132
result.putIfAbsent(resourceID, new HashSet<>());
3233
result.get(resourceID).add(er);
@@ -52,15 +53,6 @@ public void deleteBulkResourceWithIndex(BulkDependentTestCustomResource primary,
5253
externalServiceMock.delete(resource.getId());
5354
}
5455

55-
@Override
56-
public BulkResourceDiscriminatorFactory<ExternalResource, BulkDependentTestCustomResource> bulkResourceDiscriminatorFactory() {
57-
return index -> (resource, primary, context) -> {
58-
return context.getSecondaryResources(resource).stream()
59-
.filter(r -> r.getId().endsWith(EXTERNAL_RESOURCE_NAME_DELIMITER + index))
60-
.collect(Collectors.toList()).stream().findFirst();
61-
};
62-
}
63-
6456
@Override
6557
public ExternalResource desired(BulkDependentTestCustomResource primary, int index,
6658
Context<BulkDependentTestCustomResource> context) {
@@ -98,4 +90,12 @@ private ResourceID toResourceID(ExternalResource externalResource) {
9890
var parts = externalResource.getId().split(EXTERNAL_RESOURCE_NAME_DELIMITER);
9991
return new ResourceID(parts[0], parts[1]);
10092
}
93+
94+
@Override
95+
public ResourceDiscriminator<ExternalResource, BulkDependentTestCustomResource> getResourceDiscriminator(
96+
int index) {
97+
return (resource, primary, context) -> context.getSecondaryResources(resource).stream()
98+
.filter(r -> r.getId().endsWith(EXTERNAL_RESOURCE_NAME_DELIMITER + index))
99+
.collect(Collectors.toList()).stream().findFirst();
100+
}
101101
}

0 commit comments

Comments
 (0)