Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 1af08aa

Browse files
metacosmcsviri
andcommittedNov 5, 2024
refactor: clean up ResourceConfiguration & rename to Informable (#2486)
--------- Signed-off-by: Attila Mészáros <[email protected]> Signed-off-by: Chris Laprun <[email protected]> Signed-off-by: Attila Mészáros <[email protected]> Co-authored-by: Attila Mészáros <[email protected]> Co-authored-by: Attila Mészáros <[email protected]>
1 parent 2faadb5 commit 1af08aa

32 files changed

+417
-471
lines changed
 

‎operator-framework-core/src/main/java/io/javaoperatorsdk/operator/Operator.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -213,8 +213,9 @@ public <P extends HasMetadata> RegisteredController<P> register(Reconciler<P> re
213213

214214
controllerManager.add(controller);
215215

216-
final var watchedNS = configuration.watchAllNamespaces() ? "[all namespaces]"
217-
: configuration.getEffectiveNamespaces();
216+
final var informerConfig = configuration.getInformerConfig();
217+
final var watchedNS = informerConfig.watchAllNamespaces() ? "[all namespaces]"
218+
: informerConfig.getEffectiveNamespaces(configuration);
218219

219220
log.info(
220221
"Registered reconciler: '{}' for resource: '{}' for namespace(s): {}",

‎operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/BaseConfigurationService.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ private <P extends HasMetadata> ResolvedControllerConfiguration<P> controllerCon
280280
.buildForController();
281281

282282
return new ResolvedControllerConfiguration<P>(
283-
resourceClass, name, generationAware,
283+
name, generationAware,
284284
associatedReconcilerClass, retry, rateLimiter,
285285
ResolvedControllerConfiguration.getMaxReconciliationInterval(interval, timeUnit),
286286
valueOrDefaultFromAnnotation(annotation,

‎operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationService.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,7 @@ default ExecutorServiceManager getExecutorServiceManager() {
367367
* SSA based create/update can be still used with the legacy matching, just overriding the match
368368
* method of Kubernetes Dependent Resource.
369369
*
370-
* @return if SSA should be used for dependent resources
370+
* @return {@code true} if SSA should be used for dependent resources, {@code false} otherwise
371371
* @since 4.4.0
372372
*/
373373
default boolean ssaBasedCreateUpdateMatchForDependentResources() {
@@ -455,6 +455,8 @@ default Set<Class<? extends HasMetadata>> defaultNonSSAResource() {
455455
*
456456
* @return if special annotation should be used for dependent resource to filter events
457457
* @since 4.5.0
458+
*
459+
* @return if special annotation should be used for dependent resource to filter events
458460
*/
459461
default boolean previousAnnotationForDependentResourcesEventFiltering() {
460462
return true;
@@ -471,6 +473,8 @@ default boolean previousAnnotationForDependentResourcesEventFiltering() {
471473
*
472474
* @return if resource version should be parsed (as integer)
473475
* @since 4.5.0
476+
*
477+
* @return if resource version should be parsed (as integer)
474478
*/
475479
default boolean parseResourceVersionsForEventFilteringAndCaching() {
476480
return false;

‎operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ControllerConfiguration.java

+2-12
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
import io.javaoperatorsdk.operator.processing.retry.GenericRetry;
1515
import io.javaoperatorsdk.operator.processing.retry.Retry;
1616

17-
public interface ControllerConfiguration<P extends HasMetadata> extends ResourceConfiguration<P> {
17+
public interface ControllerConfiguration<P extends HasMetadata> extends Informable<P> {
1818

1919
@SuppressWarnings("rawtypes")
2020
RateLimiter DEFAULT_RATE_LIMITER = LinearRateLimiter.deactivatedRateLimiter();
@@ -74,19 +74,9 @@ default Optional<Duration> maxReconciliationInterval() {
7474

7575
ConfigurationService getConfigurationService();
7676

77-
@SuppressWarnings("unchecked")
78-
@Override
79-
default Class<P> getResourceClass() {
80-
// note that this implementation at the end not used within the boundaries of the core
81-
// framework, should be removed in the future, (and marked as an API changed, or behavior
82-
// change)
83-
return (Class<P>) Utils.getFirstTypeArgumentFromSuperClassOrInterface(getClass(),
84-
ControllerConfiguration.class);
85-
}
86-
8777
@SuppressWarnings("unused")
8878
default Set<String> getEffectiveNamespaces() {
89-
return ResourceConfiguration.super.getEffectiveNamespaces(this);
79+
return getInformerConfig().getEffectiveNamespaces(this);
9080
}
9181

9282
/**

‎operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ControllerConfigurationOverrider.java

+3-10
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,8 @@ public class ControllerConfigurationOverrider<R extends HasMetadata> {
3535
private ControllerConfigurationOverrider(ControllerConfiguration<R> original) {
3636
this.finalizer = original.getFinalizerName();
3737
this.generationAware = original.isGenerationAware();
38-
this.config = InformerConfiguration.builder(original.getResourceClass())
39-
.withName(name)
40-
.withNamespaces(original.getNamespaces())
41-
.withLabelSelector(original.getLabelSelector())
42-
.withOnAddFilter(original.onAddFilter().orElse(null))
43-
.withOnUpdateFilter(original.onUpdateFilter().orElse(null))
44-
.withGenericFilter(original.genericFilter().orElse(null))
45-
.withInformerListLimit(original.getInformerListLimit().orElse(null))
46-
.withItemStore(original.getItemStore().orElse(null));
38+
final var informerConfig = original.getInformerConfig();
39+
this.config = InformerConfiguration.builder(informerConfig);
4740
this.retry = original.getRetry();
4841
this.reconciliationMaxInterval = original.maxReconciliationInterval().orElse(null);
4942
this.original = original;
@@ -194,7 +187,7 @@ public ControllerConfigurationOverrider<R> replacingNamedDependentResourceConfig
194187
}
195188

196189
public ControllerConfiguration<R> build() {
197-
return new ResolvedControllerConfiguration<>(original.getResourceClass(),
190+
return new ResolvedControllerConfiguration<>(
198191
name,
199192
generationAware, original.getAssociatedReconcilerClassName(), retry, rateLimiter,
200193
reconciliationMaxInterval,

‎operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/DefaultResourceConfiguration.java

-41
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package io.javaoperatorsdk.operator.api.config;
2+
3+
4+
import io.fabric8.kubernetes.api.model.HasMetadata;
5+
import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration;
6+
7+
public interface Informable<R extends HasMetadata> {
8+
9+
default String getResourceTypeName() {
10+
return getInformerConfig().getResourceTypeName();
11+
}
12+
13+
InformerConfiguration<R> getInformerConfig();
14+
15+
default Class<R> getResourceClass() {
16+
return getInformerConfig().getResourceClass();
17+
}
18+
}

‎operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ResolvedControllerConfiguration.java

+13-8
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616

1717
@SuppressWarnings("rawtypes")
1818
public class ResolvedControllerConfiguration<P extends HasMetadata>
19-
extends DefaultResourceConfiguration<P>
2019
implements io.javaoperatorsdk.operator.api.config.ControllerConfiguration<P> {
2120

21+
private final InformerConfiguration<P> informerConfig;
2222
private final String name;
2323
private final boolean generationAware;
2424
private final String associatedReconcilerClassName;
@@ -31,8 +31,8 @@ public class ResolvedControllerConfiguration<P extends HasMetadata>
3131
private final String fieldManager;
3232
private WorkflowSpec workflowSpec;
3333

34-
public ResolvedControllerConfiguration(Class<P> resourceClass, ControllerConfiguration<P> other) {
35-
this(resourceClass, other.getName(), other.isGenerationAware(),
34+
public ResolvedControllerConfiguration(ControllerConfiguration<P> other) {
35+
this(other.getName(), other.isGenerationAware(),
3636
other.getAssociatedReconcilerClassName(), other.getRetry(), other.getRateLimiter(),
3737
other.maxReconciliationInterval().orElse(null),
3838
other.getFinalizerName(), Collections.emptyMap(),
@@ -42,7 +42,7 @@ public ResolvedControllerConfiguration(Class<P> resourceClass, ControllerConfigu
4242
other.getWorkflowSpec().orElse(null));
4343
}
4444

45-
public ResolvedControllerConfiguration(Class<P> resourceClass, String name,
45+
public ResolvedControllerConfiguration(String name,
4646
boolean generationAware, String associatedReconcilerClassName, Retry retry,
4747
RateLimiter rateLimiter, Duration maxReconciliationInterval,
4848
String finalizer,
@@ -51,19 +51,19 @@ public ResolvedControllerConfiguration(Class<P> resourceClass, String name,
5151
ConfigurationService configurationService,
5252
InformerConfiguration<P> informerConfig,
5353
WorkflowSpec workflowSpec) {
54-
this(resourceClass, name, generationAware, associatedReconcilerClassName, retry, rateLimiter,
54+
this(name, generationAware, associatedReconcilerClassName, retry, rateLimiter,
5555
maxReconciliationInterval, finalizer, configurations, fieldManager,
5656
configurationService, informerConfig);
5757
setWorkflowSpec(workflowSpec);
5858
}
5959

60-
protected ResolvedControllerConfiguration(Class<P> resourceClass, String name,
60+
protected ResolvedControllerConfiguration(String name,
6161
boolean generationAware, String associatedReconcilerClassName, Retry retry,
6262
RateLimiter rateLimiter, Duration maxReconciliationInterval, String finalizer,
6363
Map<DependentResourceSpec, Object> configurations,
6464
String fieldManager,
6565
ConfigurationService configurationService, InformerConfiguration<P> informerConfig) {
66-
super(resourceClass, informerConfig);
66+
this.informerConfig = informerConfig;
6767
this.configurationService = configurationService;
6868
this.name = ControllerConfiguration.ensureValidName(name, associatedReconcilerClassName);
6969
this.generationAware = generationAware;
@@ -79,11 +79,16 @@ protected ResolvedControllerConfiguration(Class<P> resourceClass, String name,
7979

8080
protected ResolvedControllerConfiguration(Class<P> resourceClass, String name,
8181
Class<? extends Reconciler> reconcilerClas, ConfigurationService configurationService) {
82-
this(resourceClass, name, false, getAssociatedReconcilerClassName(reconcilerClas), null, null,
82+
this(name, false, getAssociatedReconcilerClassName(reconcilerClas), null, null,
8383
null, null, null, null, configurationService,
8484
InformerConfiguration.builder(resourceClass).buildForController());
8585
}
8686

87+
@Override
88+
public InformerConfiguration<P> getInformerConfig() {
89+
return informerConfig;
90+
}
91+
8792
public static Duration getMaxReconciliationInterval(long interval, TimeUnit timeUnit) {
8893
return interval > 0 ? Duration.of(interval, timeUnit.toChronoUnit()) : null;
8994
}

‎operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ResourceConfiguration.java

-161
This file was deleted.

0 commit comments

Comments
 (0)
Please sign in to comment.