From 2174da102458532ae0716ea631f6b95e411230bd Mon Sep 17 00:00:00 2001 From: Michael Edgar Date: Mon, 1 Jul 2024 11:49:49 -0400 Subject: [PATCH] Add 60s periodic reconcile, wait for deleted test resources, host req'd Signed-off-by: Michael Edgar --- .../streamshub/console/ConsoleReconciler.java | 8 ++++++- .../api/v1alpha1/spec/ConsoleSpec.java | 2 ++ .../console/ConsoleReconcilerTest.java | 23 +++++++++---------- 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/operator/src/main/java/com/github/streamshub/console/ConsoleReconciler.java b/operator/src/main/java/com/github/streamshub/console/ConsoleReconciler.java index a660b17cd..473ee7307 100644 --- a/operator/src/main/java/com/github/streamshub/console/ConsoleReconciler.java +++ b/operator/src/main/java/com/github/streamshub/console/ConsoleReconciler.java @@ -4,6 +4,7 @@ import java.util.Collection; import java.util.Collections; import java.util.Map; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import com.github.streamshub.console.api.v1alpha1.Console; @@ -33,6 +34,7 @@ import io.javaoperatorsdk.operator.api.reconciler.ErrorStatusUpdateControl; import io.javaoperatorsdk.operator.api.reconciler.EventSourceContext; import io.javaoperatorsdk.operator.api.reconciler.EventSourceInitializer; +import io.javaoperatorsdk.operator.api.reconciler.MaxReconciliationInterval; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; import io.javaoperatorsdk.operator.api.reconciler.dependent.Dependent; @@ -41,7 +43,11 @@ import io.quarkiverse.operatorsdk.annotations.CSVMetadata.InstallMode; import io.quarkiverse.operatorsdk.annotations.CSVMetadata.Provider; -@ControllerConfiguration(dependents = { +@ControllerConfiguration( + maxReconciliationInterval = @MaxReconciliationInterval( + interval = 60, + timeUnit = TimeUnit.SECONDS), + dependents = { @Dependent( name = PrometheusClusterRole.NAME, type = PrometheusClusterRole.class), diff --git a/operator/src/main/java/com/github/streamshub/console/api/v1alpha1/spec/ConsoleSpec.java b/operator/src/main/java/com/github/streamshub/console/api/v1alpha1/spec/ConsoleSpec.java index d9cd77cde..0194ea1cf 100644 --- a/operator/src/main/java/com/github/streamshub/console/api/v1alpha1/spec/ConsoleSpec.java +++ b/operator/src/main/java/com/github/streamshub/console/api/v1alpha1/spec/ConsoleSpec.java @@ -5,6 +5,7 @@ import com.fasterxml.jackson.annotation.JsonInclude; +import io.fabric8.generator.annotation.Required; import io.fabric8.kubernetes.api.model.EnvVar; import io.sundr.builder.annotations.Buildable; @@ -12,6 +13,7 @@ @JsonInclude(JsonInclude.Include.NON_NULL) public class ConsoleSpec { + @Required String hostname; Images images = new Images(); diff --git a/operator/src/test/java/com/github/streamshub/console/ConsoleReconcilerTest.java b/operator/src/test/java/com/github/streamshub/console/ConsoleReconcilerTest.java index 6659de3ed..05eb23eca 100644 --- a/operator/src/test/java/com/github/streamshub/console/ConsoleReconcilerTest.java +++ b/operator/src/test/java/com/github/streamshub/console/ConsoleReconcilerTest.java @@ -15,7 +15,6 @@ import io.fabric8.kubernetes.api.model.NamespaceBuilder; import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; import io.fabric8.kubernetes.client.KubernetesClient; -import io.fabric8.kubernetes.client.KubernetesClientException; import io.javaoperatorsdk.operator.Operator; import io.quarkus.test.junit.QuarkusTest; import io.strimzi.api.kafka.Crds; @@ -42,20 +41,20 @@ class ConsoleReconcilerTest { @BeforeEach void setUp() throws Exception { - client.resources(Console.class).inAnyNamespace().delete(); + client.resource(Crds.kafka()).serverSideApply(); - try { - client.resources(Kafka.class).inAnyNamespace().delete(); - } catch (KubernetesClientException e) { - if (e.getStatus().getCode() != 404) { - throw e; - } - } + var allConsoles = client.resources(Console.class).inAnyNamespace(); + var allKafkas = client.resources(Kafka.class).inAnyNamespace(); - operator.start(); + allConsoles.delete(); + allKafkas.delete(); - client.resource(Crds.kafka()) - .serverSideApply(); + await().atMost(10, TimeUnit.SECONDS).untilAsserted(() -> { + assertTrue(allConsoles.list().getItems().isEmpty()); + assertTrue(allKafkas.list().getItems().isEmpty()); + }); + + operator.start(); client.resource(new NamespaceBuilder() .withNewMetadata()