diff --git a/build-parent/pom.xml b/build-parent/pom.xml index b60a47949..ed45048a9 100644 --- a/build-parent/pom.xml +++ b/build-parent/pom.xml @@ -77,6 +77,11 @@ maven-surefire-plugin ${surefire-plugin.version} + + + ${project.version} + + diff --git a/integration-tests/pom.xml b/core/integration-tests/pom.xml similarity index 92% rename from integration-tests/pom.xml rename to core/integration-tests/pom.xml index a82e9b99d..5c7f207b7 100644 --- a/integration-tests/pom.xml +++ b/core/integration-tests/pom.xml @@ -3,9 +3,8 @@ 4.0.0 io.quarkiverse.operatorsdk - quarkus-operator-sdk-build-parent + quarkus-operator-sdk-core-parent 4.0.0-SNAPSHOT - ../build-parent/pom.xml quarkus-operator-sdk-integration-tests Quarkus - Operator SDK - Integration Tests @@ -21,10 +20,6 @@ io.quarkiverse.operatorsdk quarkus-operator-sdk - - - io.quarkiverse.operatorsdk - quarkus-operator-sdk-bundle-generator io.quarkus @@ -54,6 +49,11 @@ bcpkix-jdk15on true + + io.quarkus + quarkus-devtools-testing + test + diff --git a/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/ApplicationScopedReconciler.java b/core/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/ApplicationScopedReconciler.java similarity index 100% rename from integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/ApplicationScopedReconciler.java rename to core/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/ApplicationScopedReconciler.java diff --git a/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/CRUDDependentResource.java b/core/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/CRUDDependentResource.java similarity index 100% rename from integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/CRUDDependentResource.java rename to core/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/CRUDDependentResource.java diff --git a/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/ChildTestResource.java b/core/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/ChildTestResource.java similarity index 100% rename from integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/ChildTestResource.java rename to core/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/ChildTestResource.java diff --git a/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/ChildTestResource2.java b/core/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/ChildTestResource2.java similarity index 100% rename from integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/ChildTestResource2.java rename to core/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/ChildTestResource2.java diff --git a/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/ConfiguredReconciler.java b/core/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/ConfiguredReconciler.java similarity index 100% rename from integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/ConfiguredReconciler.java rename to core/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/ConfiguredReconciler.java diff --git a/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/DependentDefiningReconciler.java b/core/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/DependentDefiningReconciler.java similarity index 100% rename from integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/DependentDefiningReconciler.java rename to core/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/DependentDefiningReconciler.java diff --git a/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/GatewayReconciler.java b/core/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/GatewayReconciler.java similarity index 100% rename from integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/GatewayReconciler.java rename to core/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/GatewayReconciler.java diff --git a/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/IgnoredByAnnotationReconciler.java b/core/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/IgnoredByAnnotationReconciler.java similarity index 100% rename from integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/IgnoredByAnnotationReconciler.java rename to core/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/IgnoredByAnnotationReconciler.java diff --git a/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/NamespaceFromEnvReconciler.java b/core/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/NamespaceFromEnvReconciler.java similarity index 100% rename from integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/NamespaceFromEnvReconciler.java rename to core/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/NamespaceFromEnvReconciler.java diff --git a/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/OperatorSDKResource.java b/core/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/OperatorSDKResource.java similarity index 100% rename from integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/OperatorSDKResource.java rename to core/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/OperatorSDKResource.java diff --git a/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/ReadOnlyDependentResource.java b/core/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/ReadOnlyDependentResource.java similarity index 100% rename from integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/ReadOnlyDependentResource.java rename to core/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/ReadOnlyDependentResource.java diff --git a/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/SecretReconciler.java b/core/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/SecretReconciler.java similarity index 100% rename from integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/SecretReconciler.java rename to core/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/SecretReconciler.java diff --git a/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/ShouldBeIgnoredReconciler.java b/core/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/ShouldBeIgnoredReconciler.java similarity index 100% rename from integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/ShouldBeIgnoredReconciler.java rename to core/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/ShouldBeIgnoredReconciler.java diff --git a/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/ShouldBeIgnoredReconciler2.java b/core/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/ShouldBeIgnoredReconciler2.java similarity index 100% rename from integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/ShouldBeIgnoredReconciler2.java rename to core/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/ShouldBeIgnoredReconciler2.java diff --git a/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/Test.java b/core/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/Test.java similarity index 100% rename from integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/Test.java rename to core/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/Test.java diff --git a/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/TestReconciler.java b/core/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/TestReconciler.java similarity index 100% rename from integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/TestReconciler.java rename to core/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/TestReconciler.java diff --git a/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/TestResource.java b/core/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/TestResource.java similarity index 100% rename from integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/TestResource.java rename to core/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/TestResource.java diff --git a/integration-tests/src/main/resources/application.properties b/core/integration-tests/src/main/resources/application.properties similarity index 100% rename from integration-tests/src/main/resources/application.properties rename to core/integration-tests/src/main/resources/application.properties diff --git a/integration-tests/src/test/java/io/quarkiverse/operatorsdk/it/CustomKubernetesServerTestResource.java b/core/integration-tests/src/test/java/io/quarkiverse/operatorsdk/it/CustomKubernetesServerTestResource.java similarity index 100% rename from integration-tests/src/test/java/io/quarkiverse/operatorsdk/it/CustomKubernetesServerTestResource.java rename to core/integration-tests/src/test/java/io/quarkiverse/operatorsdk/it/CustomKubernetesServerTestResource.java diff --git a/integration-tests/src/test/java/io/quarkiverse/operatorsdk/it/NativeOperatorSDKResourceIT.java b/core/integration-tests/src/test/java/io/quarkiverse/operatorsdk/it/NativeOperatorSDKResourceIT.java similarity index 100% rename from integration-tests/src/test/java/io/quarkiverse/operatorsdk/it/NativeOperatorSDKResourceIT.java rename to core/integration-tests/src/test/java/io/quarkiverse/operatorsdk/it/NativeOperatorSDKResourceIT.java diff --git a/core/integration-tests/src/test/java/io/quarkiverse/operatorsdk/it/OperatorSDKCodestartTest.java b/core/integration-tests/src/test/java/io/quarkiverse/operatorsdk/it/OperatorSDKCodestartTest.java new file mode 100644 index 000000000..d1a6c0c8f --- /dev/null +++ b/core/integration-tests/src/test/java/io/quarkiverse/operatorsdk/it/OperatorSDKCodestartTest.java @@ -0,0 +1,32 @@ +package io.quarkiverse.operatorsdk.it; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; + +import io.quarkus.devtools.codestarts.quarkus.QuarkusCodestartCatalog.Language; +import io.quarkus.devtools.testing.codestarts.QuarkusCodestartTest; +import io.quarkus.maven.ArtifactCoords; + +public class OperatorSDKCodestartTest { + + @RegisterExtension + static QuarkusCodestartTest codestartTest = QuarkusCodestartTest.builder() + .standaloneExtensionCatalog() + .extension(ArtifactCoords + .fromString("io.quarkiverse.operatorsdk:quarkus-operator-sdk:" + System.getProperty("project.version"))) + .languages(Language.JAVA) + .build(); + + @Test + void testContent() throws Throwable { + codestartTest.checkGeneratedSource("org.acme.MyCustomResourceReconciler"); + codestartTest.checkGeneratedSource("org.acme.MyCustomResource"); + codestartTest.checkGeneratedSource("org.acme.MyCustomResourceSpec"); + codestartTest.checkGeneratedSource("org.acme.MyCustomResourceStatus"); + } + + @Test + void testBuild() throws Throwable { + codestartTest.buildAllProjects(); + } +} diff --git a/integration-tests/src/test/java/io/quarkiverse/operatorsdk/it/OperatorSDKResourceTest.java b/core/integration-tests/src/test/java/io/quarkiverse/operatorsdk/it/OperatorSDKResourceTest.java similarity index 100% rename from integration-tests/src/test/java/io/quarkiverse/operatorsdk/it/OperatorSDKResourceTest.java rename to core/integration-tests/src/test/java/io/quarkiverse/operatorsdk/it/OperatorSDKResourceTest.java diff --git a/core/integration-tests/src/test/resources/__snapshots__/OperatorSDKCodestartTest/testContent/src_main_java_ilove_quark_us_MyCustomResource.java b/core/integration-tests/src/test/resources/__snapshots__/OperatorSDKCodestartTest/testContent/src_main_java_ilove_quark_us_MyCustomResource.java new file mode 100644 index 000000000..f9b61a6cb --- /dev/null +++ b/core/integration-tests/src/test/resources/__snapshots__/OperatorSDKCodestartTest/testContent/src_main_java_ilove_quark_us_MyCustomResource.java @@ -0,0 +1,7 @@ +package ilove.quark.us; + +import io.fabric8.kubernetes.client.CustomResource; + +public class MyCustomResource extends CustomResource { + +} diff --git a/core/integration-tests/src/test/resources/__snapshots__/OperatorSDKCodestartTest/testContent/src_main_java_ilove_quark_us_MyCustomResourceReconciler.java b/core/integration-tests/src/test/resources/__snapshots__/OperatorSDKCodestartTest/testContent/src_main_java_ilove_quark_us_MyCustomResourceReconciler.java new file mode 100644 index 000000000..78a837c85 --- /dev/null +++ b/core/integration-tests/src/test/resources/__snapshots__/OperatorSDKCodestartTest/testContent/src_main_java_ilove_quark_us_MyCustomResourceReconciler.java @@ -0,0 +1,15 @@ +package ilove.quark.us; + +import io.javaoperatorsdk.operator.api.reconciler.Context; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; + +public class MyCustomResourceReconciler implements Reconciler { + + @Override + public UpdateControl reconcile(MyCustomResource myCustomResource, + Context context) throws Exception { + // implement reconciliation logic + return UpdateControl.noUpdate(); + } +} \ No newline at end of file diff --git a/core/integration-tests/src/test/resources/__snapshots__/OperatorSDKCodestartTest/testContent/src_main_java_ilove_quark_us_MyCustomResourceSpec.java b/core/integration-tests/src/test/resources/__snapshots__/OperatorSDKCodestartTest/testContent/src_main_java_ilove_quark_us_MyCustomResourceSpec.java new file mode 100644 index 000000000..2259fe541 --- /dev/null +++ b/core/integration-tests/src/test/resources/__snapshots__/OperatorSDKCodestartTest/testContent/src_main_java_ilove_quark_us_MyCustomResourceSpec.java @@ -0,0 +1,5 @@ +package ilove.quark.us; + +public class MyCustomResourceSpec { + // add spec fields +} diff --git a/core/integration-tests/src/test/resources/__snapshots__/OperatorSDKCodestartTest/testContent/src_main_java_ilove_quark_us_MyCustomResourceStatus.java b/core/integration-tests/src/test/resources/__snapshots__/OperatorSDKCodestartTest/testContent/src_main_java_ilove_quark_us_MyCustomResourceStatus.java new file mode 100644 index 000000000..41d341c6c --- /dev/null +++ b/core/integration-tests/src/test/resources/__snapshots__/OperatorSDKCodestartTest/testContent/src_main_java_ilove_quark_us_MyCustomResourceStatus.java @@ -0,0 +1,5 @@ +package ilove.quark.us; + +public class MyCustomResourceStatus { + // add status fields +} diff --git a/core/pom.xml b/core/pom.xml index 8dd5cedf2..3a362bfce 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -13,8 +13,23 @@ quarkus-operator-sdk-core-parent pom - - deployment - runtime - + + deployment + runtime + + + + + it + + + performRelease + !true + + + + integration-tests + + + \ No newline at end of file diff --git a/core/runtime/pom.xml b/core/runtime/pom.xml index d7fd8f874..8ef9bbe4a 100644 --- a/core/runtime/pom.xml +++ b/core/runtime/pom.xml @@ -68,6 +68,26 @@ + + maven-jar-plugin + + + generate-codestart-jar + generate-resources + + jar + + + ${project.basedir}/src/main + + codestarts/** + + codestarts + true + + + + io.quarkus quarkus-bootstrap-maven-plugin diff --git a/core/runtime/src/main/codestarts/quarkus/operator-sdk-codestart/base/README.tpl.qute.md b/core/runtime/src/main/codestarts/quarkus/operator-sdk-codestart/base/README.tpl.qute.md new file mode 100644 index 000000000..5ba55c271 --- /dev/null +++ b/core/runtime/src/main/codestarts/quarkus/operator-sdk-codestart/base/README.tpl.qute.md @@ -0,0 +1,3 @@ +{#include readme-header /} + +FOO \ No newline at end of file diff --git a/core/runtime/src/main/codestarts/quarkus/operator-sdk-codestart/codestart.yml b/core/runtime/src/main/codestarts/quarkus/operator-sdk-codestart/codestart.yml new file mode 100644 index 000000000..d65f0e20c --- /dev/null +++ b/core/runtime/src/main/codestarts/quarkus/operator-sdk-codestart/codestart.yml @@ -0,0 +1,7 @@ +name: operator-sdk-codestart +ref: quarkus-operator-sdk +type: code +tags: extension-codestart, operator, kubernetes +metadata: + title: Java Operator SDK Extension + description: This bootstraps an operator project using the Java Operator SDK project \ No newline at end of file diff --git a/core/runtime/src/main/codestarts/quarkus/operator-sdk-codestart/java/src/main/java/org/acme/MyCustomResource.java b/core/runtime/src/main/codestarts/quarkus/operator-sdk-codestart/java/src/main/java/org/acme/MyCustomResource.java new file mode 100644 index 000000000..9040f35ab --- /dev/null +++ b/core/runtime/src/main/codestarts/quarkus/operator-sdk-codestart/java/src/main/java/org/acme/MyCustomResource.java @@ -0,0 +1,7 @@ +package org.acme; + +import io.fabric8.kubernetes.client.CustomResource; + +public class MyCustomResource extends CustomResource { + +} diff --git a/core/runtime/src/main/codestarts/quarkus/operator-sdk-codestart/java/src/main/java/org/acme/MyCustomResourceReconciler.java b/core/runtime/src/main/codestarts/quarkus/operator-sdk-codestart/java/src/main/java/org/acme/MyCustomResourceReconciler.java new file mode 100644 index 000000000..08d781a39 --- /dev/null +++ b/core/runtime/src/main/codestarts/quarkus/operator-sdk-codestart/java/src/main/java/org/acme/MyCustomResourceReconciler.java @@ -0,0 +1,15 @@ +package org.acme; + +import io.javaoperatorsdk.operator.api.reconciler.Context; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; + +public class MyCustomResourceReconciler implements Reconciler { + + @Override + public UpdateControl reconcile(MyCustomResource myCustomResource, + Context context) throws Exception { + // implement reconciliation logic + return UpdateControl.noUpdate(); + } +} \ No newline at end of file diff --git a/core/runtime/src/main/codestarts/quarkus/operator-sdk-codestart/java/src/main/java/org/acme/MyCustomResourceSpec.java b/core/runtime/src/main/codestarts/quarkus/operator-sdk-codestart/java/src/main/java/org/acme/MyCustomResourceSpec.java new file mode 100644 index 000000000..f584b1b9f --- /dev/null +++ b/core/runtime/src/main/codestarts/quarkus/operator-sdk-codestart/java/src/main/java/org/acme/MyCustomResourceSpec.java @@ -0,0 +1,5 @@ +package org.acme; + +public class MyCustomResourceSpec { + // add spec fields +} diff --git a/core/runtime/src/main/codestarts/quarkus/operator-sdk-codestart/java/src/main/java/org/acme/MyCustomResourceStatus.java b/core/runtime/src/main/codestarts/quarkus/operator-sdk-codestart/java/src/main/java/org/acme/MyCustomResourceStatus.java new file mode 100644 index 000000000..4188a5274 --- /dev/null +++ b/core/runtime/src/main/codestarts/quarkus/operator-sdk-codestart/java/src/main/java/org/acme/MyCustomResourceStatus.java @@ -0,0 +1,5 @@ +package org.acme; + +public class MyCustomResourceStatus { + // add status fields +} diff --git a/core/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/core/runtime/src/main/resources/META-INF/quarkus-extension.yaml index 262b90a5d..bf587227d 100644 --- a/core/runtime/src/main/resources/META-INF/quarkus-extension.yaml +++ b/core/runtime/src/main/resources/META-INF/quarkus-extension.yaml @@ -3,9 +3,14 @@ name: Quarkus - Operator SDK description: Quarkus extension for the Java Operator SDK (https://javaoperatorsdk.io) metadata: keywords: - - operator - - kubernetes - - openshift + - operator + - kubernetes + - openshift categories: - - "cloud" + - "cloud" + codestart: + name: "quarkus-operator-sdk" + languages: + - "java" + artifact: "io.quarkiverse.operatorsdk:quarkus-operator-sdk:codestarts:jar:${project.version}" # status: "preview" diff --git a/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/AbstractReconciler.java b/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/AbstractReconciler.java deleted file mode 100644 index 142bacca9..000000000 --- a/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/AbstractReconciler.java +++ /dev/null @@ -1,33 +0,0 @@ -package io.quarkiverse.operatorsdk.it; - -import java.util.Collections; -import java.util.Map; - -import io.javaoperatorsdk.operator.api.reconciler.Context; -import io.javaoperatorsdk.operator.api.reconciler.EventSourceContext; -import io.javaoperatorsdk.operator.api.reconciler.EventSourceInitializer; -import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; -import io.javaoperatorsdk.operator.processing.event.source.EventSource; - -public abstract class AbstractReconciler implements - RegistrableReconciler, EventSourceInitializer { - - private boolean initialized; - - @Override - public UpdateControl reconcile(T t, Context context) { - return null; - } - - @Override - public Map prepareEventSources(EventSourceContext eventSourceContext) { - // this method gets called when the controller gets registered - initialized = true; - return Collections.emptyMap(); - } - - @Override - public boolean isInitialized() { - return initialized; - } -} diff --git a/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/Delayed.java b/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/Delayed.java deleted file mode 100644 index e87565397..000000000 --- a/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/Delayed.java +++ /dev/null @@ -1,9 +0,0 @@ -package io.quarkiverse.operatorsdk.it; - -import io.fabric8.kubernetes.model.annotation.Group; -import io.fabric8.kubernetes.model.annotation.Version; - -@Group("josdk.quarkiverse.io") -@Version("v1alpha1") -public class Delayed extends TestResource { -} diff --git a/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/RegistrableReconciler.java b/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/RegistrableReconciler.java deleted file mode 100644 index 6befac1cd..000000000 --- a/integration-tests/src/main/java/io/quarkiverse/operatorsdk/it/RegistrableReconciler.java +++ /dev/null @@ -1,9 +0,0 @@ -package io.quarkiverse.operatorsdk.it; - -import io.fabric8.kubernetes.api.model.HasMetadata; -import io.javaoperatorsdk.operator.api.reconciler.Reconciler; - -public interface RegistrableReconciler extends Reconciler { - - boolean isInitialized(); -} diff --git a/pom.xml b/pom.xml index 137fb0aed..b35459132 100644 --- a/pom.xml +++ b/pom.xml @@ -35,18 +35,6 @@ bundle-generator - - it - - - performRelease - !true - - - - integration-tests - - quick-build