Skip to content

Commit 8cca142

Browse files
committed
feat: encapsulate Kubernetes dependent configuration
This will help for passing it around as one object instead of passing the informer configuration part and the owned status separately.
1 parent d7bb14c commit 8cca142

File tree

4 files changed

+48
-8
lines changed

4 files changed

+48
-8
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package io.javaoperatorsdk.operator.api.reconciler.dependent;
2+
3+
import java.util.Set;
4+
5+
import io.fabric8.kubernetes.api.model.HasMetadata;
6+
import io.javaoperatorsdk.operator.api.config.ConfigurationService;
7+
import io.javaoperatorsdk.operator.processing.event.source.AssociatedSecondaryResourceIdentifier;
8+
import io.javaoperatorsdk.operator.processing.event.source.PrimaryResourcesRetriever;
9+
import io.javaoperatorsdk.operator.processing.event.source.informer.InformerConfiguration;
10+
11+
public class KubernetesDependentResourceConfiguration<R extends HasMetadata, P extends HasMetadata>
12+
extends InformerConfiguration<R, P> {
13+
14+
private final boolean owned;
15+
16+
protected KubernetesDependentResourceConfiguration(
17+
ConfigurationService service,
18+
String labelSelector, Class<R> resourceClass,
19+
PrimaryResourcesRetriever<R> secondaryToPrimaryResourcesIdSet,
20+
AssociatedSecondaryResourceIdentifier<P> associatedWith,
21+
boolean skipUpdateEventPropagationIfNoChange, Set<String> namespaces, boolean owned) {
22+
super(service, labelSelector, resourceClass, secondaryToPrimaryResourcesIdSet, associatedWith,
23+
skipUpdateEventPropagationIfNoChange, namespaces);
24+
this.owned = owned;
25+
}
26+
27+
public static <R extends HasMetadata, P extends HasMetadata> KubernetesDependentResourceConfiguration<R, P> from(
28+
InformerConfiguration<R, P> cfg, boolean owned) {
29+
return new KubernetesDependentResourceConfiguration<>(cfg.getConfigurationService(),
30+
cfg.getLabelSelector(), cfg.getResourceClass(), cfg.getPrimaryResourcesRetriever(),
31+
cfg.getAssociatedResourceIdentifier(), cfg.isSkipUpdateEventPropagationIfNoChange(),
32+
cfg.getNamespaces(), owned);
33+
}
34+
35+
public boolean isOwned() {
36+
return owned;
37+
}
38+
}

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,13 @@
1313

1414
public class KubernetesDependentResourceController<R extends HasMetadata, P extends HasMetadata>
1515
extends DependentResourceController<R, P> {
16-
private final InformerConfiguration<R, P> configuration;
17-
private final boolean owned;
16+
private final KubernetesDependentResourceConfiguration<R, P> configuration;
1817
private KubernetesClient client;
1918
private InformerEventSource<R, P> informer;
2019

2120

2221
public KubernetesDependentResourceController(DependentResource<R, P> delegate,
23-
InformerConfiguration<R, P> configuration, boolean owned) {
22+
KubernetesDependentResourceConfiguration<R, P> configuration) {
2423
super(delegate);
2524
// todo: check if we can validate that types actually match properly
2625
final var associatedPrimaries =
@@ -32,11 +31,12 @@ public KubernetesDependentResourceController(DependentResource<R, P> delegate,
3231
? (AssociatedSecondaryResourceIdentifier<P>) delegate
3332
: configuration.getAssociatedResourceIdentifier();
3433

35-
this.configuration = InformerConfiguration.from(configuration)
34+
final var augmented = InformerConfiguration.from(configuration)
3635
.withPrimaryResourcesRetriever(associatedPrimaries)
3736
.withAssociatedSecondaryResourceIdentifier(associatedSecondary)
3837
.build();
39-
this.owned = owned;
38+
this.configuration =
39+
KubernetesDependentResourceConfiguration.from(augmented, configuration.isOwned());
4040
}
4141

4242
@Override
@@ -69,6 +69,6 @@ public R getFor(P primary, Context context) {
6969
}
7070

7171
public boolean owned() {
72-
return owned;
72+
return configuration.isOwned();
7373
}
7474
}

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public class InformerConfiguration<R extends HasMetadata, P extends HasMetadata>
1919
private final AssociatedSecondaryResourceIdentifier<P> associatedWith;
2020
private final boolean skipUpdateEventPropagationIfNoChange;
2121

22-
private InformerConfiguration(ConfigurationService service, String labelSelector,
22+
protected InformerConfiguration(ConfigurationService service, String labelSelector,
2323
Class<R> resourceClass,
2424
PrimaryResourcesRetriever<R> secondaryToPrimaryResourcesIdSet,
2525
AssociatedSecondaryResourceIdentifier<P> associatedWith,

operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/AnnotationConfiguration.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import io.javaoperatorsdk.operator.api.config.KubernetesDependent;
1616
import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration;
1717
import io.javaoperatorsdk.operator.api.reconciler.Reconciler;
18+
import io.javaoperatorsdk.operator.api.reconciler.dependent.KubernetesDependentResourceConfiguration;
1819
import io.javaoperatorsdk.operator.api.reconciler.dependent.KubernetesDependentResourceController;
1920
import io.javaoperatorsdk.operator.processing.event.source.controller.ResourceEventFilter;
2021
import io.javaoperatorsdk.operator.processing.event.source.controller.ResourceEventFilters;
@@ -153,7 +154,8 @@ public List<DependentResource> getDependentResources() {
153154
.skippingEventPropagationIfUnchanged(skipIfUnchanged)
154155
.withNamespaces(namespaces)
155156
.build();
156-
dependent = new KubernetesDependentResourceController(dependent, configuration, owned);
157+
dependent = new KubernetesDependentResourceController(dependent,
158+
KubernetesDependentResourceConfiguration.from(configuration, owned));
157159
}
158160

159161
dependents.add(dependent);

0 commit comments

Comments
 (0)