Skip to content

Commit 384585e

Browse files
committed
feat: add missing fields on DependentResourceConfiguration
1 parent d738226 commit 384585e

File tree

2 files changed

+49
-17
lines changed

2 files changed

+49
-17
lines changed

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

+27
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
package io.javaoperatorsdk.operator.api.reconciler.dependent;
22

3+
import java.util.Set;
4+
import java.util.function.Function;
5+
36
import io.fabric8.kubernetes.api.model.HasMetadata;
7+
import io.javaoperatorsdk.operator.processing.event.ResourceID;
48
import io.javaoperatorsdk.operator.processing.event.source.ResourceCache;
59
import io.javaoperatorsdk.operator.processing.event.source.ResourceEventFilter;
610

@@ -10,6 +14,7 @@
1014
boolean CREATABLE_DEFAULT = true;
1115
boolean UPDATABLE_DEFAULT = false;
1216
boolean OWNED_DEFAULT = true;
17+
boolean SKIP_UPDATE_DEFAULT = true;
1318

1419
boolean creatable() default CREATABLE_DEFAULT;
1520

@@ -25,6 +30,12 @@
2530

2631
Class<? extends Fetcher> fetcher() default DEFAULT_FETCHER.class;
2732

33+
Class<? extends Function<? extends HasMetadata, Set<ResourceID>>> associatedPrimariesMapper() default DEFAULT_PRIMARIES_MAPPER.class;
34+
35+
Class<? extends Function<? extends HasMetadata, ? extends HasMetadata>> associatedSecondaryMapper() default DEFAULT_SECONDARY_MAPPER.class;
36+
37+
boolean skipUpdateIfUnchanged() default SKIP_UPDATE_DEFAULT;
38+
2839
/**
2940
* Specified which namespaces this Controller monitors for custom resources events. If no
3041
* namespace is specified then the controller will monitor all namespaces by default.
@@ -75,4 +86,20 @@ public HasMetadata fetchFor(HasMetadata owner, ResourceCache cache) {
7586
return null;
7687
}
7788
}
89+
90+
final class DEFAULT_PRIMARIES_MAPPER implements Function<HasMetadata, Set<ResourceID>> {
91+
92+
@Override
93+
public Set<ResourceID> apply(HasMetadata hasMetadata) {
94+
return null;
95+
}
96+
}
97+
98+
final class DEFAULT_SECONDARY_MAPPER implements Function<HasMetadata, HasMetadata> {
99+
100+
@Override
101+
public HasMetadata apply(HasMetadata hasMetadata) {
102+
return null;
103+
}
104+
}
78105
}

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

+22-17
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616
import io.javaoperatorsdk.operator.api.reconciler.Reconciler;
1717
import io.javaoperatorsdk.operator.api.reconciler.dependent.DependentResource;
1818
import io.javaoperatorsdk.operator.api.reconciler.dependent.DependentResourceConfiguration;
19+
import io.javaoperatorsdk.operator.api.reconciler.dependent.DependentResourceConfiguration.DEFAULT_PRIMARIES_MAPPER;
20+
import io.javaoperatorsdk.operator.api.reconciler.dependent.DependentResourceConfiguration.DEFAULT_SECONDARY_MAPPER;
21+
import io.javaoperatorsdk.operator.processing.event.ResourceID;
1922
import io.javaoperatorsdk.operator.processing.event.source.ResourceEventFilter;
2023
import io.javaoperatorsdk.operator.processing.event.source.ResourceEventFilters;
2124

@@ -117,30 +120,32 @@ public List<? extends DependentResource> getDependentResources() {
117120
if (dependentConfigs.length > 0) {
118121
final List<DependentResource> result = new ArrayList<>(dependentConfigs.length);
119122
for (DependentResourceConfiguration dependentConfig : dependentConfigs) {
120-
final var creatable = valueOrDefault(dependentConfig,
121-
DependentResourceConfiguration::creatable,
122-
DependentResourceConfiguration.CREATABLE_DEFAULT);
123-
final var updatable = valueOrDefault(dependentConfig,
124-
DependentResourceConfiguration::updatable,
125-
DependentResourceConfiguration.UPDATABLE_DEFAULT);
126-
final var owned = valueOrDefault(dependentConfig,
127-
DependentResourceConfiguration::owned,
128-
DependentResourceConfiguration.OWNED_DEFAULT);
129-
130-
final var resourceType =
131-
valueOrDefault(dependentConfig, DependentResourceConfiguration::resourceType, null);
123+
final var creatable = dependentConfig.creatable();
124+
final var updatable = dependentConfig.updatable();
125+
final var owned = dependentConfig.owned();
126+
127+
final var resourceType = dependentConfig.resourceType();
132128
final var crdName = CustomResource.getCRDName(resourceType);
133129
final var namespaces = Set.of(
134130
valueOrDefault(dependentConfig, DependentResourceConfiguration::namespaces,
135131
new String[] {}));
136-
final var labelSelector =
137-
valueOrDefault(dependentConfig, DependentResourceConfiguration::labelSelector, "");
132+
final var labelSelector = dependentConfig.labelSelector();
133+
134+
final Function<? extends HasMetadata, Set<ResourceID>> primariesMapper =
135+
valueIfPresentOrNull(
136+
dependentConfig, DependentResourceConfiguration::associatedPrimariesMapper,
137+
DEFAULT_PRIMARIES_MAPPER.class);
138+
final Function<? extends HasMetadata, ? extends HasMetadata> secondaryMapper =
139+
valueIfPresentOrNull(
140+
dependentConfig, DependentResourceConfiguration::associatedSecondaryMapper,
141+
DEFAULT_SECONDARY_MAPPER.class);
142+
138143

139144
final DefaultDependentResourceConfiguration<? extends HasMetadata> configuration =
140-
new DefaultDependentResourceConfiguration<>(
145+
new DefaultDependentResourceConfiguration(
141146
crdName, resourceType, namespaces, labelSelector, service, creatable, updatable,
142-
owned,
143-
null, null, true);
147+
owned, primariesMapper, secondaryMapper,
148+
dependentConfig.skipUpdateIfUnchanged());
144149

145150
final var builder =
146151
valueIfPresentOrNull(dependentConfig, DependentResourceConfiguration::builder,

0 commit comments

Comments
 (0)