From b0cd11820496dc8d5fa8b5937ef70746d37cef4b Mon Sep 17 00:00:00 2001 From: csviri Date: Thu, 27 Jan 2022 18:11:43 +0100 Subject: [PATCH 1/7] feature: multiplecrdversion --- .../io/javaoperatorsdk/operator/Operator.java | 12 ++--- .../operator/ReconcilerUtils.java | 11 +++-- .../processing/event/EventSourceManager.java | 2 +- .../multi-version-crd/README.md | 11 +++++ .../multi-version-crd/k8s/crv1.yaml | 9 ++++ .../multi-version-crd/k8s/crv2.yaml | 8 ++++ smoke-test-samples/multi-version-crd/pom.xml | 48 +++++++++++++++++++ .../MultiVersionCRDOperator.java | 17 +++++++ .../MultiVersionCRDTestReconciler1.java | 32 +++++++++++++ .../MultiVersionCRDTestReconciler2.java | 33 +++++++++++++ .../MultiVersionCRDTestCustomResource1.java | 24 ++++++++++ .../MultiVersionCRDTestCustomResource2.java | 24 ++++++++++ ...ultiVersionCRDTestCustomResourceSpec1.java | 26 ++++++++++ ...ultiVersionCRDTestCustomResourceSpec2.java | 15 ++++++ ...tiVersionCRDTestCustomResourceStatus1.java | 40 ++++++++++++++++ ...tiVersionCRDTestCustomResourceStatus2.java | 29 +++++++++++ .../src/main/resources/log4j2.xml | 13 +++++ .../MultiVersionCRDOperatorIT.java | 12 +++++ smoke-test-samples/pom.xml | 1 + 19 files changed, 357 insertions(+), 10 deletions(-) create mode 100644 smoke-test-samples/multi-version-crd/README.md create mode 100644 smoke-test-samples/multi-version-crd/k8s/crv1.yaml create mode 100644 smoke-test-samples/multi-version-crd/k8s/crv2.yaml create mode 100644 smoke-test-samples/multi-version-crd/pom.xml create mode 100644 smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDOperator.java create mode 100644 smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestReconciler1.java create mode 100644 smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestReconciler2.java create mode 100644 smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResource1.java create mode 100644 smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResource2.java create mode 100644 smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResourceSpec1.java create mode 100644 smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResourceSpec2.java create mode 100644 smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResourceStatus1.java create mode 100644 smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResourceStatus2.java create mode 100644 smoke-test-samples/multi-version-crd/src/main/resources/log4j2.xml create mode 100644 smoke-test-samples/multi-version-crd/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDOperatorIT.java diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/Operator.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/Operator.java index 39298c2ee0..d5162ce53f 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/Operator.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/Operator.java @@ -181,12 +181,12 @@ public synchronized void stop() { public synchronized void add(Controller controller) { final var configuration = controller.getConfiguration(); final var resourceTypeName = configuration.getResourceTypeName(); - final var existing = controllers.get(resourceTypeName); - if (existing != null) { - throw new OperatorException("Cannot register controller '" + configuration.getName() - + "': another controller named '" + existing.getConfiguration().getName() - + "' is already registered for resource '" + resourceTypeName + "'"); - } +// final var existing = controllers.get(resourceTypeName); +// if (existing != null) { +// throw new OperatorException("Cannot register controller '" + configuration.getName() +// + "': another controller named '" + existing.getConfiguration().getName() +// + "' is already registered for resource '" + resourceTypeName + "'"); +// } this.controllers.put(resourceTypeName, controller); if (started) { controller.start(); diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/ReconcilerUtils.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/ReconcilerUtils.java index 26dc4cdcca..6a788a96b8 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/ReconcilerUtils.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/ReconcilerUtils.java @@ -40,11 +40,16 @@ public void setApiVersion(String s) { return Constants.NO_FINALIZER.equals(finalizer) || validator.isFinalizerValid(finalizer); } - public static String getResourceTypeName(Class resourceClass) { - // todo: use fabric8 method when 5.12 is released - // return HasMetadata.getFullResourceName(resourceClass); + public static String getResourceTypeNameWithVersion(Class resourceClass) { + final var version = HasMetadata.getVersion(resourceClass); + return getResourceTypeName(resourceClass) + "/" + version; + } + + public static String getResourceTypeName( + Class resourceClass) { final var group = HasMetadata.getGroup(resourceClass); final var plural = HasMetadata.getPlural(resourceClass); + final var version = HasMetadata.getVersion(resourceClass); return (group == null || group.isEmpty()) ? plural : plural + "." + group; } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/EventSourceManager.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/EventSourceManager.java index 55f42cd438..22920ac7a2 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/EventSourceManager.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/EventSourceManager.java @@ -71,7 +71,7 @@ public void start() { try { eventSource.start(); } catch (Exception e) { - log.warn("Error starting {} -> {}", eventSource, e); + log.warn("Error starting {}", eventSource, e); } } eventProcessor.start(); diff --git a/smoke-test-samples/multi-version-crd/README.md b/smoke-test-samples/multi-version-crd/README.md new file mode 100644 index 0000000000..3e4e334ade --- /dev/null +++ b/smoke-test-samples/multi-version-crd/README.md @@ -0,0 +1,11 @@ +## Description + +This sample shows how to use CRD with multiple versions. + +## How-to + +For getting the resource with target version use: + +`k get MultiVersionCRDTestCustomResource.v1.sample.javaoperatorsdk mvcv1 -o yaml` + +`k get MultiVersionCRDTestCustomResource.v2.sample.javaoperatorsdk mvcv1 -o yaml` \ No newline at end of file diff --git a/smoke-test-samples/multi-version-crd/k8s/crv1.yaml b/smoke-test-samples/multi-version-crd/k8s/crv1.yaml new file mode 100644 index 0000000000..2109bec873 --- /dev/null +++ b/smoke-test-samples/multi-version-crd/k8s/crv1.yaml @@ -0,0 +1,9 @@ +apiVersion: "sample.javaoperatorsdk/v1" +kind: MultiVersionCRDTestCustomResource +metadata: + name: mvcv1 + labels: + version: v1 +spec: + value1: 1 + value2: 2 diff --git a/smoke-test-samples/multi-version-crd/k8s/crv2.yaml b/smoke-test-samples/multi-version-crd/k8s/crv2.yaml new file mode 100644 index 0000000000..1f9e13d798 --- /dev/null +++ b/smoke-test-samples/multi-version-crd/k8s/crv2.yaml @@ -0,0 +1,8 @@ +apiVersion: "sample.javaoperatorsdk/v2" +kind: MultiVersionCRDTestCustomResource +metadata: + name: mvcv2 + labels: + version: v2 +spec: + value1: 1 diff --git a/smoke-test-samples/multi-version-crd/pom.xml b/smoke-test-samples/multi-version-crd/pom.xml new file mode 100644 index 0000000000..cb85d769bb --- /dev/null +++ b/smoke-test-samples/multi-version-crd/pom.xml @@ -0,0 +1,48 @@ + + + 4.0.0 + + + io.javaoperatorsdk + java-operator-sdk-smoke-test-samples + 2.0.3-SNAPSHOT + + + operator-framework-smoke-test-samples-multi-version-crd + Operator SDK - Smoke Test Samples - Multi Version CRD + Sample usage with pure java app + jar + + + + io.javaoperatorsdk + operator-framework + compile + + + org.apache.logging.log4j + log4j-slf4j-impl + + + org.apache.logging.log4j + log4j-core + + + io.fabric8 + crd-generator-apt + compile + + + org.junit.jupiter + junit-jupiter-api + test + + + org.junit.jupiter + junit-jupiter-engine + test + + + + diff --git a/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDOperator.java b/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDOperator.java new file mode 100644 index 0000000000..5bd99749d6 --- /dev/null +++ b/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDOperator.java @@ -0,0 +1,17 @@ +package io.javaoperatorsdk.operator.sample.multiversioncrd; + +import io.javaoperatorsdk.operator.Operator; +import io.javaoperatorsdk.operator.api.config.ConfigurationServiceOverrider; +import io.javaoperatorsdk.operator.config.runtime.DefaultConfigurationService; + +public class MultiVersionCRDOperator { + + public static void main(String[] args) { + Operator operator = + new Operator( + ConfigurationServiceOverrider.override(DefaultConfigurationService.instance()).build()); + operator.register(new MultiVersionCRDTestReconciler1()); + operator.register(new MultiVersionCRDTestReconciler2()); + operator.start(); + } +} diff --git a/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestReconciler1.java b/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestReconciler1.java new file mode 100644 index 0000000000..d1b17e9e85 --- /dev/null +++ b/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestReconciler1.java @@ -0,0 +1,32 @@ +package io.javaoperatorsdk.operator.sample.multiversioncrd; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +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; +import io.javaoperatorsdk.operator.sample.multiversioncrd.cr.MultiVersionCRDTestCustomResource1; + +import static io.javaoperatorsdk.operator.api.reconciler.Constants.NO_FINALIZER; + +@ControllerConfiguration(finalizerName = NO_FINALIZER, labelSelector = "version in (v1)") +public class MultiVersionCRDTestReconciler1 + implements Reconciler { + + private static final Logger log = LoggerFactory.getLogger(MultiVersionCRDTestReconciler1.class); + + @Override + public UpdateControl reconcile( + MultiVersionCRDTestCustomResource1 resource, Context context) { + log.info("Reconcile MultiVersionCRDTestCustomResource1: {}", + resource.getMetadata().getName()); + resource.getStatus().setValue1(resource.getStatus().getValue1() + 1); + resource.getStatus().setValue2(resource.getStatus().getValue2() + 1); + if (!resource.getStatus().getReconciledBy().contains(getClass().getSimpleName())) { + resource.getStatus().getReconciledBy().add(getClass().getSimpleName()); + } + return UpdateControl.updateStatus(resource); + } +} diff --git a/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestReconciler2.java b/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestReconciler2.java new file mode 100644 index 0000000000..4f888d271e --- /dev/null +++ b/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestReconciler2.java @@ -0,0 +1,33 @@ +package io.javaoperatorsdk.operator.sample.multiversioncrd; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +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; +import io.javaoperatorsdk.operator.sample.multiversioncrd.cr.MultiVersionCRDTestCustomResource2; + +import static io.javaoperatorsdk.operator.api.reconciler.Constants.NO_FINALIZER; + +@ControllerConfiguration( + finalizerName = NO_FINALIZER, + labelSelector = "version in (v2)") +public class MultiVersionCRDTestReconciler2 + implements Reconciler { + + private static final Logger log = LoggerFactory.getLogger(MultiVersionCRDTestReconciler2.class); + + @Override + public UpdateControl reconcile( + MultiVersionCRDTestCustomResource2 resource, Context context) { + log.info("Reconcile MultiVersionCRDTestCustomResource2: {}", + resource.getMetadata().getName()); + resource.getStatus().setValue1(resource.getStatus().getValue1() + 1); + if (!resource.getStatus().getReconciledBy().contains(getClass().getSimpleName())) { + resource.getStatus().getReconciledBy().add(getClass().getSimpleName()); + } + return UpdateControl.updateStatus(resource); + } +} diff --git a/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResource1.java b/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResource1.java new file mode 100644 index 0000000000..153a038b50 --- /dev/null +++ b/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResource1.java @@ -0,0 +1,24 @@ +package io.javaoperatorsdk.operator.sample.multiversioncrd.cr; + +import io.fabric8.kubernetes.api.model.Namespaced; +import io.fabric8.kubernetes.client.CustomResource; +import io.fabric8.kubernetes.model.annotation.Group; +import io.fabric8.kubernetes.model.annotation.Kind; +import io.fabric8.kubernetes.model.annotation.ShortNames; +import io.fabric8.kubernetes.model.annotation.Version; + +@Group("sample.javaoperatorsdk") +@Version("v1") +@Kind("MultiVersionCRDTestCustomResource") +@ShortNames("mv1") +public class MultiVersionCRDTestCustomResource1 + extends + CustomResource + implements Namespaced { + + @Override + protected MultiVersionCRDTestCustomResourceStatus1 initStatus() { + return new MultiVersionCRDTestCustomResourceStatus1(); + } + +} diff --git a/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResource2.java b/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResource2.java new file mode 100644 index 0000000000..69209950e3 --- /dev/null +++ b/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResource2.java @@ -0,0 +1,24 @@ +package io.javaoperatorsdk.operator.sample.multiversioncrd.cr; + +import io.fabric8.kubernetes.api.model.Namespaced; +import io.fabric8.kubernetes.client.CustomResource; +import io.fabric8.kubernetes.model.annotation.Group; +import io.fabric8.kubernetes.model.annotation.Kind; +import io.fabric8.kubernetes.model.annotation.ShortNames; +import io.fabric8.kubernetes.model.annotation.Version; + +@Group("sample.javaoperatorsdk") +@Version(value = "v2", storage = false) +@Kind("MultiVersionCRDTestCustomResource") +@ShortNames("mv2") +public class MultiVersionCRDTestCustomResource2 + extends + CustomResource + implements Namespaced { + + @Override + protected MultiVersionCRDTestCustomResourceStatus2 initStatus() { + return new MultiVersionCRDTestCustomResourceStatus2(); + } + +} diff --git a/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResourceSpec1.java b/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResourceSpec1.java new file mode 100644 index 0000000000..c759b7dea8 --- /dev/null +++ b/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResourceSpec1.java @@ -0,0 +1,26 @@ +package io.javaoperatorsdk.operator.sample.multiversioncrd.cr; + +public class MultiVersionCRDTestCustomResourceSpec1 { + + private int value1; + + private int value2; + + public int getValue1() { + return value1; + } + + public MultiVersionCRDTestCustomResourceSpec1 setValue1(int value1) { + this.value1 = value1; + return this; + } + + public int getValue2() { + return value2; + } + + public MultiVersionCRDTestCustomResourceSpec1 setValue2(int value2) { + this.value2 = value2; + return this; + } +} diff --git a/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResourceSpec2.java b/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResourceSpec2.java new file mode 100644 index 0000000000..c358dbc6cb --- /dev/null +++ b/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResourceSpec2.java @@ -0,0 +1,15 @@ +package io.javaoperatorsdk.operator.sample.multiversioncrd.cr; + +public class MultiVersionCRDTestCustomResourceSpec2 { + + private int value1; + + public int getValue1() { + return value1; + } + + public MultiVersionCRDTestCustomResourceSpec2 setValue1(int value1) { + this.value1 = value1; + return this; + } +} diff --git a/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResourceStatus1.java b/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResourceStatus1.java new file mode 100644 index 0000000000..5eaa8df0c1 --- /dev/null +++ b/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResourceStatus1.java @@ -0,0 +1,40 @@ +package io.javaoperatorsdk.operator.sample.multiversioncrd.cr; + +import java.util.ArrayList; +import java.util.List; + +public class MultiVersionCRDTestCustomResourceStatus1 { + + private int value1; + + private int value2; + + private List reconciledBy = new ArrayList<>(); + + public int getValue1() { + return value1; + } + + public MultiVersionCRDTestCustomResourceStatus1 setValue1(int value1) { + this.value1 = value1; + return this; + } + + public int getValue2() { + return value2; + } + + public MultiVersionCRDTestCustomResourceStatus1 setValue2(int value2) { + this.value2 = value2; + return this; + } + + public List getReconciledBy() { + return reconciledBy; + } + + public MultiVersionCRDTestCustomResourceStatus1 setReconciledBy(List reconciledBy) { + this.reconciledBy = reconciledBy; + return this; + } +} diff --git a/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResourceStatus2.java b/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResourceStatus2.java new file mode 100644 index 0000000000..fda27dda59 --- /dev/null +++ b/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResourceStatus2.java @@ -0,0 +1,29 @@ +package io.javaoperatorsdk.operator.sample.multiversioncrd.cr; + +import java.util.ArrayList; +import java.util.List; + +public class MultiVersionCRDTestCustomResourceStatus2 { + + private int value1; + + private List reconciledBy = new ArrayList<>(); + + public int getValue1() { + return value1; + } + + public MultiVersionCRDTestCustomResourceStatus2 setValue1(int value1) { + this.value1 = value1; + return this; + } + + public List getReconciledBy() { + return reconciledBy; + } + + public MultiVersionCRDTestCustomResourceStatus2 setReconciledBy(List reconciledBy) { + this.reconciledBy = reconciledBy; + return this; + } +} diff --git a/smoke-test-samples/multi-version-crd/src/main/resources/log4j2.xml b/smoke-test-samples/multi-version-crd/src/main/resources/log4j2.xml new file mode 100644 index 0000000000..ab0332a10f --- /dev/null +++ b/smoke-test-samples/multi-version-crd/src/main/resources/log4j2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/smoke-test-samples/multi-version-crd/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDOperatorIT.java b/smoke-test-samples/multi-version-crd/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDOperatorIT.java new file mode 100644 index 0000000000..0e44f6e819 --- /dev/null +++ b/smoke-test-samples/multi-version-crd/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDOperatorIT.java @@ -0,0 +1,12 @@ +package io.javaoperatorsdk.operator.sample.multiversioncrd; + +import org.junit.jupiter.api.Test; + +class MultiVersionCRDOperatorIT { + + @Test + void multipleCRDVersions() { + // todo + } + +} diff --git a/smoke-test-samples/pom.xml b/smoke-test-samples/pom.xml index 3dcdb530c7..df5237899f 100644 --- a/smoke-test-samples/pom.xml +++ b/smoke-test-samples/pom.xml @@ -18,6 +18,7 @@ common pure-java spring-boot-plain + multi-version-crd From c3f6c1f3a5ca6259a97fa1461e4d35b6ce9aeb2b Mon Sep 17 00:00:00 2001 From: csviri Date: Thu, 27 Jan 2022 18:12:20 +0100 Subject: [PATCH 2/7] fix:format --- .../java/io/javaoperatorsdk/operator/Operator.java | 12 ++++++------ .../MultiVersionCRDTestReconciler2.java | 2 +- .../multiversioncrd/MultiVersionCRDOperatorIT.java | 8 ++++---- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/Operator.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/Operator.java index d5162ce53f..f7f9f25646 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/Operator.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/Operator.java @@ -181,12 +181,12 @@ public synchronized void stop() { public synchronized void add(Controller controller) { final var configuration = controller.getConfiguration(); final var resourceTypeName = configuration.getResourceTypeName(); -// final var existing = controllers.get(resourceTypeName); -// if (existing != null) { -// throw new OperatorException("Cannot register controller '" + configuration.getName() -// + "': another controller named '" + existing.getConfiguration().getName() -// + "' is already registered for resource '" + resourceTypeName + "'"); -// } + // final var existing = controllers.get(resourceTypeName); + // if (existing != null) { + // throw new OperatorException("Cannot register controller '" + configuration.getName() + // + "': another controller named '" + existing.getConfiguration().getName() + // + "' is already registered for resource '" + resourceTypeName + "'"); + // } this.controllers.put(resourceTypeName, controller); if (started) { controller.start(); diff --git a/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestReconciler2.java b/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestReconciler2.java index 4f888d271e..bdb7c21d3e 100644 --- a/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestReconciler2.java +++ b/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestReconciler2.java @@ -13,7 +13,7 @@ @ControllerConfiguration( finalizerName = NO_FINALIZER, - labelSelector = "version in (v2)") + labelSelector = "version in (v2)") public class MultiVersionCRDTestReconciler2 implements Reconciler { diff --git a/smoke-test-samples/multi-version-crd/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDOperatorIT.java b/smoke-test-samples/multi-version-crd/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDOperatorIT.java index 0e44f6e819..f5a4dbd266 100644 --- a/smoke-test-samples/multi-version-crd/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDOperatorIT.java +++ b/smoke-test-samples/multi-version-crd/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDOperatorIT.java @@ -4,9 +4,9 @@ class MultiVersionCRDOperatorIT { - @Test - void multipleCRDVersions() { - // todo - } + @Test + void multipleCRDVersions() { + // todo + } } From 1e9b39a6b8f9f0729aaf8bcf815b04cf704bb9cc Mon Sep 17 00:00:00 2001 From: csviri Date: Fri, 28 Jan 2022 10:34:59 +0100 Subject: [PATCH 3/7] fix: build and test andjustments --- .../io/javaoperatorsdk/operator/Operator.java | 15 ++++++++------- .../operator/ControllerManagerTest.java | 10 +++++----- ...erV2.java => TestCustomReconcilerOtherV1.java} | 4 ++-- ...urceV2.java => TestCustomResourceOtherV1.java} | 4 ++-- 4 files changed, 17 insertions(+), 16 deletions(-) rename operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/{TestCustomReconcilerV2.java => TestCustomReconcilerOtherV1.java} (69%) rename operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/{TestCustomResourceV2.java => TestCustomResourceOtherV1.java} (89%) diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/Operator.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/Operator.java index f7f9f25646..5f71ec2747 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/Operator.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/Operator.java @@ -180,13 +180,14 @@ public synchronized void stop() { public synchronized void add(Controller controller) { final var configuration = controller.getConfiguration(); - final var resourceTypeName = configuration.getResourceTypeName(); - // final var existing = controllers.get(resourceTypeName); - // if (existing != null) { - // throw new OperatorException("Cannot register controller '" + configuration.getName() - // + "': another controller named '" + existing.getConfiguration().getName() - // + "' is already registered for resource '" + resourceTypeName + "'"); - // } + final var resourceTypeName = ReconcilerUtils + .getResourceTypeNameWithVersion(configuration.getResourceClass()); + final var existing = controllers.get(resourceTypeName); + if (existing != null) { + throw new OperatorException("Cannot register controller '" + configuration.getName() + + "': another controller named '" + existing.getConfiguration().getName() + + "' is already registered for resource '" + resourceTypeName + "'"); + } this.controllers.put(resourceTypeName, controller); if (started) { controller.start(); diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/ControllerManagerTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/ControllerManagerTest.java index a1cfa3e82d..724c964d88 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/ControllerManagerTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/ControllerManagerTest.java @@ -10,9 +10,9 @@ import io.javaoperatorsdk.operator.processing.Controller; import io.javaoperatorsdk.operator.sample.simple.DuplicateCRController; import io.javaoperatorsdk.operator.sample.simple.TestCustomReconciler; -import io.javaoperatorsdk.operator.sample.simple.TestCustomReconcilerV2; +import io.javaoperatorsdk.operator.sample.simple.TestCustomReconcilerOtherV1; import io.javaoperatorsdk.operator.sample.simple.TestCustomResource; -import io.javaoperatorsdk.operator.sample.simple.TestCustomResourceV2; +import io.javaoperatorsdk.operator.sample.simple.TestCustomResourceOtherV1; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -30,11 +30,11 @@ public void shouldNotAddMultipleControllersForSameCustomResource() { } @Test - public void addingMultipleControllersForCustomResourcesWithDifferentVersionsShouldNotWork() { + public void addingMultipleControllersForCustomResourcesWithSameVersionsShouldNotWork() { final var registered = new TestControllerConfiguration<>(new TestCustomReconciler(null), TestCustomResource.class); - final var duplicated = new TestControllerConfiguration<>(new TestCustomReconcilerV2(), - TestCustomResourceV2.class); + final var duplicated = new TestControllerConfiguration<>(new TestCustomReconcilerOtherV1(), + TestCustomResourceOtherV1.class); checkException(registered, duplicated); } diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomReconcilerV2.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomReconcilerOtherV1.java similarity index 69% rename from operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomReconcilerV2.java rename to operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomReconcilerOtherV1.java index bab22f309a..9a45fbbf93 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomReconcilerV2.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomReconcilerOtherV1.java @@ -6,10 +6,10 @@ import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; @ControllerConfiguration -public class TestCustomReconcilerV2 implements Reconciler { +public class TestCustomReconcilerOtherV1 implements Reconciler { @Override - public UpdateControl reconcile(TestCustomResourceV2 resource, + public UpdateControl reconcile(TestCustomResourceOtherV1 resource, Context context) { return UpdateControl.noUpdate(); } diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomResourceV2.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomResourceOtherV1.java similarity index 89% rename from operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomResourceV2.java rename to operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomResourceOtherV1.java index d4c71e0662..f768ba491f 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomResourceV2.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomResourceOtherV1.java @@ -6,9 +6,9 @@ import io.fabric8.kubernetes.model.annotation.Version; @Group("sample.javaoperatorsdk.io") -@Version("v2") +@Version("v1") @Kind("TestCustomResource") // this is needed to override the automatically generated kind -public class TestCustomResourceV2 +public class TestCustomResourceOtherV1 extends CustomResource { } From 1d404133bde1d5ef630b1a2f7265eb90f622c529 Mon Sep 17 00:00:00 2001 From: csviri Date: Fri, 28 Jan 2022 10:49:34 +0100 Subject: [PATCH 4/7] fix: sonar issue --- .../main/java/io/javaoperatorsdk/operator/ReconcilerUtils.java | 1 - 1 file changed, 1 deletion(-) diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/ReconcilerUtils.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/ReconcilerUtils.java index 6a788a96b8..e3a6da1e5a 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/ReconcilerUtils.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/ReconcilerUtils.java @@ -49,7 +49,6 @@ public static String getResourceTypeName( Class resourceClass) { final var group = HasMetadata.getGroup(resourceClass); final var plural = HasMetadata.getPlural(resourceClass); - final var version = HasMetadata.getVersion(resourceClass); return (group == null || group.isEmpty()) ? plural : plural + "." + group; } From 68d7f727c8271ceea5aae357af5692c993b8a8b8 Mon Sep 17 00:00:00 2001 From: csviri Date: Fri, 28 Jan 2022 13:24:52 +0100 Subject: [PATCH 5/7] fix: sample on no label selector --- smoke-test-samples/multi-version-crd/k8s/crv1.yaml | 2 -- .../sample/multiversioncrd/MultiVersionCRDTestReconciler1.java | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/smoke-test-samples/multi-version-crd/k8s/crv1.yaml b/smoke-test-samples/multi-version-crd/k8s/crv1.yaml index 2109bec873..7b6bdd4d60 100644 --- a/smoke-test-samples/multi-version-crd/k8s/crv1.yaml +++ b/smoke-test-samples/multi-version-crd/k8s/crv1.yaml @@ -2,8 +2,6 @@ apiVersion: "sample.javaoperatorsdk/v1" kind: MultiVersionCRDTestCustomResource metadata: name: mvcv1 - labels: - version: v1 spec: value1: 1 value2: 2 diff --git a/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestReconciler1.java b/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestReconciler1.java index d1b17e9e85..bd4efe2b3e 100644 --- a/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestReconciler1.java +++ b/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestReconciler1.java @@ -11,7 +11,7 @@ import static io.javaoperatorsdk.operator.api.reconciler.Constants.NO_FINALIZER; -@ControllerConfiguration(finalizerName = NO_FINALIZER, labelSelector = "version in (v1)") +@ControllerConfiguration(finalizerName = NO_FINALIZER, labelSelector = "!version") public class MultiVersionCRDTestReconciler1 implements Reconciler { From 9812af5c6b948aa1000eb32fd0c27f131ce0f85d Mon Sep 17 00:00:00 2001 From: csviri Date: Fri, 28 Jan 2022 14:04:46 +0100 Subject: [PATCH 6/7] fix: moved sample as IT --- .../operator/MultiVersionCRDIT.java | 67 +++++++++++++++++++ .../MultiVersionCRDTestCustomResource1.java | 2 +- .../MultiVersionCRDTestCustomResource2.java | 2 +- ...ultiVersionCRDTestCustomResourceSpec1.java | 2 +- ...ultiVersionCRDTestCustomResourceSpec2.java | 2 +- ...tiVersionCRDTestCustomResourceStatus1.java | 2 +- ...tiVersionCRDTestCustomResourceStatus2.java | 2 +- .../MultiVersionCRDTestReconciler1.java | 1 - .../MultiVersionCRDTestReconciler2.java | 1 - .../multi-version-crd/README.md | 11 --- .../multi-version-crd/k8s/crv1.yaml | 7 -- .../multi-version-crd/k8s/crv2.yaml | 8 --- smoke-test-samples/multi-version-crd/pom.xml | 48 ------------- .../MultiVersionCRDOperator.java | 17 ----- .../src/main/resources/log4j2.xml | 13 ---- .../MultiVersionCRDOperatorIT.java | 12 ---- smoke-test-samples/pom.xml | 1 - 17 files changed, 73 insertions(+), 125 deletions(-) create mode 100644 operator-framework/src/test/java/io/javaoperatorsdk/operator/MultiVersionCRDIT.java rename {smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr => operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd}/MultiVersionCRDTestCustomResource1.java (92%) rename {smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr => operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd}/MultiVersionCRDTestCustomResource2.java (92%) rename {smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr => operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd}/MultiVersionCRDTestCustomResourceSpec1.java (87%) rename {smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr => operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd}/MultiVersionCRDTestCustomResourceSpec2.java (79%) rename {smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr => operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd}/MultiVersionCRDTestCustomResourceStatus1.java (92%) rename {smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr => operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd}/MultiVersionCRDTestCustomResourceStatus2.java (90%) rename {smoke-test-samples/multi-version-crd/src/main => operator-framework/src/test}/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestReconciler1.java (93%) rename {smoke-test-samples/multi-version-crd/src/main => operator-framework/src/test}/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestReconciler2.java (93%) delete mode 100644 smoke-test-samples/multi-version-crd/README.md delete mode 100644 smoke-test-samples/multi-version-crd/k8s/crv1.yaml delete mode 100644 smoke-test-samples/multi-version-crd/k8s/crv2.yaml delete mode 100644 smoke-test-samples/multi-version-crd/pom.xml delete mode 100644 smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDOperator.java delete mode 100644 smoke-test-samples/multi-version-crd/src/main/resources/log4j2.xml delete mode 100644 smoke-test-samples/multi-version-crd/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDOperatorIT.java diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/MultiVersionCRDIT.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/MultiVersionCRDIT.java new file mode 100644 index 0000000000..143f6990b7 --- /dev/null +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/MultiVersionCRDIT.java @@ -0,0 +1,67 @@ +package io.javaoperatorsdk.operator; + +import io.fabric8.kubernetes.api.model.ObjectMeta; +import io.javaoperatorsdk.operator.sample.multiversioncrd.*; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; + +import io.javaoperatorsdk.operator.config.runtime.DefaultConfigurationService; +import io.javaoperatorsdk.operator.junit.OperatorExtension; + +import java.time.Duration; +import java.util.HashMap; + +import static org.awaitility.Awaitility.await; + +class MultiVersionCRDIT { + + public static final String CR_V1_NAME = "crv1"; + public static final String CR_V2_NAME = "crv2"; + @RegisterExtension + OperatorExtension operator = + OperatorExtension.builder() + .withConfigurationService(DefaultConfigurationService.instance()) + .withReconciler(MultiVersionCRDTestReconciler1.class) + .withReconciler(MultiVersionCRDTestReconciler2.class) + .build(); + + @Test + void multipleCRDVersions() { + operator.create(MultiVersionCRDTestCustomResource1.class, createTestResourceV1WithoutLabel()); + operator.create(MultiVersionCRDTestCustomResource2.class, createTestResourceV2WithLabel()); + + await() + .atMost(Duration.ofSeconds(2)) + .pollInterval(Duration.ofMillis(50)) + .until( + () -> { + var crV1Now = operator.get(MultiVersionCRDTestCustomResource1.class, CR_V1_NAME); + var crV2Now = operator.get(MultiVersionCRDTestCustomResource2.class, CR_V2_NAME); + return crV1Now.getStatus().getReconciledBy().size() == 1 + && crV1Now.getStatus().getReconciledBy().contains(MultiVersionCRDTestReconciler1.class.getSimpleName()) + && crV2Now.getStatus().getReconciledBy().size() == 1 + && crV2Now.getStatus().getReconciledBy().contains(MultiVersionCRDTestReconciler2.class.getSimpleName()); + }); + } + + MultiVersionCRDTestCustomResource1 createTestResourceV1WithoutLabel() { + MultiVersionCRDTestCustomResource1 cr = new MultiVersionCRDTestCustomResource1(); + cr.setMetadata(new ObjectMeta()); + cr.getMetadata().setName(CR_V1_NAME); + cr.setSpec(new MultiVersionCRDTestCustomResourceSpec1()); + cr.getSpec().setValue1(1); + cr.getSpec().setValue2(1); + return cr; + } + + MultiVersionCRDTestCustomResource2 createTestResourceV2WithLabel() { + MultiVersionCRDTestCustomResource2 cr = new MultiVersionCRDTestCustomResource2(); + cr.setMetadata(new ObjectMeta()); + cr.getMetadata().setName(CR_V2_NAME); + cr.getMetadata().setLabels(new HashMap<>()); + cr.getMetadata().getLabels().put("version", "v2"); + cr.setSpec(new MultiVersionCRDTestCustomResourceSpec2()); + cr.getSpec().setValue1(1); + return cr; + } +} diff --git a/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResource1.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestCustomResource1.java similarity index 92% rename from smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResource1.java rename to operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestCustomResource1.java index 153a038b50..10236563c7 100644 --- a/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResource1.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestCustomResource1.java @@ -1,4 +1,4 @@ -package io.javaoperatorsdk.operator.sample.multiversioncrd.cr; +package io.javaoperatorsdk.operator.sample.multiversioncrd; import io.fabric8.kubernetes.api.model.Namespaced; import io.fabric8.kubernetes.client.CustomResource; diff --git a/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResource2.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestCustomResource2.java similarity index 92% rename from smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResource2.java rename to operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestCustomResource2.java index 69209950e3..de0a804049 100644 --- a/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResource2.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestCustomResource2.java @@ -1,4 +1,4 @@ -package io.javaoperatorsdk.operator.sample.multiversioncrd.cr; +package io.javaoperatorsdk.operator.sample.multiversioncrd; import io.fabric8.kubernetes.api.model.Namespaced; import io.fabric8.kubernetes.client.CustomResource; diff --git a/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResourceSpec1.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestCustomResourceSpec1.java similarity index 87% rename from smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResourceSpec1.java rename to operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestCustomResourceSpec1.java index c759b7dea8..20759eef76 100644 --- a/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResourceSpec1.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestCustomResourceSpec1.java @@ -1,4 +1,4 @@ -package io.javaoperatorsdk.operator.sample.multiversioncrd.cr; +package io.javaoperatorsdk.operator.sample.multiversioncrd; public class MultiVersionCRDTestCustomResourceSpec1 { diff --git a/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResourceSpec2.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestCustomResourceSpec2.java similarity index 79% rename from smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResourceSpec2.java rename to operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestCustomResourceSpec2.java index c358dbc6cb..e97d110673 100644 --- a/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResourceSpec2.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestCustomResourceSpec2.java @@ -1,4 +1,4 @@ -package io.javaoperatorsdk.operator.sample.multiversioncrd.cr; +package io.javaoperatorsdk.operator.sample.multiversioncrd; public class MultiVersionCRDTestCustomResourceSpec2 { diff --git a/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResourceStatus1.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestCustomResourceStatus1.java similarity index 92% rename from smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResourceStatus1.java rename to operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestCustomResourceStatus1.java index 5eaa8df0c1..535292c33f 100644 --- a/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResourceStatus1.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestCustomResourceStatus1.java @@ -1,4 +1,4 @@ -package io.javaoperatorsdk.operator.sample.multiversioncrd.cr; +package io.javaoperatorsdk.operator.sample.multiversioncrd; import java.util.ArrayList; import java.util.List; diff --git a/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResourceStatus2.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestCustomResourceStatus2.java similarity index 90% rename from smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResourceStatus2.java rename to operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestCustomResourceStatus2.java index fda27dda59..5df57ef76d 100644 --- a/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/cr/MultiVersionCRDTestCustomResourceStatus2.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestCustomResourceStatus2.java @@ -1,4 +1,4 @@ -package io.javaoperatorsdk.operator.sample.multiversioncrd.cr; +package io.javaoperatorsdk.operator.sample.multiversioncrd; import java.util.ArrayList; import java.util.List; diff --git a/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestReconciler1.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestReconciler1.java similarity index 93% rename from smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestReconciler1.java rename to operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestReconciler1.java index bd4efe2b3e..a8f58971b3 100644 --- a/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestReconciler1.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestReconciler1.java @@ -7,7 +7,6 @@ import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; -import io.javaoperatorsdk.operator.sample.multiversioncrd.cr.MultiVersionCRDTestCustomResource1; import static io.javaoperatorsdk.operator.api.reconciler.Constants.NO_FINALIZER; diff --git a/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestReconciler2.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestReconciler2.java similarity index 93% rename from smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestReconciler2.java rename to operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestReconciler2.java index bdb7c21d3e..d25297d1c6 100644 --- a/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestReconciler2.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDTestReconciler2.java @@ -7,7 +7,6 @@ import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; -import io.javaoperatorsdk.operator.sample.multiversioncrd.cr.MultiVersionCRDTestCustomResource2; import static io.javaoperatorsdk.operator.api.reconciler.Constants.NO_FINALIZER; diff --git a/smoke-test-samples/multi-version-crd/README.md b/smoke-test-samples/multi-version-crd/README.md deleted file mode 100644 index 3e4e334ade..0000000000 --- a/smoke-test-samples/multi-version-crd/README.md +++ /dev/null @@ -1,11 +0,0 @@ -## Description - -This sample shows how to use CRD with multiple versions. - -## How-to - -For getting the resource with target version use: - -`k get MultiVersionCRDTestCustomResource.v1.sample.javaoperatorsdk mvcv1 -o yaml` - -`k get MultiVersionCRDTestCustomResource.v2.sample.javaoperatorsdk mvcv1 -o yaml` \ No newline at end of file diff --git a/smoke-test-samples/multi-version-crd/k8s/crv1.yaml b/smoke-test-samples/multi-version-crd/k8s/crv1.yaml deleted file mode 100644 index 7b6bdd4d60..0000000000 --- a/smoke-test-samples/multi-version-crd/k8s/crv1.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: "sample.javaoperatorsdk/v1" -kind: MultiVersionCRDTestCustomResource -metadata: - name: mvcv1 -spec: - value1: 1 - value2: 2 diff --git a/smoke-test-samples/multi-version-crd/k8s/crv2.yaml b/smoke-test-samples/multi-version-crd/k8s/crv2.yaml deleted file mode 100644 index 1f9e13d798..0000000000 --- a/smoke-test-samples/multi-version-crd/k8s/crv2.yaml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: "sample.javaoperatorsdk/v2" -kind: MultiVersionCRDTestCustomResource -metadata: - name: mvcv2 - labels: - version: v2 -spec: - value1: 1 diff --git a/smoke-test-samples/multi-version-crd/pom.xml b/smoke-test-samples/multi-version-crd/pom.xml deleted file mode 100644 index cb85d769bb..0000000000 --- a/smoke-test-samples/multi-version-crd/pom.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - 4.0.0 - - - io.javaoperatorsdk - java-operator-sdk-smoke-test-samples - 2.0.3-SNAPSHOT - - - operator-framework-smoke-test-samples-multi-version-crd - Operator SDK - Smoke Test Samples - Multi Version CRD - Sample usage with pure java app - jar - - - - io.javaoperatorsdk - operator-framework - compile - - - org.apache.logging.log4j - log4j-slf4j-impl - - - org.apache.logging.log4j - log4j-core - - - io.fabric8 - crd-generator-apt - compile - - - org.junit.jupiter - junit-jupiter-api - test - - - org.junit.jupiter - junit-jupiter-engine - test - - - - diff --git a/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDOperator.java b/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDOperator.java deleted file mode 100644 index 5bd99749d6..0000000000 --- a/smoke-test-samples/multi-version-crd/src/main/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDOperator.java +++ /dev/null @@ -1,17 +0,0 @@ -package io.javaoperatorsdk.operator.sample.multiversioncrd; - -import io.javaoperatorsdk.operator.Operator; -import io.javaoperatorsdk.operator.api.config.ConfigurationServiceOverrider; -import io.javaoperatorsdk.operator.config.runtime.DefaultConfigurationService; - -public class MultiVersionCRDOperator { - - public static void main(String[] args) { - Operator operator = - new Operator( - ConfigurationServiceOverrider.override(DefaultConfigurationService.instance()).build()); - operator.register(new MultiVersionCRDTestReconciler1()); - operator.register(new MultiVersionCRDTestReconciler2()); - operator.start(); - } -} diff --git a/smoke-test-samples/multi-version-crd/src/main/resources/log4j2.xml b/smoke-test-samples/multi-version-crd/src/main/resources/log4j2.xml deleted file mode 100644 index ab0332a10f..0000000000 --- a/smoke-test-samples/multi-version-crd/src/main/resources/log4j2.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/smoke-test-samples/multi-version-crd/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDOperatorIT.java b/smoke-test-samples/multi-version-crd/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDOperatorIT.java deleted file mode 100644 index f5a4dbd266..0000000000 --- a/smoke-test-samples/multi-version-crd/src/test/java/io/javaoperatorsdk/operator/sample/multiversioncrd/MultiVersionCRDOperatorIT.java +++ /dev/null @@ -1,12 +0,0 @@ -package io.javaoperatorsdk.operator.sample.multiversioncrd; - -import org.junit.jupiter.api.Test; - -class MultiVersionCRDOperatorIT { - - @Test - void multipleCRDVersions() { - // todo - } - -} diff --git a/smoke-test-samples/pom.xml b/smoke-test-samples/pom.xml index df5237899f..3dcdb530c7 100644 --- a/smoke-test-samples/pom.xml +++ b/smoke-test-samples/pom.xml @@ -18,7 +18,6 @@ common pure-java spring-boot-plain - multi-version-crd From c3cd430351311bf3f561a4e58f2dde29e0c4aaa0 Mon Sep 17 00:00:00 2001 From: csviri Date: Fri, 28 Jan 2022 14:13:48 +0100 Subject: [PATCH 7/7] fix: format --- .../operator/MultiVersionCRDIT.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/MultiVersionCRDIT.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/MultiVersionCRDIT.java index 143f6990b7..b417c53e6e 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/MultiVersionCRDIT.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/MultiVersionCRDIT.java @@ -1,15 +1,15 @@ package io.javaoperatorsdk.operator; -import io.fabric8.kubernetes.api.model.ObjectMeta; -import io.javaoperatorsdk.operator.sample.multiversioncrd.*; +import java.time.Duration; +import java.util.HashMap; + import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; +import io.fabric8.kubernetes.api.model.ObjectMeta; import io.javaoperatorsdk.operator.config.runtime.DefaultConfigurationService; import io.javaoperatorsdk.operator.junit.OperatorExtension; - -import java.time.Duration; -import java.util.HashMap; +import io.javaoperatorsdk.operator.sample.multiversioncrd.*; import static org.awaitility.Awaitility.await; @@ -38,9 +38,11 @@ void multipleCRDVersions() { var crV1Now = operator.get(MultiVersionCRDTestCustomResource1.class, CR_V1_NAME); var crV2Now = operator.get(MultiVersionCRDTestCustomResource2.class, CR_V2_NAME); return crV1Now.getStatus().getReconciledBy().size() == 1 - && crV1Now.getStatus().getReconciledBy().contains(MultiVersionCRDTestReconciler1.class.getSimpleName()) - && crV2Now.getStatus().getReconciledBy().size() == 1 - && crV2Now.getStatus().getReconciledBy().contains(MultiVersionCRDTestReconciler2.class.getSimpleName()); + && crV1Now.getStatus().getReconciledBy() + .contains(MultiVersionCRDTestReconciler1.class.getSimpleName()) + && crV2Now.getStatus().getReconciledBy().size() == 1 + && crV2Now.getStatus().getReconciledBy() + .contains(MultiVersionCRDTestReconciler2.class.getSimpleName()); }); }