From 370e62586277ce7922597e1a54bdaf48b7e303ed Mon Sep 17 00:00:00 2001 From: csviri Date: Tue, 22 Aug 2023 17:31:00 +0200 Subject: [PATCH 1/2] improve: add test for startup with no right and no stop config --- .../operator/InformerErrorHandlerStartIT.java | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 operator-framework/src/test/java/io/javaoperatorsdk/operator/InformerErrorHandlerStartIT.java diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/InformerErrorHandlerStartIT.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/InformerErrorHandlerStartIT.java new file mode 100644 index 0000000000..12aa24c1c4 --- /dev/null +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/InformerErrorHandlerStartIT.java @@ -0,0 +1,45 @@ +package io.javaoperatorsdk.operator; + +import java.time.Duration; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.Timeout; + +import io.fabric8.kubernetes.api.model.ConfigMap; +import io.fabric8.kubernetes.client.ConfigBuilder; +import io.fabric8.kubernetes.client.KubernetesClient; +import io.fabric8.kubernetes.client.KubernetesClientBuilder; +import io.javaoperatorsdk.operator.api.reconciler.Context; +import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; + +class InformerErrorHandlerStartIT { + + @Test + @Timeout(5) + void operatorStart() { + KubernetesClient client = new KubernetesClientBuilder() + .withConfig(new ConfigBuilder() + .withImpersonateUsername("user-with-no-rights") + .build()) + .build(); + + Operator operator = new Operator(o -> o + .withKubernetesClient(client) + .withStopOnInformerErrorDuringStartup(false) + .withCacheSyncTimeout(Duration.ofSeconds(2))); + operator.register(new ConfigMapReconciler()); + operator.start(); + } + + @ControllerConfiguration + public static class ConfigMapReconciler implements Reconciler { + @Override + public UpdateControl reconcile(ConfigMap resource, Context context) + throws Exception { + return UpdateControl.noUpdate(); + } + } + +} From 4dca68cac71eeb1ee8653e353cbf1012a778a4ec Mon Sep 17 00:00:00 2001 From: csviri Date: Wed, 23 Aug 2023 12:54:40 +0200 Subject: [PATCH 2/2] docs --- .../javaoperatorsdk/operator/InformerErrorHandlerStartIT.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/InformerErrorHandlerStartIT.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/InformerErrorHandlerStartIT.java index 12aa24c1c4..b1edf3e108 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/InformerErrorHandlerStartIT.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/InformerErrorHandlerStartIT.java @@ -15,7 +15,9 @@ import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; class InformerErrorHandlerStartIT { - + /** + * Test showcases that the operator starts even if there is no access right for some resource. + */ @Test @Timeout(5) void operatorStart() {