From 20f95626991b6ae8d515062131e094ce73a8da14 Mon Sep 17 00:00:00 2001 From: csviri Date: Wed, 18 May 2022 13:23:16 +0200 Subject: [PATCH 1/7] feat: managed dependent webpage sample --- .../operator/sample/Utils.java | 18 +++---- .../WebPageManagedDependentsReconciler.java | 7 +-- .../operator/sample/WebPageOperator.java | 8 ++- ...WebPageStandaloneDependentsReconciler.java | 4 ++ .../ConfigMapDependentResource.java | 5 +- .../DeploymentDependentResource.java | 6 ++- .../IngressDependentResource.java | 4 +- .../ServiceDependentResource.java | 6 ++- .../sample/WebPageOperatorAbstractTest.java | 3 +- .../operator/sample/WebPageOperatorE2E.java | 5 +- ...eOperatorManagedDependentResourcesE2E.java | 50 +++++++++++++++++++ ...ratorStandaloneDependentResourcesE2E.java} | 4 +- 12 files changed, 94 insertions(+), 26 deletions(-) rename sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/{ => dependents}/ConfigMapDependentResource.java (91%) rename sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/{ => dependents}/DeploymentDependentResource.java (87%) rename sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/{ => dependents}/IngressDependentResource.java (82%) rename sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/{ => dependents}/ServiceDependentResource.java (84%) create mode 100644 sample-operators/webpage/src/test/java/io/javaoperatorsdk/operator/sample/WebPageOperatorManagedDependentResourcesE2E.java rename sample-operators/webpage/src/test/java/io/javaoperatorsdk/operator/sample/{WebPageOperatorDependentResourcesE2E.java => WebPageOperatorStandaloneDependentResourcesE2E.java} (83%) diff --git a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/Utils.java b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/Utils.java index 38d9e68828..80fb0ddfab 100644 --- a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/Utils.java +++ b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/Utils.java @@ -9,7 +9,7 @@ public class Utils { private Utils() {} - static WebPageStatus createStatus(String configMapName) { + public static WebPageStatus createStatus(String configMapName) { WebPageStatus status = new WebPageStatus(); status.setHtmlConfigMap(configMapName); status.setAreWeGood(true); @@ -17,37 +17,37 @@ static WebPageStatus createStatus(String configMapName) { return status; } - static String configMapName(WebPage nginx) { + public static String configMapName(WebPage nginx) { return nginx.getMetadata().getName() + "-html"; } - static String deploymentName(WebPage nginx) { + public static String deploymentName(WebPage nginx) { return nginx.getMetadata().getName(); } - static String serviceName(WebPage webPage) { + public static String serviceName(WebPage webPage) { return webPage.getMetadata().getName(); } - static ErrorStatusUpdateControl handleError(WebPage resource, Exception e) { + public static ErrorStatusUpdateControl handleError(WebPage resource, Exception e) { resource.getStatus().setErrorMessage("Error: " + e.getMessage()); return ErrorStatusUpdateControl.updateStatus(resource); } - static void simulateErrorIfRequested(WebPage webPage) throws ErrorSimulationException { + public static void simulateErrorIfRequested(WebPage webPage) throws ErrorSimulationException { if (webPage.getSpec().getHtml().contains("error")) { // special case just to showcase error if doing a demo throw new ErrorSimulationException("Simulating error"); } } - static boolean isValidHtml(WebPage webPage) { + public static boolean isValidHtml(WebPage webPage) { // very dummy html validation var lowerCaseHtml = webPage.getSpec().getHtml().toLowerCase(); return lowerCaseHtml.contains("") && lowerCaseHtml.contains(""); } - static WebPage setInvalidHtmlErrorMessage(WebPage webPage) { + public static WebPage setInvalidHtmlErrorMessage(WebPage webPage) { if (webPage.getStatus() == null) { webPage.setStatus(new WebPageStatus()); } @@ -55,7 +55,7 @@ static WebPage setInvalidHtmlErrorMessage(WebPage webPage) { return webPage; } - static Ingress makeDesiredIngress(WebPage webPage) { + public static Ingress makeDesiredIngress(WebPage webPage) { Ingress ingress = loadYaml(Ingress.class, Utils.class, "ingress.yaml"); ingress.getMetadata().setName(webPage.getMetadata().getName()); ingress.getMetadata().setNamespace(webPage.getMetadata().getNamespace()); diff --git a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageManagedDependentsReconciler.java b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageManagedDependentsReconciler.java index 6441237b71..42854500e0 100644 --- a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageManagedDependentsReconciler.java +++ b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageManagedDependentsReconciler.java @@ -8,17 +8,18 @@ import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; import io.javaoperatorsdk.operator.api.reconciler.dependent.Dependent; +import io.javaoperatorsdk.operator.sample.dependents.ConfigMapDependentResource; +import io.javaoperatorsdk.operator.sample.dependents.DeploymentDependentResource; +import io.javaoperatorsdk.operator.sample.dependents.ServiceDependentResource; import static io.javaoperatorsdk.operator.sample.Utils.createStatus; import static io.javaoperatorsdk.operator.sample.Utils.handleError; import static io.javaoperatorsdk.operator.sample.Utils.simulateErrorIfRequested; -import static io.javaoperatorsdk.operator.sample.WebPageManagedDependentsReconciler.SELECTOR; /** * Shows how to implement a reconciler with managed dependent resources. */ @ControllerConfiguration( - labelSelector = SELECTOR, dependents = { @Dependent(type = ConfigMapDependentResource.class), @Dependent(type = DeploymentDependentResource.class), @@ -27,7 +28,7 @@ public class WebPageManagedDependentsReconciler implements Reconciler, ErrorStatusHandler { - static final String SELECTOR = "managed"; + public static final String SELECTOR = "managed"; @Override public ErrorStatusUpdateControl updateErrorStatus(WebPage resource, diff --git a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageOperator.java b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageOperator.java index 30958dbc84..c400c4ca78 100644 --- a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageOperator.java +++ b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageOperator.java @@ -17,7 +17,8 @@ public class WebPageOperator { public static final String WEBPAGE_RECONCILER_ENV = "WEBPAGE_RECONCILER"; - public static final String WEBPAGE_RECONCILER_ENV_VALUE = "classic"; + public static final String WEBPAGE_CLASSIC_RECONCILER_ENV_VALUE = "classic"; + public static final String WEBPAGE_MANAGED_DEPENDENT_RESOURCE_ENV_VALUE = "managed"; private static final Logger log = LoggerFactory.getLogger(WebPageOperator.class); @@ -27,8 +28,11 @@ public static void main(String[] args) throws IOException { Config config = new ConfigBuilder().withNamespace(null).build(); KubernetesClient client = new DefaultKubernetesClient(config); Operator operator = new Operator(client); - if (WEBPAGE_RECONCILER_ENV_VALUE.equals(System.getenv(WEBPAGE_RECONCILER_ENV))) { + if (WEBPAGE_CLASSIC_RECONCILER_ENV_VALUE.equals(System.getenv(WEBPAGE_RECONCILER_ENV))) { operator.register(new WebPageReconciler(client)); + } else if (WEBPAGE_MANAGED_DEPENDENT_RESOURCE_ENV_VALUE + .equals(System.getenv(WEBPAGE_RECONCILER_ENV))) { + operator.register(new WebPageManagedDependentsReconciler()); } else { operator.register(new WebPageStandaloneDependentsReconciler(client)); } diff --git a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageStandaloneDependentsReconciler.java b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageStandaloneDependentsReconciler.java index f7346bf4dc..f1dfd80d75 100644 --- a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageStandaloneDependentsReconciler.java +++ b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageStandaloneDependentsReconciler.java @@ -3,6 +3,10 @@ import java.util.Arrays; import java.util.Map; +import io.javaoperatorsdk.operator.sample.dependents.ConfigMapDependentResource; +import io.javaoperatorsdk.operator.sample.dependents.DeploymentDependentResource; +import io.javaoperatorsdk.operator.sample.dependents.IngressDependentResource; +import io.javaoperatorsdk.operator.sample.dependents.ServiceDependentResource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/ConfigMapDependentResource.java b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependents/ConfigMapDependentResource.java similarity index 91% rename from sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/ConfigMapDependentResource.java rename to sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependents/ConfigMapDependentResource.java index bba817436c..dc44a08778 100644 --- a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/ConfigMapDependentResource.java +++ b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependents/ConfigMapDependentResource.java @@ -1,8 +1,9 @@ -package io.javaoperatorsdk.operator.sample; +package io.javaoperatorsdk.operator.sample.dependents; import java.util.HashMap; import java.util.Map; +import io.javaoperatorsdk.operator.sample.WebPage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -19,7 +20,7 @@ // this annotation only activates when using managed dependents and is not otherwise needed @KubernetesDependent(labelSelector = SELECTOR) -class ConfigMapDependentResource extends CRUKubernetesDependentResource { +public class ConfigMapDependentResource extends CRUKubernetesDependentResource { private static final Logger log = LoggerFactory.getLogger(ConfigMapDependentResource.class); diff --git a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/DeploymentDependentResource.java b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependents/DeploymentDependentResource.java similarity index 87% rename from sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/DeploymentDependentResource.java rename to sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependents/DeploymentDependentResource.java index 80a41e24d8..ae3b5014a7 100644 --- a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/DeploymentDependentResource.java +++ b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependents/DeploymentDependentResource.java @@ -1,4 +1,4 @@ -package io.javaoperatorsdk.operator.sample; +package io.javaoperatorsdk.operator.sample.dependents; import java.util.HashMap; import java.util.Map; @@ -8,6 +8,8 @@ import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.CRUKubernetesDependentResource; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependent; +import io.javaoperatorsdk.operator.sample.WebPage; +import io.javaoperatorsdk.operator.sample.WebPageManagedDependentsReconciler; import static io.javaoperatorsdk.operator.ReconcilerUtils.loadYaml; import static io.javaoperatorsdk.operator.sample.Utils.configMapName; @@ -16,7 +18,7 @@ // this annotation only activates when using managed dependents and is not otherwise needed @KubernetesDependent(labelSelector = WebPageManagedDependentsReconciler.SELECTOR) -class DeploymentDependentResource extends CRUKubernetesDependentResource { +public class DeploymentDependentResource extends CRUKubernetesDependentResource { public DeploymentDependentResource() { super(Deployment.class); diff --git a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/IngressDependentResource.java b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependents/IngressDependentResource.java similarity index 82% rename from sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/IngressDependentResource.java rename to sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependents/IngressDependentResource.java index 074f36cffb..6a950bba2b 100644 --- a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/IngressDependentResource.java +++ b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependents/IngressDependentResource.java @@ -1,9 +1,11 @@ -package io.javaoperatorsdk.operator.sample; +package io.javaoperatorsdk.operator.sample.dependents; import io.fabric8.kubernetes.api.model.networking.v1.Ingress; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.CRUKubernetesDependentResource; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependent; +import io.javaoperatorsdk.operator.sample.WebPage; +import io.javaoperatorsdk.operator.sample.WebPageManagedDependentsReconciler; import static io.javaoperatorsdk.operator.sample.Utils.*; diff --git a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/ServiceDependentResource.java b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependents/ServiceDependentResource.java similarity index 84% rename from sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/ServiceDependentResource.java rename to sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependents/ServiceDependentResource.java index 84d670cfc5..38dfe0c105 100644 --- a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/ServiceDependentResource.java +++ b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependents/ServiceDependentResource.java @@ -1,4 +1,4 @@ -package io.javaoperatorsdk.operator.sample; +package io.javaoperatorsdk.operator.sample.dependents; import java.util.HashMap; import java.util.Map; @@ -7,6 +7,8 @@ import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.CRUKubernetesDependentResource; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependent; +import io.javaoperatorsdk.operator.sample.WebPage; +import io.javaoperatorsdk.operator.sample.WebPageManagedDependentsReconciler; import static io.javaoperatorsdk.operator.ReconcilerUtils.loadYaml; import static io.javaoperatorsdk.operator.sample.Utils.deploymentName; @@ -15,7 +17,7 @@ // this annotation only activates when using managed dependents and is not otherwise needed @KubernetesDependent(labelSelector = WebPageManagedDependentsReconciler.SELECTOR) -class ServiceDependentResource extends CRUKubernetesDependentResource { +public class ServiceDependentResource extends CRUKubernetesDependentResource { public ServiceDependentResource() { super(Service.class); diff --git a/sample-operators/webpage/src/test/java/io/javaoperatorsdk/operator/sample/WebPageOperatorAbstractTest.java b/sample-operators/webpage/src/test/java/io/javaoperatorsdk/operator/sample/WebPageOperatorAbstractTest.java index 65a3084989..6486ddf1b9 100644 --- a/sample-operators/webpage/src/test/java/io/javaoperatorsdk/operator/sample/WebPageOperatorAbstractTest.java +++ b/sample-operators/webpage/src/test/java/io/javaoperatorsdk/operator/sample/WebPageOperatorAbstractTest.java @@ -27,7 +27,8 @@ public abstract class WebPageOperatorAbstractTest { - static final Logger log = LoggerFactory.getLogger(WebPageOperatorDependentResourcesE2E.class); + static final Logger log = + LoggerFactory.getLogger(WebPageOperatorStandaloneDependentResourcesE2E.class); static final KubernetesClient client = new DefaultKubernetesClient(); public static final String TEST_PAGE = "test-page"; diff --git a/sample-operators/webpage/src/test/java/io/javaoperatorsdk/operator/sample/WebPageOperatorE2E.java b/sample-operators/webpage/src/test/java/io/javaoperatorsdk/operator/sample/WebPageOperatorE2E.java index 1dda69d6be..051fc05ec2 100644 --- a/sample-operators/webpage/src/test/java/io/javaoperatorsdk/operator/sample/WebPageOperatorE2E.java +++ b/sample-operators/webpage/src/test/java/io/javaoperatorsdk/operator/sample/WebPageOperatorE2E.java @@ -13,8 +13,8 @@ import io.javaoperatorsdk.operator.junit.ClusterOperatorExtension; import io.javaoperatorsdk.operator.junit.LocalOperatorExtension; +import static io.javaoperatorsdk.operator.sample.WebPageOperator.WEBPAGE_CLASSIC_RECONCILER_ENV_VALUE; import static io.javaoperatorsdk.operator.sample.WebPageOperator.WEBPAGE_RECONCILER_ENV; -import static io.javaoperatorsdk.operator.sample.WebPageOperator.WEBPAGE_RECONCILER_ENV_VALUE; import static io.javaoperatorsdk.operator.sample.WebPageReconciler.lowLevelLabel; class WebPageOperatorE2E extends WebPageOperatorAbstractTest { @@ -40,7 +40,8 @@ public WebPageOperatorE2E() throws FileNotFoundException {} container.setEnv(new ArrayList<>()); } container.getEnv().add( - new EnvVar(WEBPAGE_RECONCILER_ENV, WEBPAGE_RECONCILER_ENV_VALUE, null)); + new EnvVar(WEBPAGE_RECONCILER_ENV, WEBPAGE_CLASSIC_RECONCILER_ENV_VALUE, + null)); }) .build(); diff --git a/sample-operators/webpage/src/test/java/io/javaoperatorsdk/operator/sample/WebPageOperatorManagedDependentResourcesE2E.java b/sample-operators/webpage/src/test/java/io/javaoperatorsdk/operator/sample/WebPageOperatorManagedDependentResourcesE2E.java new file mode 100644 index 0000000000..1b40fccc80 --- /dev/null +++ b/sample-operators/webpage/src/test/java/io/javaoperatorsdk/operator/sample/WebPageOperatorManagedDependentResourcesE2E.java @@ -0,0 +1,50 @@ +package io.javaoperatorsdk.operator.sample; + +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.util.ArrayList; + +import org.junit.jupiter.api.extension.RegisterExtension; + +import io.fabric8.kubernetes.api.model.Container; +import io.fabric8.kubernetes.api.model.EnvVar; +import io.fabric8.kubernetes.api.model.apps.Deployment; +import io.javaoperatorsdk.operator.junit.AbstractOperatorExtension; +import io.javaoperatorsdk.operator.junit.ClusterOperatorExtension; +import io.javaoperatorsdk.operator.junit.LocalOperatorExtension; + +import static io.javaoperatorsdk.operator.sample.WebPageOperator.*; + +class WebPageOperatorManagedDependentResourcesE2E extends WebPageOperatorAbstractTest { + + public WebPageOperatorManagedDependentResourcesE2E() throws FileNotFoundException {} + + @RegisterExtension + AbstractOperatorExtension operator = + isLocal() + ? LocalOperatorExtension.builder() + .waitForNamespaceDeletion(false) + .withReconciler(new WebPageManagedDependentsReconciler()) + .build() + : ClusterOperatorExtension.builder() + .waitForNamespaceDeletion(false) + .withOperatorDeployment(client.load(new FileInputStream("k8s/operator.yaml")).get(), + resources -> { + Deployment deployment = (Deployment) resources.stream() + .filter(r -> r instanceof Deployment).findFirst().orElseThrow(); + Container container = + deployment.getSpec().getTemplate().getSpec().getContainers().get(0); + if (container.getEnv() == null) { + container.setEnv(new ArrayList<>()); + } + container.getEnv().add( + new EnvVar(WEBPAGE_RECONCILER_ENV, + WEBPAGE_MANAGED_DEPENDENT_RESOURCE_ENV_VALUE, null)); + }) + .build(); + + @Override + AbstractOperatorExtension operator() { + return operator; + } +} diff --git a/sample-operators/webpage/src/test/java/io/javaoperatorsdk/operator/sample/WebPageOperatorDependentResourcesE2E.java b/sample-operators/webpage/src/test/java/io/javaoperatorsdk/operator/sample/WebPageOperatorStandaloneDependentResourcesE2E.java similarity index 83% rename from sample-operators/webpage/src/test/java/io/javaoperatorsdk/operator/sample/WebPageOperatorDependentResourcesE2E.java rename to sample-operators/webpage/src/test/java/io/javaoperatorsdk/operator/sample/WebPageOperatorStandaloneDependentResourcesE2E.java index 8cbba764be..2175e33a41 100644 --- a/sample-operators/webpage/src/test/java/io/javaoperatorsdk/operator/sample/WebPageOperatorDependentResourcesE2E.java +++ b/sample-operators/webpage/src/test/java/io/javaoperatorsdk/operator/sample/WebPageOperatorStandaloneDependentResourcesE2E.java @@ -9,9 +9,9 @@ import io.javaoperatorsdk.operator.junit.ClusterOperatorExtension; import io.javaoperatorsdk.operator.junit.LocalOperatorExtension; -class WebPageOperatorDependentResourcesE2E extends WebPageOperatorAbstractTest { +class WebPageOperatorStandaloneDependentResourcesE2E extends WebPageOperatorAbstractTest { - public WebPageOperatorDependentResourcesE2E() throws FileNotFoundException {} + public WebPageOperatorStandaloneDependentResourcesE2E() throws FileNotFoundException {} @RegisterExtension AbstractOperatorExtension operator = From a4bfee1b3ced139d29ee1e8e913a05becbe7a49c Mon Sep 17 00:00:00 2001 From: csviri Date: Wed, 18 May 2022 15:14:17 +0200 Subject: [PATCH 2/7] wip --- .../javaoperatorsdk/operator/sample/WebPageOperator.java | 5 +++-- .../sample/WebPageStandaloneDependentsReconciler.java | 8 ++++---- .../sample/dependents/ConfigMapDependentResource.java | 2 +- .../sample/dependents/DeploymentDependentResource.java | 3 ++- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageOperator.java b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageOperator.java index c400c4ca78..661f6f3ba8 100644 --- a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageOperator.java +++ b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageOperator.java @@ -28,10 +28,11 @@ public static void main(String[] args) throws IOException { Config config = new ConfigBuilder().withNamespace(null).build(); KubernetesClient client = new DefaultKubernetesClient(config); Operator operator = new Operator(client); - if (WEBPAGE_CLASSIC_RECONCILER_ENV_VALUE.equals(System.getenv(WEBPAGE_RECONCILER_ENV))) { + String reconcilerEnvVar = System.getenv(WEBPAGE_RECONCILER_ENV); + if (WEBPAGE_CLASSIC_RECONCILER_ENV_VALUE.equals(reconcilerEnvVar)) { operator.register(new WebPageReconciler(client)); } else if (WEBPAGE_MANAGED_DEPENDENT_RESOURCE_ENV_VALUE - .equals(System.getenv(WEBPAGE_RECONCILER_ENV))) { + .equals(reconcilerEnvVar)) { operator.register(new WebPageManagedDependentsReconciler()); } else { operator.register(new WebPageStandaloneDependentsReconciler(client)); diff --git a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageStandaloneDependentsReconciler.java b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageStandaloneDependentsReconciler.java index f1dfd80d75..51e0318a43 100644 --- a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageStandaloneDependentsReconciler.java +++ b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageStandaloneDependentsReconciler.java @@ -3,10 +3,6 @@ import java.util.Arrays; import java.util.Map; -import io.javaoperatorsdk.operator.sample.dependents.ConfigMapDependentResource; -import io.javaoperatorsdk.operator.sample.dependents.DeploymentDependentResource; -import io.javaoperatorsdk.operator.sample.dependents.IngressDependentResource; -import io.javaoperatorsdk.operator.sample.dependents.ServiceDependentResource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -19,6 +15,10 @@ import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentResource; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentResourceConfig; import io.javaoperatorsdk.operator.processing.event.source.EventSource; +import io.javaoperatorsdk.operator.sample.dependents.ConfigMapDependentResource; +import io.javaoperatorsdk.operator.sample.dependents.DeploymentDependentResource; +import io.javaoperatorsdk.operator.sample.dependents.IngressDependentResource; +import io.javaoperatorsdk.operator.sample.dependents.ServiceDependentResource; import static io.javaoperatorsdk.operator.sample.Utils.*; diff --git a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependents/ConfigMapDependentResource.java b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependents/ConfigMapDependentResource.java index dc44a08778..bdb91523a3 100644 --- a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependents/ConfigMapDependentResource.java +++ b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependents/ConfigMapDependentResource.java @@ -3,7 +3,6 @@ import java.util.HashMap; import java.util.Map; -import io.javaoperatorsdk.operator.sample.WebPage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -13,6 +12,7 @@ import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.CRUKubernetesDependentResource; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependent; +import io.javaoperatorsdk.operator.sample.WebPage; import static io.javaoperatorsdk.operator.sample.Utils.configMapName; import static io.javaoperatorsdk.operator.sample.Utils.deploymentName; diff --git a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependents/DeploymentDependentResource.java b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependents/DeploymentDependentResource.java index ae3b5014a7..214e0cce73 100644 --- a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependents/DeploymentDependentResource.java +++ b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependents/DeploymentDependentResource.java @@ -18,7 +18,8 @@ // this annotation only activates when using managed dependents and is not otherwise needed @KubernetesDependent(labelSelector = WebPageManagedDependentsReconciler.SELECTOR) -public class DeploymentDependentResource extends CRUKubernetesDependentResource { +public class DeploymentDependentResource + extends CRUKubernetesDependentResource { public DeploymentDependentResource() { super(Deployment.class); From 8b8888f2b5be3df66724ac8f717f5df3972bcc7d Mon Sep 17 00:00:00 2001 From: csviri Date: Wed, 18 May 2022 15:27:08 +0200 Subject: [PATCH 3/7] wip --- .../operator/sample/WebPageOperatorAbstractTest.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/sample-operators/webpage/src/test/java/io/javaoperatorsdk/operator/sample/WebPageOperatorAbstractTest.java b/sample-operators/webpage/src/test/java/io/javaoperatorsdk/operator/sample/WebPageOperatorAbstractTest.java index 6486ddf1b9..acd8e3c6f0 100644 --- a/sample-operators/webpage/src/test/java/io/javaoperatorsdk/operator/sample/WebPageOperatorAbstractTest.java +++ b/sample-operators/webpage/src/test/java/io/javaoperatorsdk/operator/sample/WebPageOperatorAbstractTest.java @@ -7,7 +7,6 @@ import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.time.Duration; -import java.util.Objects; import org.junit.jupiter.api.Test; import org.slf4j.Logger; @@ -49,14 +48,14 @@ void testAddingWebPage() { await() .atMost(Duration.ofSeconds(20)) .pollInterval(Duration.ofSeconds(1)) - .until( + .untilAsserted( () -> { var actual = operator().get(WebPage.class, TEST_PAGE); var deployment = operator().get(Deployment.class, deploymentName(webPage)); - return Boolean.TRUE.equals(actual.getStatus().getAreWeGood()) - && Objects.equals(deployment.getSpec().getReplicas(), - deployment.getStatus().getReadyReplicas()); + assertThat(actual.getStatus().getAreWeGood()).isTrue(); + assertThat(deployment.getSpec().getReplicas()) + .isEqualTo(deployment.getStatus().getReadyReplicas()); }); String response = httpGetForWebPage(webPage); From 6930117f87e8aed78ef7b21887808a0ba612b273 Mon Sep 17 00:00:00 2001 From: csviri Date: Wed, 18 May 2022 15:38:46 +0200 Subject: [PATCH 4/7] fix standlone move revert --- .../ConfigMapDependentResource.java | 3 +-- .../DeploymentDependentResource.java | 4 +--- .../IngressDependentResource.java | 4 +--- .../ServiceDependentResource.java | 4 +--- .../javaoperatorsdk/operator/sample/Utils.java | 18 +++++++++--------- .../WebPageManagedDependentsReconciler.java | 3 --- .../WebPageStandaloneDependentsReconciler.java | 4 ---- 7 files changed, 13 insertions(+), 27 deletions(-) rename sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/{dependents => }/ConfigMapDependentResource.java (95%) rename sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/{dependents => }/DeploymentDependentResource.java (91%) rename sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/{dependents => }/IngressDependentResource.java (82%) rename sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/{dependents => }/ServiceDependentResource.java (89%) diff --git a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependents/ConfigMapDependentResource.java b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/ConfigMapDependentResource.java similarity index 95% rename from sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependents/ConfigMapDependentResource.java rename to sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/ConfigMapDependentResource.java index bdb91523a3..cfe0f79a0e 100644 --- a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependents/ConfigMapDependentResource.java +++ b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/ConfigMapDependentResource.java @@ -1,4 +1,4 @@ -package io.javaoperatorsdk.operator.sample.dependents; +package io.javaoperatorsdk.operator.sample; import java.util.HashMap; import java.util.Map; @@ -12,7 +12,6 @@ import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.CRUKubernetesDependentResource; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependent; -import io.javaoperatorsdk.operator.sample.WebPage; import static io.javaoperatorsdk.operator.sample.Utils.configMapName; import static io.javaoperatorsdk.operator.sample.Utils.deploymentName; diff --git a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependents/DeploymentDependentResource.java b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/DeploymentDependentResource.java similarity index 91% rename from sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependents/DeploymentDependentResource.java rename to sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/DeploymentDependentResource.java index 214e0cce73..4991171f12 100644 --- a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependents/DeploymentDependentResource.java +++ b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/DeploymentDependentResource.java @@ -1,4 +1,4 @@ -package io.javaoperatorsdk.operator.sample.dependents; +package io.javaoperatorsdk.operator.sample; import java.util.HashMap; import java.util.Map; @@ -8,8 +8,6 @@ import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.CRUKubernetesDependentResource; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependent; -import io.javaoperatorsdk.operator.sample.WebPage; -import io.javaoperatorsdk.operator.sample.WebPageManagedDependentsReconciler; import static io.javaoperatorsdk.operator.ReconcilerUtils.loadYaml; import static io.javaoperatorsdk.operator.sample.Utils.configMapName; diff --git a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependents/IngressDependentResource.java b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/IngressDependentResource.java similarity index 82% rename from sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependents/IngressDependentResource.java rename to sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/IngressDependentResource.java index 6a950bba2b..074f36cffb 100644 --- a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependents/IngressDependentResource.java +++ b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/IngressDependentResource.java @@ -1,11 +1,9 @@ -package io.javaoperatorsdk.operator.sample.dependents; +package io.javaoperatorsdk.operator.sample; import io.fabric8.kubernetes.api.model.networking.v1.Ingress; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.CRUKubernetesDependentResource; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependent; -import io.javaoperatorsdk.operator.sample.WebPage; -import io.javaoperatorsdk.operator.sample.WebPageManagedDependentsReconciler; import static io.javaoperatorsdk.operator.sample.Utils.*; diff --git a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependents/ServiceDependentResource.java b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/ServiceDependentResource.java similarity index 89% rename from sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependents/ServiceDependentResource.java rename to sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/ServiceDependentResource.java index 38dfe0c105..a914aa5994 100644 --- a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/dependents/ServiceDependentResource.java +++ b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/ServiceDependentResource.java @@ -1,4 +1,4 @@ -package io.javaoperatorsdk.operator.sample.dependents; +package io.javaoperatorsdk.operator.sample; import java.util.HashMap; import java.util.Map; @@ -7,8 +7,6 @@ import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.CRUKubernetesDependentResource; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependent; -import io.javaoperatorsdk.operator.sample.WebPage; -import io.javaoperatorsdk.operator.sample.WebPageManagedDependentsReconciler; import static io.javaoperatorsdk.operator.ReconcilerUtils.loadYaml; import static io.javaoperatorsdk.operator.sample.Utils.deploymentName; diff --git a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/Utils.java b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/Utils.java index 80fb0ddfab..38d9e68828 100644 --- a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/Utils.java +++ b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/Utils.java @@ -9,7 +9,7 @@ public class Utils { private Utils() {} - public static WebPageStatus createStatus(String configMapName) { + static WebPageStatus createStatus(String configMapName) { WebPageStatus status = new WebPageStatus(); status.setHtmlConfigMap(configMapName); status.setAreWeGood(true); @@ -17,37 +17,37 @@ public static WebPageStatus createStatus(String configMapName) { return status; } - public static String configMapName(WebPage nginx) { + static String configMapName(WebPage nginx) { return nginx.getMetadata().getName() + "-html"; } - public static String deploymentName(WebPage nginx) { + static String deploymentName(WebPage nginx) { return nginx.getMetadata().getName(); } - public static String serviceName(WebPage webPage) { + static String serviceName(WebPage webPage) { return webPage.getMetadata().getName(); } - public static ErrorStatusUpdateControl handleError(WebPage resource, Exception e) { + static ErrorStatusUpdateControl handleError(WebPage resource, Exception e) { resource.getStatus().setErrorMessage("Error: " + e.getMessage()); return ErrorStatusUpdateControl.updateStatus(resource); } - public static void simulateErrorIfRequested(WebPage webPage) throws ErrorSimulationException { + static void simulateErrorIfRequested(WebPage webPage) throws ErrorSimulationException { if (webPage.getSpec().getHtml().contains("error")) { // special case just to showcase error if doing a demo throw new ErrorSimulationException("Simulating error"); } } - public static boolean isValidHtml(WebPage webPage) { + static boolean isValidHtml(WebPage webPage) { // very dummy html validation var lowerCaseHtml = webPage.getSpec().getHtml().toLowerCase(); return lowerCaseHtml.contains("") && lowerCaseHtml.contains(""); } - public static WebPage setInvalidHtmlErrorMessage(WebPage webPage) { + static WebPage setInvalidHtmlErrorMessage(WebPage webPage) { if (webPage.getStatus() == null) { webPage.setStatus(new WebPageStatus()); } @@ -55,7 +55,7 @@ public static WebPage setInvalidHtmlErrorMessage(WebPage webPage) { return webPage; } - public static Ingress makeDesiredIngress(WebPage webPage) { + static Ingress makeDesiredIngress(WebPage webPage) { Ingress ingress = loadYaml(Ingress.class, Utils.class, "ingress.yaml"); ingress.getMetadata().setName(webPage.getMetadata().getName()); ingress.getMetadata().setNamespace(webPage.getMetadata().getNamespace()); diff --git a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageManagedDependentsReconciler.java b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageManagedDependentsReconciler.java index 42854500e0..ac89ebd269 100644 --- a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageManagedDependentsReconciler.java +++ b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageManagedDependentsReconciler.java @@ -8,9 +8,6 @@ import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; import io.javaoperatorsdk.operator.api.reconciler.dependent.Dependent; -import io.javaoperatorsdk.operator.sample.dependents.ConfigMapDependentResource; -import io.javaoperatorsdk.operator.sample.dependents.DeploymentDependentResource; -import io.javaoperatorsdk.operator.sample.dependents.ServiceDependentResource; import static io.javaoperatorsdk.operator.sample.Utils.createStatus; import static io.javaoperatorsdk.operator.sample.Utils.handleError; diff --git a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageStandaloneDependentsReconciler.java b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageStandaloneDependentsReconciler.java index 51e0318a43..f7346bf4dc 100644 --- a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageStandaloneDependentsReconciler.java +++ b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageStandaloneDependentsReconciler.java @@ -15,10 +15,6 @@ import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentResource; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentResourceConfig; import io.javaoperatorsdk.operator.processing.event.source.EventSource; -import io.javaoperatorsdk.operator.sample.dependents.ConfigMapDependentResource; -import io.javaoperatorsdk.operator.sample.dependents.DeploymentDependentResource; -import io.javaoperatorsdk.operator.sample.dependents.IngressDependentResource; -import io.javaoperatorsdk.operator.sample.dependents.ServiceDependentResource; import static io.javaoperatorsdk.operator.sample.Utils.*; From 3057e5b841606226d555ae259d1ac4117e67bb0d Mon Sep 17 00:00:00 2001 From: csviri Date: Wed, 18 May 2022 15:54:54 +0200 Subject: [PATCH 5/7] add update operation test --- .../sample/WebPageOperatorAbstractTest.java | 28 +++++++++++++------ .../operator/sample/WebPageOperatorE2E.java | 4 +-- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/sample-operators/webpage/src/test/java/io/javaoperatorsdk/operator/sample/WebPageOperatorAbstractTest.java b/sample-operators/webpage/src/test/java/io/javaoperatorsdk/operator/sample/WebPageOperatorAbstractTest.java index acd8e3c6f0..fe8b651fe1 100644 --- a/sample-operators/webpage/src/test/java/io/javaoperatorsdk/operator/sample/WebPageOperatorAbstractTest.java +++ b/sample-operators/webpage/src/test/java/io/javaoperatorsdk/operator/sample/WebPageOperatorAbstractTest.java @@ -31,6 +31,10 @@ public abstract class WebPageOperatorAbstractTest { static final KubernetesClient client = new DefaultKubernetesClient(); public static final String TEST_PAGE = "test-page"; + public static final String TITLE1 = "Hello Operator World"; + public static final String TITLE2 = "Hello Operator World Title 2"; + public static final int WAIT_SECONDS = 20; + public static final Duration POLL_INTERVAL = Duration.ofSeconds(1); boolean isLocal() { String deployment = System.getProperty("test.deployment"); @@ -42,12 +46,12 @@ boolean isLocal() { @Test void testAddingWebPage() { - var webPage = createWebPage(); + var webPage = createWebPage(TITLE1); operator().create(WebPage.class, webPage); await() - .atMost(Duration.ofSeconds(20)) - .pollInterval(Duration.ofSeconds(1)) + .atMost(Duration.ofSeconds(WAIT_SECONDS)) + .pollInterval(POLL_INTERVAL) .untilAsserted( () -> { var actual = operator().get(WebPage.class, TEST_PAGE); @@ -57,9 +61,17 @@ void testAddingWebPage() { assertThat(deployment.getSpec().getReplicas()) .isEqualTo(deployment.getStatus().getReadyReplicas()); }); + assertThat(httpGetForWebPage(webPage)).contains(TITLE1); - String response = httpGetForWebPage(webPage); - assertThat(response).contains("Hello Operator World"); + // update test: changing title + operator().replace(WebPage.class, createWebPage(TITLE2)); + + await().atMost(Duration.ofSeconds(WAIT_SECONDS)) + .pollInterval(POLL_INTERVAL) + .untilAsserted(() -> { + String page = httpGetForWebPage(webPage); + assertThat(page).isNotNull().contains(TITLE2); + }); } String httpGetForWebPage(WebPage webPage) { @@ -75,7 +87,7 @@ String httpGetForWebPage(WebPage webPage) { .uri(new URI("http://localhost:" + portForward.getLocalPort())).build(); return httpClient.send(request, HttpResponse.BodyHandlers.ofString()).body(); } catch (URISyntaxException | IOException | InterruptedException e) { - throw new IllegalStateException(e); + return null; } finally { if (portForward != null) { try { @@ -87,7 +99,7 @@ String httpGetForWebPage(WebPage webPage) { } } - WebPage createWebPage() { + WebPage createWebPage(String title) { WebPage webPage = new WebPage(); webPage.setMetadata(new ObjectMeta()); webPage.getMetadata().setName(TEST_PAGE); @@ -98,7 +110,7 @@ WebPage createWebPage() { .setHtml( "\n" + " \n" - + " Hello Operator World\n" + + " " + title + "\n" + " \n" + " \n" + " Hello World! \n" diff --git a/sample-operators/webpage/src/test/java/io/javaoperatorsdk/operator/sample/WebPageOperatorE2E.java b/sample-operators/webpage/src/test/java/io/javaoperatorsdk/operator/sample/WebPageOperatorE2E.java index 051fc05ec2..2183fba43e 100644 --- a/sample-operators/webpage/src/test/java/io/javaoperatorsdk/operator/sample/WebPageOperatorE2E.java +++ b/sample-operators/webpage/src/test/java/io/javaoperatorsdk/operator/sample/WebPageOperatorE2E.java @@ -52,8 +52,8 @@ AbstractOperatorExtension operator() { } @Override - WebPage createWebPage() { - WebPage page = super.createWebPage(); + WebPage createWebPage(String title) { + WebPage page = super.createWebPage(title); page.getMetadata().setLabels(lowLevelLabel()); return page; } From 86b3f7bbdd85c527c99a0c4d25987fd09afc3c88 Mon Sep 17 00:00:00 2001 From: csviri Date: Wed, 18 May 2022 16:12:46 +0200 Subject: [PATCH 6/7] delete part --- .../operator/sample/WebPageOperatorAbstractTest.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/sample-operators/webpage/src/test/java/io/javaoperatorsdk/operator/sample/WebPageOperatorAbstractTest.java b/sample-operators/webpage/src/test/java/io/javaoperatorsdk/operator/sample/WebPageOperatorAbstractTest.java index fe8b651fe1..f80e681b7a 100644 --- a/sample-operators/webpage/src/test/java/io/javaoperatorsdk/operator/sample/WebPageOperatorAbstractTest.java +++ b/sample-operators/webpage/src/test/java/io/javaoperatorsdk/operator/sample/WebPageOperatorAbstractTest.java @@ -63,7 +63,7 @@ void testAddingWebPage() { }); assertThat(httpGetForWebPage(webPage)).contains(TITLE1); - // update test: changing title + // update part: changing title operator().replace(WebPage.class, createWebPage(TITLE2)); await().atMost(Duration.ofSeconds(WAIT_SECONDS)) @@ -72,6 +72,16 @@ void testAddingWebPage() { String page = httpGetForWebPage(webPage); assertThat(page).isNotNull().contains(TITLE2); }); + + // delete part: deleting webpage + operator().delete(WebPage.class, createWebPage(TITLE2)); + + await().atMost(Duration.ofSeconds(WAIT_SECONDS)) + .pollInterval(POLL_INTERVAL) + .untilAsserted(() -> { + Deployment deployment = operator().get(Deployment.class, deploymentName(webPage)); + assertThat(deployment).isNull(); + }); } String httpGetForWebPage(WebPage webPage) { From c065d6d39b3bd0c127baaa53ea91a05fc79975e1 Mon Sep 17 00:00:00 2001 From: csviri Date: Wed, 18 May 2022 16:30:45 +0200 Subject: [PATCH 7/7] fix --- .../java/io/javaoperatorsdk/operator/sample/WebPage.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPage.java b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPage.java index 52ef6a938b..f1e4a69e3b 100644 --- a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPage.java +++ b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPage.java @@ -10,11 +10,6 @@ public class WebPage extends CustomResource implements Namespaced { - @Override - protected WebPageStatus initStatus() { - return new WebPageStatus(); - } - @Override public String toString() { return "WebPage{" +