Skip to content

Commit 50aaa39

Browse files
committed
annotation controller config
1 parent 461a032 commit 50aaa39

File tree

3 files changed

+19
-1
lines changed

3 files changed

+19
-1
lines changed

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentResource;
2626
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentResourceConfig;
2727
import io.javaoperatorsdk.operator.processing.dependent.workflow.Condition;
28+
import io.javaoperatorsdk.operator.processing.event.rate.PeriodRateLimiter;
29+
import io.javaoperatorsdk.operator.processing.event.rate.RateLimiter;
2830
import io.javaoperatorsdk.operator.processing.event.source.controller.ResourceEventFilter;
2931
import io.javaoperatorsdk.operator.processing.event.source.controller.ResourceEventFilters;
3032

@@ -144,6 +146,17 @@ public Optional<Duration> reconciliationMaxInterval() {
144146
}
145147
}
146148

149+
@Override
150+
public RateLimiter getRateLimiter() {
151+
if (annotation.rateLimiter() != null) {
152+
return new PeriodRateLimiter(Duration.of(annotation.rateLimiter().refreshPeriod(),
153+
annotation.rateLimiter().refreshPeriodTimeUnit().toChronoUnit()),
154+
annotation.rateLimiter().limitForPeriod());
155+
} else {
156+
return io.javaoperatorsdk.operator.api.config.ControllerConfiguration.super.getRateLimiter();
157+
}
158+
}
159+
147160
public static <T> T valueOrDefault(
148161
ControllerConfiguration controllerConfiguration,
149162
Function<ControllerConfiguration, T> mapper,

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import java.lang.annotation.Target;
77

88
import io.javaoperatorsdk.operator.api.reconciler.dependent.Dependent;
9+
import io.javaoperatorsdk.operator.processing.event.rate.PeriodRateLimiter;
910
import io.javaoperatorsdk.operator.processing.event.source.controller.ResourceEventFilter;
1011

1112
@Retention(RetentionPolicy.RUNTIME)
@@ -69,6 +70,10 @@
6970
ReconciliationMaxInterval reconciliationMaxInterval() default @ReconciliationMaxInterval(
7071
interval = 10);
7172

73+
74+
RateLimiter rateLimiter() default @RateLimiter(limitForPeriod = PeriodRateLimiter.NO_LIMIT_PERIOD,
75+
refreshPeriod = 1);
76+
7277
/**
7378
* Optional list of {@link Dependent} configurations which associate a resource type to a
7479
* {@link io.javaoperatorsdk.operator.api.reconciler.dependent.DependentResource} implementation

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/RateLimit.java renamed to operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/RateLimiter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
@Retention(RetentionPolicy.RUNTIME)
1010
@Target({ElementType.TYPE})
11-
public @interface RateLimit {
11+
public @interface RateLimiter {
1212

1313
int limitForPeriod();
1414

0 commit comments

Comments
 (0)