Skip to content

Commit 3e692e3

Browse files
authored
fix: informer config builder (#2062)
Signed-off-by: Attila Mészáros <[email protected]>
1 parent d58f9e1 commit 3e692e3

File tree

5 files changed

+100
-21
lines changed

5 files changed

+100
-21
lines changed

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

+16-11
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,21 @@
1313

1414
public class KubernetesDependentResourceConfig<R> {
1515

16-
private Set<String> namespaces = Constants.SAME_AS_CONTROLLER_NAMESPACES_SET;
17-
private String labelSelector = NO_VALUE_SET;
18-
private boolean namespacesWereConfigured = false;
16+
private Set<String> namespaces;
17+
private String labelSelector;
18+
private boolean namespacesWereConfigured;
1919
private ResourceDiscriminator<R, ?> resourceDiscriminator;
2020

21-
private OnAddFilter<R> onAddFilter;
21+
private final OnAddFilter<R> onAddFilter;
22+
private final OnUpdateFilter<R> onUpdateFilter;
23+
private final OnDeleteFilter<R> onDeleteFilter;
24+
private final GenericFilter<R> genericFilter;
2225

23-
private OnUpdateFilter<R> onUpdateFilter;
24-
25-
private OnDeleteFilter<R> onDeleteFilter;
26-
27-
private GenericFilter<R> genericFilter;
28-
29-
public KubernetesDependentResourceConfig() {}
26+
public KubernetesDependentResourceConfig() {
27+
this(Constants.SAME_AS_CONTROLLER_NAMESPACES_SET, NO_VALUE_SET, true,
28+
null, null,
29+
null, null, null);
30+
}
3031

3132
public KubernetesDependentResourceConfig(Set<String> namespaces, String labelSelector,
3233
boolean configuredNS, ResourceDiscriminator<R, ?> resourceDiscriminator,
@@ -43,11 +44,15 @@ public KubernetesDependentResourceConfig(Set<String> namespaces, String labelSel
4344
this.resourceDiscriminator = resourceDiscriminator;
4445
}
4546

47+
// use builder instead
48+
@Deprecated(forRemoval = true)
4649
public KubernetesDependentResourceConfig(Set<String> namespaces, String labelSelector) {
4750
this(namespaces, labelSelector, true, null, null, null,
4851
null, null);
4952
}
5053

54+
// use builder instead
55+
@Deprecated(forRemoval = true)
5156
public KubernetesDependentResourceConfig<R> setLabelSelector(String labelSelector) {
5257
this.labelSelector = labelSelector;
5358
return this;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package io.javaoperatorsdk.operator.processing.dependent.kubernetes;
2+
3+
import java.util.Set;
4+
5+
import io.javaoperatorsdk.operator.api.reconciler.Constants;
6+
import io.javaoperatorsdk.operator.api.reconciler.ResourceDiscriminator;
7+
import io.javaoperatorsdk.operator.processing.event.source.filter.GenericFilter;
8+
import io.javaoperatorsdk.operator.processing.event.source.filter.OnAddFilter;
9+
import io.javaoperatorsdk.operator.processing.event.source.filter.OnDeleteFilter;
10+
import io.javaoperatorsdk.operator.processing.event.source.filter.OnUpdateFilter;
11+
12+
public final class KubernetesDependentResourceConfigBuilder<R> {
13+
14+
private Set<String> namespaces = Constants.SAME_AS_CONTROLLER_NAMESPACES_SET;
15+
private String labelSelector;
16+
private ResourceDiscriminator<R, ?> resourceDiscriminator;
17+
private OnAddFilter<R> onAddFilter;
18+
private OnUpdateFilter<R> onUpdateFilter;
19+
private OnDeleteFilter<R> onDeleteFilter;
20+
private GenericFilter<R> genericFilter;
21+
22+
public KubernetesDependentResourceConfigBuilder() {}
23+
24+
public static <R> KubernetesDependentResourceConfigBuilder<R> aKubernetesDependentResourceConfig() {
25+
return new KubernetesDependentResourceConfigBuilder<>();
26+
}
27+
28+
public KubernetesDependentResourceConfigBuilder<R> withNamespaces(Set<String> namespaces) {
29+
this.namespaces = namespaces;
30+
return this;
31+
}
32+
33+
public KubernetesDependentResourceConfigBuilder<R> withLabelSelector(String labelSelector) {
34+
this.labelSelector = labelSelector;
35+
return this;
36+
}
37+
38+
public KubernetesDependentResourceConfigBuilder<R> withResourceDiscriminator(
39+
ResourceDiscriminator<R, ?> resourceDiscriminator) {
40+
this.resourceDiscriminator = resourceDiscriminator;
41+
return this;
42+
}
43+
44+
public KubernetesDependentResourceConfigBuilder<R> withOnAddFilter(OnAddFilter<R> onAddFilter) {
45+
this.onAddFilter = onAddFilter;
46+
return this;
47+
}
48+
49+
public KubernetesDependentResourceConfigBuilder<R> withOnUpdateFilter(
50+
OnUpdateFilter<R> onUpdateFilter) {
51+
this.onUpdateFilter = onUpdateFilter;
52+
return this;
53+
}
54+
55+
public KubernetesDependentResourceConfigBuilder<R> withOnDeleteFilter(
56+
OnDeleteFilter<R> onDeleteFilter) {
57+
this.onDeleteFilter = onDeleteFilter;
58+
return this;
59+
}
60+
61+
public KubernetesDependentResourceConfigBuilder<R> withGenericFilter(
62+
GenericFilter<R> genericFilter) {
63+
this.genericFilter = genericFilter;
64+
return this;
65+
}
66+
67+
public KubernetesDependentResourceConfig<R> build() {
68+
return new KubernetesDependentResourceConfig<>(namespaces, labelSelector, false,
69+
resourceDiscriminator, onAddFilter,
70+
onUpdateFilter, onDeleteFilter, genericFilter);
71+
}
72+
}

Diff for: operator-framework-core/src/test/java/io/javaoperatorsdk/operator/api/config/ControllerConfigurationOverriderTest.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependent;
2121
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentResource;
2222
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentResourceConfig;
23+
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentResourceConfigBuilder;
2324
import io.javaoperatorsdk.operator.processing.dependent.workflow.Condition;
2425

2526
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -327,7 +328,10 @@ void replaceNamedDependentResourceConfigShouldWork() {
327328
final var overridden = ControllerConfigurationOverrider.override(configuration)
328329
.replacingNamedDependentResourceConfig(
329330
DependentResource.defaultNameFor(ReadOnlyDependent.class),
330-
new KubernetesDependentResourceConfig(Set.of(overriddenNS), labelSelector))
331+
new KubernetesDependentResourceConfigBuilder<>()
332+
.withNamespaces(Set.of(overriddenNS))
333+
.withLabelSelector(labelSelector)
334+
.build())
331335
.build();
332336
dependents = overridden.getDependentResources();
333337
dependentSpec = dependents.stream().filter(dr -> dr.getName().equals(dependentResourceName))

Diff for: sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageDependentsWorkflowReconciler.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
import io.javaoperatorsdk.operator.api.reconciler.Reconciler;
1818
import io.javaoperatorsdk.operator.api.reconciler.UpdateControl;
1919
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentResource;
20-
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentResourceConfig;
20+
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentResourceConfigBuilder;
2121
import io.javaoperatorsdk.operator.processing.dependent.workflow.Workflow;
2222
import io.javaoperatorsdk.operator.processing.dependent.workflow.WorkflowBuilder;
2323
import io.javaoperatorsdk.operator.processing.event.source.EventSource;
@@ -91,8 +91,8 @@ private void initDependentResources(KubernetesClient client) {
9191

9292
Arrays.asList(configMapDR, deploymentDR, serviceDR, ingressDR).forEach(dr -> {
9393
dr.setKubernetesClient(client);
94-
dr.configureWith(new KubernetesDependentResourceConfig()
95-
.setLabelSelector(DEPENDENT_RESOURCE_LABEL_SELECTOR));
94+
dr.configureWith(new KubernetesDependentResourceConfigBuilder()
95+
.withLabelSelector(DEPENDENT_RESOURCE_LABEL_SELECTOR).build());
9696
});
9797
}
9898

Diff for: sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageStandaloneDependentsReconciler.java

+4-6
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
import io.fabric8.kubernetes.client.KubernetesClient;
1414
import io.javaoperatorsdk.operator.api.reconciler.*;
1515
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentResource;
16-
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentResourceConfig;
16+
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentResourceConfigBuilder;
1717
import io.javaoperatorsdk.operator.processing.event.source.EventSource;
1818
import io.javaoperatorsdk.operator.sample.customresource.WebPage;
1919
import io.javaoperatorsdk.operator.sample.dependentresource.ConfigMapDependentResource;
@@ -79,21 +79,19 @@ public ErrorStatusUpdateControl<WebPage> updateErrorStatus(
7979
return handleError(resource, e);
8080
}
8181

82-
@SuppressWarnings("unchecked")
82+
@SuppressWarnings({"unchecked", "rawtypes"})
8383
private void createDependentResources(KubernetesClient client) {
8484
this.configMapDR = new ConfigMapDependentResource();
8585
this.deploymentDR = new DeploymentDependentResource();
8686
this.serviceDR = new ServiceDependentResource();
8787
this.ingressDR = new IngressDependentResource();
8888

89-
9089
Arrays.asList(configMapDR, deploymentDR, serviceDR, ingressDR).forEach(dr -> {
9190
dr.setKubernetesClient(client);
92-
dr.configureWith(new KubernetesDependentResourceConfig()
93-
.setLabelSelector(SELECTOR + "=true"));
91+
dr.configureWith(new KubernetesDependentResourceConfigBuilder()
92+
.withLabelSelector(SELECTOR + "=true").build());
9493
});
9594
}
9695

9796

98-
9997
}

0 commit comments

Comments
 (0)