diff --git a/README.md b/README.md index 0ec65b86a8..1ee028800d 100644 --- a/README.md +++ b/README.md @@ -51,6 +51,11 @@ Note that these docs are currently in progress. > Kubernetes client. While this should improve the user experience quite nicely, there are a couple > of things to be aware of when upgrading from a previous version as detailed below. +#### Overview of the 1.8.0 changes + +- The quarkus extension has been moved to the quarkiverse and is now found at +https://github.com/quarkiverse/quarkus-operator-sdk + ##### Overview of the 1.7.0 changes - `Doneable` classes have been removed along with all the involved complexity @@ -208,18 +213,19 @@ a `mycrs` plural form will result in 2 files: A [Quarkus](https://quarkus.io) extension is also provided to ease the development of Quarkus-based operators. -Add [this dependency](https://search.maven.org/search?q=a:operator-framework-quarkus-extension) +Add [this dependency](https://search.maven.org/search?q=a:quarkus-operator-sdk) to your project: ```xml + - io.javaoperatorsdk - operator-framework-quarkus-extension - {see https://search.maven.org/search?q=a:operator-framework-quarkus-extension for latest version} + io.quarkiverse.operatorsdk + quarkus-operator-sdk + {see https://search.maven.org/search?q=a:quarkus-operator-sdk for latest version} ``` -Create an Application, Quarkus will automatically create and inject a `KubernetesClient`, `Operator`, `ConfigurationService` and `ResourceController` instances that your application can use. Below, you can see the minimal code you need to write to get your operator and controllers up and running: +Create an Application, Quarkus will automatically create and inject a `KubernetesClient` (or `OpenShiftClient`), `Operator`, `ConfigurationService` and `ResourceController` instances that your application can use. Below, you can see the minimal code you need to write to get your operator and controllers up and running: ```java @QuarkusMain diff --git a/operator-framework-core/pom.xml b/operator-framework-core/pom.xml index b543c4d2d3..dfd447d677 100644 --- a/operator-framework-core/pom.xml +++ b/operator-framework-core/pom.xml @@ -6,7 +6,7 @@ io.javaoperatorsdk java-operator-sdk - 1.7.6-SNAPSHOT + 1.8.0-SNAPSHOT ../pom.xml diff --git a/operator-framework-quarkus-extension/deployment/pom.xml b/operator-framework-quarkus-extension/deployment/pom.xml deleted file mode 100644 index 255f7e4704..0000000000 --- a/operator-framework-quarkus-extension/deployment/pom.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - 4.0.0 - - io.javaoperatorsdk - operator-framework-quarkus-extension-parent - 1.7.6-SNAPSHOT - ../pom.xml - - - operator-framework-quarkus-extension-deployment - Operator SDK - Quarkus Extension - Deployment - - - - io.quarkus - quarkus-core-deployment - - - io.javaoperatorsdk - operator-framework-quarkus-extension - ${project.version} - - - io.quarkus - quarkus-arc-deployment - - - io.quarkus - quarkus-openshift-client-deployment - - - io.quarkus - quarkus-kubernetes-deployment - - - io.quarkus - quarkus-container-image-jib-deployment - - - io.quarkus - quarkus-smallrye-health-deployment - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - - - - io.quarkus - quarkus-extension-processor - ${quarkus.version} - - - - - - - - diff --git a/operator-framework-quarkus-extension/deployment/src/main/java/io/javaoperatorsdk/quarkus/extension/deployment/QuarkusExtensionProcessor.java b/operator-framework-quarkus-extension/deployment/src/main/java/io/javaoperatorsdk/quarkus/extension/deployment/QuarkusExtensionProcessor.java deleted file mode 100644 index db4a84f96b..0000000000 --- a/operator-framework-quarkus-extension/deployment/src/main/java/io/javaoperatorsdk/quarkus/extension/deployment/QuarkusExtensionProcessor.java +++ /dev/null @@ -1,280 +0,0 @@ -package io.javaoperatorsdk.quarkus.extension.deployment; - -import io.fabric8.kubernetes.client.CustomResource; -import io.javaoperatorsdk.operator.ControllerUtils; -import io.javaoperatorsdk.operator.api.Controller; -import io.javaoperatorsdk.operator.api.ResourceController; -import io.javaoperatorsdk.operator.api.config.ConfigurationService; -import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; -import io.javaoperatorsdk.operator.api.config.RetryConfiguration; -import io.javaoperatorsdk.operator.api.config.Utils; -import io.javaoperatorsdk.quarkus.extension.ConfigurationServiceRecorder; -import io.javaoperatorsdk.quarkus.extension.ExternalConfiguration; -import io.javaoperatorsdk.quarkus.extension.ExternalControllerConfiguration; -import io.javaoperatorsdk.quarkus.extension.OperatorProducer; -import io.javaoperatorsdk.quarkus.extension.QuarkusConfigurationService; -import io.javaoperatorsdk.quarkus.extension.QuarkusControllerConfiguration; -import io.javaoperatorsdk.quarkus.extension.Version; -import io.quarkus.arc.deployment.AdditionalBeanBuildItem; -import io.quarkus.arc.deployment.SyntheticBeanBuildItem; -import io.quarkus.deployment.annotations.BuildProducer; -import io.quarkus.deployment.annotations.BuildStep; -import io.quarkus.deployment.annotations.ExecutionTime; -import io.quarkus.deployment.annotations.Record; -import io.quarkus.deployment.builditem.CombinedIndexBuildItem; -import io.quarkus.deployment.builditem.FeatureBuildItem; -import io.quarkus.deployment.builditem.IndexDependencyBuildItem; -import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem; -import io.quarkus.deployment.util.JandexUtil; -import java.lang.reflect.Modifier; -import java.util.List; -import java.util.Optional; -import java.util.function.Function; -import java.util.function.Supplier; -import java.util.stream.Collectors; -import javax.enterprise.context.ApplicationScoped; -import javax.inject.Singleton; -import org.jboss.jandex.AnnotationInstance; -import org.jboss.jandex.AnnotationValue; -import org.jboss.jandex.ClassInfo; -import org.jboss.jandex.DotName; -import org.jboss.jandex.IndexView; -import org.jboss.logging.Logger; - -class QuarkusExtensionProcessor { - - private static final Logger log = Logger.getLogger(QuarkusExtensionProcessor.class.getName()); - - private static final String FEATURE = "operator-sdk"; - private static final DotName RESOURCE_CONTROLLER = - DotName.createSimple(ResourceController.class.getName()); - private static final DotName CONTROLLER = DotName.createSimple(Controller.class.getName()); - private static final DotName APPLICATION_SCOPED = - DotName.createSimple(ApplicationScoped.class.getName()); - - private ExternalConfiguration externalConfiguration; - - @BuildStep - void indexSDKDependencies( - BuildProducer indexDependency, - BuildProducer features) { - features.produce(new FeatureBuildItem(FEATURE)); - indexDependency.produce( - new IndexDependencyBuildItem("io.javaoperatorsdk", "operator-framework-core")); - } - - @BuildStep - @Record(ExecutionTime.STATIC_INIT) - void createConfigurationServiceAndOperator( - CombinedIndexBuildItem combinedIndexBuildItem, - BuildProducer syntheticBeanBuildItemBuildProducer, - BuildProducer additionalBeans, - BuildProducer reflectionClasses, - ConfigurationServiceRecorder recorder) { - final var index = combinedIndexBuildItem.getIndex(); - final var resourceControllers = index.getAllKnownImplementors(RESOURCE_CONTROLLER); - - final List controllerConfigs = - resourceControllers.stream() - .filter(ci -> !Modifier.isAbstract(ci.flags())) - .map(ci -> createControllerConfiguration(ci, additionalBeans, reflectionClasses, index)) - .collect(Collectors.toList()); - - final var version = Utils.loadFromProperties(); - final var validateCustomResources = - Utils.isValidateCustomResourcesEnvVarSet() - ? Utils.shouldCheckCRDAndValidateLocalModel() - : externalConfiguration.checkCRDAndValidateLocalModel.orElse(true); - - final var supplier = - recorder.configurationServiceSupplier( - new Version(version.getSdkVersion(), version.getCommit(), version.getBuiltTime()), - controllerConfigs, - validateCustomResources); - syntheticBeanBuildItemBuildProducer.produce( - SyntheticBeanBuildItem.configure(QuarkusConfigurationService.class) - .scope(Singleton.class) - .addType(ConfigurationService.class) - .setRuntimeInit() - .supplier(supplier) - .done()); - - additionalBeans.produce(AdditionalBeanBuildItem.unremovableOf(OperatorProducer.class)); - } - - private ControllerConfiguration createControllerConfiguration( - ClassInfo info, - BuildProducer additionalBeans, - BuildProducer reflectionClasses, - IndexView index) { - // first retrieve the custom resource class - final var crType = - JandexUtil.resolveTypeParameters(info.name(), RESOURCE_CONTROLLER, index) - .get(0) - .name() - .toString(); - - // create ResourceController bean - final var resourceControllerClassName = info.name().toString(); - additionalBeans.produce( - AdditionalBeanBuildItem.builder() - .addBeanClass(resourceControllerClassName) - .setUnremovable() - .setDefaultScope(APPLICATION_SCOPED) - .build()); - - // load CR class - final Class crClass = (Class) loadClass(crType); - - // Instantiate CR to check that it's properly annotated - final CustomResource cr; - try { - cr = crClass.getConstructor().newInstance(); - } catch (Exception e) { - throw new IllegalArgumentException("Cannot instantiate '" + crType + "' CR class", e); - } - - // retrieve CRD name from CR type - final var crdName = CustomResource.getCRDName(crClass); - - // register CR class for introspection - reflectionClasses.produce(new ReflectiveClassBuildItem(true, true, crType)); - - // register spec and status for introspection - registerForReflection(reflectionClasses, cr.getSpec()); - registerForReflection(reflectionClasses, cr.getStatus()); - - // retrieve the Controller annotation if it exists - final var controllerAnnotation = info.classAnnotation(CONTROLLER); - - // retrieve the controller's name - final var defaultControllerName = - ControllerUtils.getDefaultResourceControllerName(resourceControllerClassName); - final var name = - annotationValueOrDefault( - controllerAnnotation, "name", AnnotationValue::asString, () -> defaultControllerName); - - // check if we have externalized configuration to provide values - final var extContConfig = externalConfiguration.controllers.get(name); - - final var extractor = new ValueExtractor(controllerAnnotation, extContConfig); - - // create the configuration - final var configuration = - new QuarkusControllerConfiguration( - resourceControllerClassName, - name, - crdName, - extractor.extract( - c -> c.finalizer, - "finalizerName", - AnnotationValue::asString, - () -> ControllerUtils.getDefaultFinalizerName(crdName)), - extractor.extract( - c -> c.generationAware, - "generationAwareEventProcessing", - AnnotationValue::asBoolean, - () -> true), - QuarkusControllerConfiguration.asSet( - extractor.extract( - c -> c.namespaces.map(l -> l.toArray(new String[0])), - "namespaces", - AnnotationValue::asStringArray, - () -> new String[] {})), - crType, - retryConfiguration(extContConfig)); - - log.infov( - "Processed ''{0}'' controller named ''{1}'' for ''{2}'' CR (version ''{3}'')", - info.name().toString(), name, cr.getCRDName(), cr.getApiVersion()); - - return configuration; - } - - private void registerForReflection( - BuildProducer reflectionClasses, Object specOrStatus) { - Optional.ofNullable(specOrStatus) - .map(s -> specOrStatus.getClass().getCanonicalName()) - .ifPresent( - cn -> { - reflectionClasses.produce(new ReflectiveClassBuildItem(true, true, cn)); - System.out.println("Registered " + cn); - }); - } - - private RetryConfiguration retryConfiguration(ExternalControllerConfiguration extConfig) { - return extConfig == null ? null : RetryConfigurationResolver.resolve(extConfig.retry); - } - - private static class ValueExtractor { - - private final AnnotationInstance controllerAnnotation; - private final ExternalControllerConfiguration extContConfig; - - ValueExtractor( - AnnotationInstance controllerAnnotation, ExternalControllerConfiguration extContConfig) { - this.controllerAnnotation = controllerAnnotation; - this.extContConfig = extContConfig; - } - - /** - * Extracts the appropriate configuration value for the controller checking first any annotation - * configuration, then potentially overriding it by a properties-provided value or returning a - * default value if neither is provided. - * - * @param extractor a Function extracting the optional value we're interested in from the - * external configuration - * @param annotationField the name of the {@link Controller} annotation we're want to retrieve - * if present - * @param converter a Function converting the annotation value to the type we're expecting - * @param defaultValue a Supplier that computes/retrieve a default value when needed - * @param the expected type of the configuration value we're trying to extract - * @return the extracted configuration value - */ - T extract( - Function> extractor, - String annotationField, - Function converter, - Supplier defaultValue) { - // first check if we have an external configuration - if (extContConfig != null) { - // extract value from config if present - return extractor - .apply(extContConfig) - // or get from the annotation or default - .orElse(annotationValueOrDefault(annotationField, converter, defaultValue)); - } else { - // get from annotation or default - return annotationValueOrDefault(annotationField, converter, defaultValue); - } - } - - private T annotationValueOrDefault( - String name, Function converter, Supplier defaultValue) { - return QuarkusExtensionProcessor.annotationValueOrDefault( - controllerAnnotation, name, converter, defaultValue); - } - } - - private static T annotationValueOrDefault( - AnnotationInstance annotation, - String name, - Function converter, - Supplier defaultValue) { - return annotation != null - ? - // get converted annotation value of get default - Optional.ofNullable(annotation.value(name)).map(converter).orElseGet(defaultValue) - : - // get default - defaultValue.get(); - } - - private Class loadClass(String className) { - try { - return Thread.currentThread().getContextClassLoader().loadClass(className); - } catch (ClassNotFoundException e) { - throw new IllegalArgumentException("Couldn't find class " + className); - } - } -} diff --git a/operator-framework-quarkus-extension/deployment/src/main/java/io/javaoperatorsdk/quarkus/extension/deployment/RetryConfigurationResolver.java b/operator-framework-quarkus-extension/deployment/src/main/java/io/javaoperatorsdk/quarkus/extension/deployment/RetryConfigurationResolver.java deleted file mode 100644 index e94e89a127..0000000000 --- a/operator-framework-quarkus-extension/deployment/src/main/java/io/javaoperatorsdk/quarkus/extension/deployment/RetryConfigurationResolver.java +++ /dev/null @@ -1,102 +0,0 @@ -package io.javaoperatorsdk.quarkus.extension.deployment; - -import io.javaoperatorsdk.operator.api.config.RetryConfiguration; -import io.javaoperatorsdk.quarkus.extension.ExternalIntervalConfiguration; -import io.javaoperatorsdk.quarkus.extension.ExternalRetryConfiguration; -import io.javaoperatorsdk.quarkus.extension.PlainRetryConfiguration; -import java.util.Optional; - -class RetryConfigurationResolver implements RetryConfiguration { - - private final RetryConfiguration delegate; - - private RetryConfigurationResolver(Optional retry) { - delegate = - retry - .map(ExternalRetryConfigurationAdapter::new) - .orElse(RetryConfiguration.DEFAULT); - } - - public static RetryConfiguration resolve(Optional retry) { - final var delegate = new RetryConfigurationResolver(retry); - return new PlainRetryConfiguration( - delegate.getMaxAttempts(), - delegate.getInitialInterval(), - delegate.getIntervalMultiplier(), - delegate.getMaxInterval()); - } - - @Override - public int getMaxAttempts() { - return delegate.getMaxAttempts(); - } - - @Override - public long getInitialInterval() { - return delegate.getInitialInterval(); - } - - @Override - public double getIntervalMultiplier() { - return delegate.getIntervalMultiplier(); - } - - @Override - public long getMaxInterval() { - return delegate.getMaxInterval(); - } - - private static class ExternalRetryConfigurationAdapter implements RetryConfiguration { - - private final int maxAttempts; - private final IntervalConfigurationAdapter interval; - - public ExternalRetryConfigurationAdapter(ExternalRetryConfiguration config) { - maxAttempts = config.maxAttempts.orElse(RetryConfiguration.DEFAULT.getMaxAttempts()); - interval = - config - .interval - .map(IntervalConfigurationAdapter::new) - .orElse(new IntervalConfigurationAdapter()); - } - - @Override - public int getMaxAttempts() { - return maxAttempts; - } - - @Override - public long getInitialInterval() { - return interval.initial; - } - - @Override - public double getIntervalMultiplier() { - return interval.multiplier; - } - - @Override - public long getMaxInterval() { - return interval.max; - } - } - - private static class IntervalConfigurationAdapter { - - private final long initial; - private final double multiplier; - private final long max; - - IntervalConfigurationAdapter(ExternalIntervalConfiguration config) { - initial = config.initial.orElse(RetryConfiguration.DEFAULT.getInitialInterval()); - multiplier = config.multiplier.orElse(RetryConfiguration.DEFAULT.getIntervalMultiplier()); - max = config.max.orElse(RetryConfiguration.DEFAULT.getMaxInterval()); - } - - IntervalConfigurationAdapter() { - this.initial = RetryConfiguration.DEFAULT.getInitialInterval(); - this.multiplier = RetryConfiguration.DEFAULT.getIntervalMultiplier(); - this.max = RetryConfiguration.DEFAULT.getMaxInterval(); - } - } -} diff --git a/operator-framework-quarkus-extension/pom.xml b/operator-framework-quarkus-extension/pom.xml deleted file mode 100644 index 0f6eef0c90..0000000000 --- a/operator-framework-quarkus-extension/pom.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - io.javaoperatorsdk - java-operator-sdk - 1.7.6-SNAPSHOT - - 4.0.0 - - operator-framework-quarkus-extension-parent - Operator SDK - Quarkus Extension - Parent - pom - - - 11 - 11 - UTF-8 - UTF-8 - true - 1.12.1.Final - 3.8.1 - 3.0.0-M5 - - - - deployment - runtime - tests - - - - - io.fabric8 - kubernetes-client-bom - ${fabric8-client.version} - pom - import - - - io.quarkus - quarkus-bom - ${quarkus.version} - pom - import - - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - ${compiler-plugin.version} - - - maven-surefire-plugin - ${maven.surefire.version} - - - - - \ No newline at end of file diff --git a/operator-framework-quarkus-extension/runtime/pom.xml b/operator-framework-quarkus-extension/runtime/pom.xml deleted file mode 100644 index 4bedd2f962..0000000000 --- a/operator-framework-quarkus-extension/runtime/pom.xml +++ /dev/null @@ -1,82 +0,0 @@ - - - 4.0.0 - - io.javaoperatorsdk - operator-framework-quarkus-extension-parent - 1.7.6-SNAPSHOT - ../pom.xml - - - operator-framework-quarkus-extension - Operator SDK - Quarkus Extension - Runtime - - - - io.javaoperatorsdk - operator-framework-core - ${project.version} - - - io.quarkus - quarkus-core - - - io.quarkus.arc - arc - - - io.quarkus - quarkus-openshift-client - - - io.quarkus - quarkus-kubernetes - - - io.quarkus - quarkus-container-image-jib - - - io.quarkus - quarkus-smallrye-health - - - - - - - io.quarkus - quarkus-bootstrap-maven-plugin - ${quarkus.version} - - - - extension-descriptor - - compile - - ${project.groupId}:${project.artifactId}-deployment:${project.version} - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - - - - io.quarkus - quarkus-extension-processor - ${quarkus.version} - - - - - - - diff --git a/operator-framework-quarkus-extension/runtime/src/main/java/io/javaoperatorsdk/quarkus/extension/ConfigurationServiceRecorder.java b/operator-framework-quarkus-extension/runtime/src/main/java/io/javaoperatorsdk/quarkus/extension/ConfigurationServiceRecorder.java deleted file mode 100644 index d668dd82ee..0000000000 --- a/operator-framework-quarkus-extension/runtime/src/main/java/io/javaoperatorsdk/quarkus/extension/ConfigurationServiceRecorder.java +++ /dev/null @@ -1,26 +0,0 @@ -package io.javaoperatorsdk.quarkus.extension; - -import io.fabric8.kubernetes.client.KubernetesClient; -import io.javaoperatorsdk.operator.api.config.ConfigurationService; -import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; -import io.javaoperatorsdk.operator.api.config.Version; -import io.quarkus.arc.Arc; -import io.quarkus.runtime.annotations.Recorder; -import java.util.List; -import java.util.function.Supplier; - -@Recorder -public class ConfigurationServiceRecorder { - - public Supplier configurationServiceSupplier( - Version version, - List controllerConfigs, - boolean validateCustomResources) { - return () -> - new QuarkusConfigurationService( - version, - controllerConfigs, - Arc.container().instance(KubernetesClient.class).get(), - validateCustomResources); - } -} diff --git a/operator-framework-quarkus-extension/runtime/src/main/java/io/javaoperatorsdk/quarkus/extension/ExternalConfiguration.java b/operator-framework-quarkus-extension/runtime/src/main/java/io/javaoperatorsdk/quarkus/extension/ExternalConfiguration.java deleted file mode 100644 index 0134cae1da..0000000000 --- a/operator-framework-quarkus-extension/runtime/src/main/java/io/javaoperatorsdk/quarkus/extension/ExternalConfiguration.java +++ /dev/null @@ -1,23 +0,0 @@ -package io.javaoperatorsdk.quarkus.extension; - -import io.fabric8.kubernetes.client.CustomResource; -import io.quarkus.runtime.annotations.ConfigItem; -import io.quarkus.runtime.annotations.ConfigPhase; -import io.quarkus.runtime.annotations.ConfigRoot; -import java.util.Map; -import java.util.Optional; - -@ConfigRoot(name = "operator-sdk", phase = ConfigPhase.BUILD_AND_RUN_TIME_FIXED) -public class ExternalConfiguration { - - /** Maps a controller name to its configuration. */ - @ConfigItem public Map controllers; - - /** - * Whether the operator should check that the CRD is properly deployed and that the associated - * {@link CustomResource} implementation matches its information before registering the associated - * controller. - */ - @ConfigItem(defaultValue = "true") - public Optional checkCRDAndValidateLocalModel; -} diff --git a/operator-framework-quarkus-extension/runtime/src/main/java/io/javaoperatorsdk/quarkus/extension/ExternalControllerConfiguration.java b/operator-framework-quarkus-extension/runtime/src/main/java/io/javaoperatorsdk/quarkus/extension/ExternalControllerConfiguration.java deleted file mode 100644 index 2afa0a6f88..0000000000 --- a/operator-framework-quarkus-extension/runtime/src/main/java/io/javaoperatorsdk/quarkus/extension/ExternalControllerConfiguration.java +++ /dev/null @@ -1,32 +0,0 @@ -package io.javaoperatorsdk.quarkus.extension; - -import io.quarkus.runtime.annotations.ConfigGroup; -import io.quarkus.runtime.annotations.ConfigItem; -import java.util.List; -import java.util.Optional; - -@ConfigGroup -public class ExternalControllerConfiguration { - - /** - * An optional list of comma-separated namespace names the controller should watch. If this - * property is left empty then the controller will watch all namespaces. - */ - @ConfigItem public Optional> namespaces; - - /** - * The optional name of the finalizer for the controller. If none is provided, one will be - * automatically generated. - */ - @ConfigItem public Optional finalizer; - - /** - * Whether the controller should only process events if the associated resource generation has - * increased since last reconciliation, otherwise will process all events. - */ - @ConfigItem(defaultValue = "true") - public Optional generationAware; - - /** The optional controller retry configuration */ - @ConfigItem public Optional retry; -} diff --git a/operator-framework-quarkus-extension/runtime/src/main/java/io/javaoperatorsdk/quarkus/extension/ExternalIntervalConfiguration.java b/operator-framework-quarkus-extension/runtime/src/main/java/io/javaoperatorsdk/quarkus/extension/ExternalIntervalConfiguration.java deleted file mode 100644 index c983a79b07..0000000000 --- a/operator-framework-quarkus-extension/runtime/src/main/java/io/javaoperatorsdk/quarkus/extension/ExternalIntervalConfiguration.java +++ /dev/null @@ -1,21 +0,0 @@ -package io.javaoperatorsdk.quarkus.extension; - -import io.quarkus.runtime.annotations.ConfigGroup; -import io.quarkus.runtime.annotations.ConfigItem; -import java.util.Optional; - -@ConfigGroup -public class ExternalIntervalConfiguration { - - /** The initial interval that the controller waits for before attempting the first retry */ - @ConfigItem public Optional initial; - - /** The value by which the initial interval is multiplied by for each retry */ - @ConfigItem public Optional multiplier; - - /** - * The maximum interval that the controller will wait for before attempting a retry, regardless of - * all other configuration - */ - @ConfigItem public Optional max; -} diff --git a/operator-framework-quarkus-extension/runtime/src/main/java/io/javaoperatorsdk/quarkus/extension/ExternalRetryConfiguration.java b/operator-framework-quarkus-extension/runtime/src/main/java/io/javaoperatorsdk/quarkus/extension/ExternalRetryConfiguration.java deleted file mode 100644 index 3e800d2598..0000000000 --- a/operator-framework-quarkus-extension/runtime/src/main/java/io/javaoperatorsdk/quarkus/extension/ExternalRetryConfiguration.java +++ /dev/null @@ -1,15 +0,0 @@ -package io.javaoperatorsdk.quarkus.extension; - -import io.quarkus.runtime.annotations.ConfigGroup; -import io.quarkus.runtime.annotations.ConfigItem; -import java.util.Optional; - -@ConfigGroup -public class ExternalRetryConfiguration { - - /** How many times an operation should be retried before giving up */ - @ConfigItem public Optional maxAttempts; - - /** The configuration of the retry interval. */ - @ConfigItem public Optional interval; -} diff --git a/operator-framework-quarkus-extension/runtime/src/main/java/io/javaoperatorsdk/quarkus/extension/OperatorProducer.java b/operator-framework-quarkus-extension/runtime/src/main/java/io/javaoperatorsdk/quarkus/extension/OperatorProducer.java deleted file mode 100644 index b1df2e8d57..0000000000 --- a/operator-framework-quarkus-extension/runtime/src/main/java/io/javaoperatorsdk/quarkus/extension/OperatorProducer.java +++ /dev/null @@ -1,27 +0,0 @@ -package io.javaoperatorsdk.quarkus.extension; - -import io.fabric8.kubernetes.client.CustomResource; -import io.fabric8.kubernetes.client.KubernetesClient; -import io.javaoperatorsdk.operator.Operator; -import io.javaoperatorsdk.operator.api.ResourceController; -import io.javaoperatorsdk.operator.api.config.ConfigurationService; -import io.quarkus.arc.DefaultBean; -import javax.enterprise.inject.Instance; -import javax.enterprise.inject.Produces; -import javax.inject.Singleton; - -@Singleton -public class OperatorProducer { - - @Produces - @DefaultBean - @Singleton - Operator operator( - KubernetesClient client, - ConfigurationService configuration, - Instance> controllers) { - final var operator = new Operator(client, configuration); - controllers.stream().forEach(operator::register); - return operator; - } -} diff --git a/operator-framework-quarkus-extension/runtime/src/main/java/io/javaoperatorsdk/quarkus/extension/PlainRetryConfiguration.java b/operator-framework-quarkus-extension/runtime/src/main/java/io/javaoperatorsdk/quarkus/extension/PlainRetryConfiguration.java deleted file mode 100644 index ca534614a2..0000000000 --- a/operator-framework-quarkus-extension/runtime/src/main/java/io/javaoperatorsdk/quarkus/extension/PlainRetryConfiguration.java +++ /dev/null @@ -1,41 +0,0 @@ -package io.javaoperatorsdk.quarkus.extension; - -import io.javaoperatorsdk.operator.api.config.RetryConfiguration; -import io.quarkus.runtime.annotations.RecordableConstructor; - -public class PlainRetryConfiguration implements RetryConfiguration { - - private final int max; - private final long initial; - private final double multiplier; - private final long maxInterval; - - @RecordableConstructor - public PlainRetryConfiguration( - int maxAttempts, long initialInterval, double intervalMultiplier, long maxInterval) { - this.max = maxAttempts; - this.initial = initialInterval; - this.multiplier = intervalMultiplier; - this.maxInterval = maxInterval; - } - - @Override - public int getMaxAttempts() { - return max; - } - - @Override - public long getInitialInterval() { - return initial; - } - - @Override - public double getIntervalMultiplier() { - return multiplier; - } - - @Override - public long getMaxInterval() { - return maxInterval; - } -} diff --git a/operator-framework-quarkus-extension/runtime/src/main/java/io/javaoperatorsdk/quarkus/extension/QuarkusConfigurationService.java b/operator-framework-quarkus-extension/runtime/src/main/java/io/javaoperatorsdk/quarkus/extension/QuarkusConfigurationService.java deleted file mode 100644 index a38f354c1e..0000000000 --- a/operator-framework-quarkus-extension/runtime/src/main/java/io/javaoperatorsdk/quarkus/extension/QuarkusConfigurationService.java +++ /dev/null @@ -1,52 +0,0 @@ -package io.javaoperatorsdk.quarkus.extension; - -import io.fabric8.kubernetes.client.Config; -import io.fabric8.kubernetes.client.CustomResource; -import io.fabric8.kubernetes.client.KubernetesClient; -import io.javaoperatorsdk.operator.api.ResourceController; -import io.javaoperatorsdk.operator.api.config.AbstractConfigurationService; -import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; -import io.javaoperatorsdk.operator.api.config.Version; -import io.quarkus.arc.runtime.ClientProxyUnwrapper; -import java.util.List; - -public class QuarkusConfigurationService extends AbstractConfigurationService { - private static final ClientProxyUnwrapper unwrapper = new ClientProxyUnwrapper(); - private final KubernetesClient client; - private final boolean checkCRDAndValidateLocalModel; - - public QuarkusConfigurationService( - Version version, - List configurations, - KubernetesClient client, - boolean checkCRDAndValidateLocalModel) { - super(version); - this.client = client; - if (configurations != null && !configurations.isEmpty()) { - configurations.forEach(this::register); - } - this.checkCRDAndValidateLocalModel = checkCRDAndValidateLocalModel; - } - - @Override - public Config getClientConfiguration() { - return client.getConfiguration(); - } - - @Override - public ControllerConfiguration getConfigurationFor( - ResourceController controller) { - final var unwrapped = unwrap(controller); - return super.getConfigurationFor(unwrapped); - } - - @Override - public boolean checkCRDAndValidateLocalModel() { - return checkCRDAndValidateLocalModel; - } - - private static ResourceController unwrap( - ResourceController controller) { - return (ResourceController) unwrapper.apply(controller); - } -} diff --git a/operator-framework-quarkus-extension/runtime/src/main/java/io/javaoperatorsdk/quarkus/extension/QuarkusControllerConfiguration.java b/operator-framework-quarkus-extension/runtime/src/main/java/io/javaoperatorsdk/quarkus/extension/QuarkusControllerConfiguration.java deleted file mode 100644 index b5dc8fb881..0000000000 --- a/operator-framework-quarkus-extension/runtime/src/main/java/io/javaoperatorsdk/quarkus/extension/QuarkusControllerConfiguration.java +++ /dev/null @@ -1,68 +0,0 @@ -package io.javaoperatorsdk.quarkus.extension; - -import io.fabric8.kubernetes.client.CustomResource; -import io.javaoperatorsdk.operator.api.config.AbstractControllerConfiguration; -import io.javaoperatorsdk.operator.api.config.RetryConfiguration; -import io.quarkus.runtime.annotations.RecordableConstructor; -import java.util.Collections; -import java.util.Set; - -public class QuarkusControllerConfiguration - extends AbstractControllerConfiguration { - - private final String crClass; - private Class clazz; - - @RecordableConstructor - public QuarkusControllerConfiguration( - String associatedControllerClassName, - String name, - String crdName, - String finalizer, - boolean generationAware, - Set namespaces, - String crClass, - RetryConfiguration retryConfiguration) { - super( - associatedControllerClassName, - name, - crdName, - finalizer, - generationAware, - namespaces, - retryConfiguration); - this.crClass = crClass; - } - - public static Set asSet(String[] namespaces) { - return namespaces == null || namespaces.length == 0 - ? Collections.emptySet() - : Set.of(namespaces); - } - - // Needed for Quarkus to find the associated constructor parameter - public String getCrdName() { - return getCRDName(); - } - - // Needed for Quarkus to find the associated constructor parameter - public String getCrClass() { - return crClass; - } - - @Override - public Class getCustomResourceClass() { - if (clazz == null) { - clazz = (Class) loadClass(crClass); - } - return clazz; - } - - private Class loadClass(String className) { - try { - return Thread.currentThread().getContextClassLoader().loadClass(className); - } catch (ClassNotFoundException e) { - throw new IllegalArgumentException("Couldn't find class " + className); - } - } -} diff --git a/operator-framework-quarkus-extension/runtime/src/main/java/io/javaoperatorsdk/quarkus/extension/Version.java b/operator-framework-quarkus-extension/runtime/src/main/java/io/javaoperatorsdk/quarkus/extension/Version.java deleted file mode 100644 index 354d7628cf..0000000000 --- a/operator-framework-quarkus-extension/runtime/src/main/java/io/javaoperatorsdk/quarkus/extension/Version.java +++ /dev/null @@ -1,13 +0,0 @@ -package io.javaoperatorsdk.quarkus.extension; - -import io.quarkus.runtime.annotations.RecordableConstructor; -import java.util.Date; - -/** Re-publish with a recordable constructor so that quarkus can do its thing with it! */ -public class Version extends io.javaoperatorsdk.operator.api.config.Version { - - @RecordableConstructor - public Version(String sdkVersion, String commit, Date builtTime) { - super(sdkVersion, commit, builtTime); - } -} diff --git a/operator-framework-quarkus-extension/tests/pom.xml b/operator-framework-quarkus-extension/tests/pom.xml deleted file mode 100644 index c3b61565e7..0000000000 --- a/operator-framework-quarkus-extension/tests/pom.xml +++ /dev/null @@ -1,148 +0,0 @@ - - - - operator-framework-quarkus-extension-parent - io.javaoperatorsdk - 1.7.6-SNAPSHOT - - 4.0.0 - - operator-framework-quarkus-tests - Operator SDK - Quarkus Extension - Tests - - - - 11 - 11 - - - - - io.javaoperatorsdk - operator-framework-quarkus-extension - ${project.version} - - - io.quarkus - quarkus-resteasy-jackson - - - io.quarkus - quarkus-junit5-internal - test - - - io.quarkus - quarkus-test-openshift-client - test - - - io.quarkus - quarkus-junit5 - test - - - io.rest-assured - rest-assured - test - - - org.assertj - assertj-core - test - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - - true - - - - org.apache.maven.plugins - maven-surefire-plugin - - - **/Native*.java - - - - org.jboss.logmanager.LogManager - - ${maven.home} - - - - - io.quarkus - quarkus-maven-plugin - ${quarkus.version} - - - - build - - - - - - - - - - - native - - native - - - - - io.quarkus - quarkus-maven-plugin - ${quarkus.version} - - - - build - - - - - - org.apache.maven.plugins - maven-failsafe-plugin - ${maven.surefire.version} - - - - integration-test - verify - - - - - ${project.build.directory}/${project.build.finalName}-runner - - - org.jboss.logmanager.LogManager - - ${maven.home} - - - - - - - - - - - - \ No newline at end of file diff --git a/operator-framework-quarkus-extension/tests/src/main/java/io/javaoperatorsdk/quarkus/it/AbstractController.java b/operator-framework-quarkus-extension/tests/src/main/java/io/javaoperatorsdk/quarkus/it/AbstractController.java deleted file mode 100644 index 56e2cd0443..0000000000 --- a/operator-framework-quarkus-extension/tests/src/main/java/io/javaoperatorsdk/quarkus/it/AbstractController.java +++ /dev/null @@ -1,19 +0,0 @@ -package io.javaoperatorsdk.quarkus.it; - -import io.javaoperatorsdk.operator.api.Context; -import io.javaoperatorsdk.operator.api.DeleteControl; -import io.javaoperatorsdk.operator.api.ResourceController; -import io.javaoperatorsdk.operator.api.UpdateControl; - -public abstract class AbstractController implements ResourceController { - - @Override - public DeleteControl deleteResource(T resource, Context context) { - return null; - } - - @Override - public UpdateControl createOrUpdateResource(T resource, Context context) { - return null; - } -} diff --git a/operator-framework-quarkus-extension/tests/src/main/java/io/javaoperatorsdk/quarkus/it/ChildTestResource.java b/operator-framework-quarkus-extension/tests/src/main/java/io/javaoperatorsdk/quarkus/it/ChildTestResource.java deleted file mode 100644 index 9b704aaa26..0000000000 --- a/operator-framework-quarkus-extension/tests/src/main/java/io/javaoperatorsdk/quarkus/it/ChildTestResource.java +++ /dev/null @@ -1,8 +0,0 @@ -package io.javaoperatorsdk.quarkus.it; - -import io.fabric8.kubernetes.model.annotation.Group; -import io.fabric8.kubernetes.model.annotation.Version; - -@Group("example.com") -@Version("v1") -public class ChildTestResource extends TestResource {} diff --git a/operator-framework-quarkus-extension/tests/src/main/java/io/javaoperatorsdk/quarkus/it/ConfiguredController.java b/operator-framework-quarkus-extension/tests/src/main/java/io/javaoperatorsdk/quarkus/it/ConfiguredController.java deleted file mode 100644 index 1ec45f315e..0000000000 --- a/operator-framework-quarkus-extension/tests/src/main/java/io/javaoperatorsdk/quarkus/it/ConfiguredController.java +++ /dev/null @@ -1,9 +0,0 @@ -package io.javaoperatorsdk.quarkus.it; - -import io.javaoperatorsdk.operator.api.Controller; - -@Controller(name = ConfiguredController.NAME, namespaces = "foo") -public class ConfiguredController extends AbstractController { - - public static final String NAME = "annotation"; -} diff --git a/operator-framework-quarkus-extension/tests/src/main/java/io/javaoperatorsdk/quarkus/it/TestController.java b/operator-framework-quarkus-extension/tests/src/main/java/io/javaoperatorsdk/quarkus/it/TestController.java deleted file mode 100644 index 3794619084..0000000000 --- a/operator-framework-quarkus-extension/tests/src/main/java/io/javaoperatorsdk/quarkus/it/TestController.java +++ /dev/null @@ -1,8 +0,0 @@ -package io.javaoperatorsdk.quarkus.it; - -import io.javaoperatorsdk.operator.api.Controller; - -@Controller(name = TestController.NAME) -public class TestController extends AbstractController { - public static final String NAME = "test"; -} diff --git a/operator-framework-quarkus-extension/tests/src/main/java/io/javaoperatorsdk/quarkus/it/TestOperatorApp.java b/operator-framework-quarkus-extension/tests/src/main/java/io/javaoperatorsdk/quarkus/it/TestOperatorApp.java deleted file mode 100644 index 555cb7430b..0000000000 --- a/operator-framework-quarkus-extension/tests/src/main/java/io/javaoperatorsdk/quarkus/it/TestOperatorApp.java +++ /dev/null @@ -1,90 +0,0 @@ -package io.javaoperatorsdk.quarkus.it; - -import com.fasterxml.jackson.annotation.JsonProperty; -import io.fabric8.kubernetes.client.CustomResource; -import io.javaoperatorsdk.operator.api.ResourceController; -import io.javaoperatorsdk.operator.api.config.ConfigurationService; -import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; -import io.javaoperatorsdk.operator.api.config.RetryConfiguration; -import javax.enterprise.inject.Instance; -import javax.inject.Inject; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; - -@Path("/operator") -public class TestOperatorApp { - - @Inject Instance> controllers; - @Inject ConfigurationService configurationService; - - @GET - @Path("validateCR") - public boolean validateCR() { - return configurationService.checkCRDAndValidateLocalModel(); - } - - @GET - @Path("{name}") - public boolean getController(@PathParam("name") String name) { - return configurationService.getKnownControllerNames().contains(name); - } - - @GET - @Path("{name}/config") - public JSONControllerConfiguration getConfig(@PathParam("name") String name) { - final var configuration = - controllers.stream() - .map(c -> configurationService.getConfigurationFor(c)) - .filter(c -> c.getName().equals(name)) - .findFirst() - .map(JSONControllerConfiguration::new) - .orElse(null); - return configuration; - } - - static class JSONControllerConfiguration { - private final ControllerConfiguration conf; - - public JSONControllerConfiguration(ControllerConfiguration conf) { - this.conf = conf; - } - - public String getName() { - return conf.getName(); - } - - @JsonProperty("crdName") - public String getCRDName() { - return conf.getCRDName(); - } - - public String getFinalizer() { - return conf.getFinalizer(); - } - - public boolean isGenerationAware() { - return conf.isGenerationAware(); - } - - public String getCustomResourceClass() { - return conf.getCustomResourceClass().getCanonicalName(); - } - - public String getAssociatedControllerClassName() { - return conf.getAssociatedControllerClassName(); - } - - public String[] getNamespaces() { - return (String[]) conf.getNamespaces().toArray(new String[0]); - } - - public boolean watchAllNamespaces() { - return conf.watchAllNamespaces(); - } - - public RetryConfiguration getRetryConfiguration() { - return conf.getRetryConfiguration(); - } - } -} diff --git a/operator-framework-quarkus-extension/tests/src/main/java/io/javaoperatorsdk/quarkus/it/TestResource.java b/operator-framework-quarkus-extension/tests/src/main/java/io/javaoperatorsdk/quarkus/it/TestResource.java deleted file mode 100644 index e04a0ca4f5..0000000000 --- a/operator-framework-quarkus-extension/tests/src/main/java/io/javaoperatorsdk/quarkus/it/TestResource.java +++ /dev/null @@ -1,9 +0,0 @@ -package io.javaoperatorsdk.quarkus.it; - -import io.fabric8.kubernetes.client.CustomResource; -import io.fabric8.kubernetes.model.annotation.Group; -import io.fabric8.kubernetes.model.annotation.Version; - -@Group("example.com") -@Version("v1") -public abstract class TestResource extends CustomResource {} diff --git a/operator-framework-quarkus-extension/tests/src/main/resources/application.properties b/operator-framework-quarkus-extension/tests/src/main/resources/application.properties deleted file mode 100644 index 3ae3e71e08..0000000000 --- a/operator-framework-quarkus-extension/tests/src/main/resources/application.properties +++ /dev/null @@ -1,3 +0,0 @@ -quarkus.operator-sdk.controllers.annotation.finalizer=from-property/finalizer -quarkus.operator-sdk.controllers.annotation.namespaces=bar -quarkus.operator-sdk.check-crd-and-validate-local-model=false \ No newline at end of file diff --git a/operator-framework-quarkus-extension/tests/src/test/java/io/javaoperatorsdk/quarkus/it/NativeQuarkusExtensionProcessorIT.java b/operator-framework-quarkus-extension/tests/src/test/java/io/javaoperatorsdk/quarkus/it/NativeQuarkusExtensionProcessorIT.java deleted file mode 100644 index fcf72b5adc..0000000000 --- a/operator-framework-quarkus-extension/tests/src/test/java/io/javaoperatorsdk/quarkus/it/NativeQuarkusExtensionProcessorIT.java +++ /dev/null @@ -1,6 +0,0 @@ -package io.javaoperatorsdk.quarkus.it; - -import io.quarkus.test.junit.NativeImageTest; - -@NativeImageTest -public class NativeQuarkusExtensionProcessorIT extends QuarkusExtensionProcessorTest {} diff --git a/operator-framework-quarkus-extension/tests/src/test/java/io/javaoperatorsdk/quarkus/it/QuarkusExtensionProcessorTest.java b/operator-framework-quarkus-extension/tests/src/test/java/io/javaoperatorsdk/quarkus/it/QuarkusExtensionProcessorTest.java deleted file mode 100644 index 52cc858bdc..0000000000 --- a/operator-framework-quarkus-extension/tests/src/test/java/io/javaoperatorsdk/quarkus/it/QuarkusExtensionProcessorTest.java +++ /dev/null @@ -1,62 +0,0 @@ -package io.javaoperatorsdk.quarkus.it; - -import static io.restassured.RestAssured.given; -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.hasItem; -import static org.hamcrest.Matchers.is; - -import io.quarkus.test.common.QuarkusTestResource; -import io.quarkus.test.junit.QuarkusTest; -import io.quarkus.test.kubernetes.client.KubernetesMockServerTestResource; -import org.junit.jupiter.api.Test; - -/** - * This tests creates and starts an application accessed over REST to assess that injected values - * are present and what we expect. - */ -@QuarkusTest -@QuarkusTestResource(KubernetesMockServerTestResource.class) -public class QuarkusExtensionProcessorTest { - - @Test - void shouldNotValidateCRs() { - given().when().get("/operator/validateCR").then().statusCode(200).body(is("false")); - } - - @Test - void controllerShouldExist() { - // first check that we're not always returning true for any controller name :) - given().when().get("/operator/does_not_exist").then().statusCode(200).body(is("false")); - - // given the name of the TestController, the app should reply true meaning that it is indeed - // injected - given().when().get("/operator/" + TestController.NAME).then().statusCode(200).body(is("true")); - } - - @Test - void configurationForControllerShouldExist() { - // check that the config for the test controller can be retrieved and is conform to our - // expectations - final var resourceName = ChildTestResource.class.getCanonicalName(); - given() - .when() - .get("/operator/" + TestController.NAME + "/config") - .then() - .statusCode(200) - .body( - "customResourceClass", equalTo(resourceName), - "name", equalTo(TestController.NAME)); - } - - @Test - void applicationPropertiesShouldOverrideDefaultAndAnnotation() { - given() - .when() - .get("/operator/" + ConfiguredController.NAME + "/config") - .then() - .statusCode(200) - .body( - "finalizer", equalTo("from-property/finalizer"), - "namespaces", hasItem("bar")); - } -} diff --git a/operator-framework-spring-boot-starter-test/pom.xml b/operator-framework-spring-boot-starter-test/pom.xml index 330592b5e9..2ed6c1279a 100644 --- a/operator-framework-spring-boot-starter-test/pom.xml +++ b/operator-framework-spring-boot-starter-test/pom.xml @@ -10,7 +10,7 @@ io.javaoperatorsdk java-operator-sdk - 1.7.6-SNAPSHOT + 1.8.0-SNAPSHOT diff --git a/operator-framework-spring-boot-starter/pom.xml b/operator-framework-spring-boot-starter/pom.xml index 48a4d4920c..259f70e457 100644 --- a/operator-framework-spring-boot-starter/pom.xml +++ b/operator-framework-spring-boot-starter/pom.xml @@ -6,7 +6,7 @@ io.javaoperatorsdk java-operator-sdk - 1.7.6-SNAPSHOT + 1.8.0-SNAPSHOT operator-framework-spring-boot-starter diff --git a/operator-framework/pom.xml b/operator-framework/pom.xml index 9a2061d249..2e4597f89a 100644 --- a/operator-framework/pom.xml +++ b/operator-framework/pom.xml @@ -5,7 +5,7 @@ java-operator-sdk io.javaoperatorsdk - 1.7.6-SNAPSHOT + 1.8.0-SNAPSHOT 4.0.0 diff --git a/pom.xml b/pom.xml index 6c0b0bd900..dca77fcb73 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ io.javaoperatorsdk java-operator-sdk - 1.7.6-SNAPSHOT + 1.8.0-SNAPSHOT Operator SDK for Java Java SDK for implementing Kubernetes operators pom @@ -45,7 +45,6 @@ operator-framework-core operator-framework - operator-framework-quarkus-extension operator-framework-spring-boot-starter operator-framework-spring-boot-starter-test samples diff --git a/samples/common/pom.xml b/samples/common/pom.xml index b14c00ff4e..a90b93bd97 100644 --- a/samples/common/pom.xml +++ b/samples/common/pom.xml @@ -6,7 +6,7 @@ io.javaoperatorsdk java-operator-sdk-samples - 1.7.6-SNAPSHOT + 1.8.0-SNAPSHOT operator-framework-samples-common diff --git a/samples/pom.xml b/samples/pom.xml index 58066b621e..d5532d4892 100644 --- a/samples/pom.xml +++ b/samples/pom.xml @@ -6,7 +6,7 @@ io.javaoperatorsdk java-operator-sdk - 1.7.6-SNAPSHOT + 1.8.0-SNAPSHOT java-operator-sdk-samples diff --git a/samples/pure-java/pom.xml b/samples/pure-java/pom.xml index 778fe08df2..7f3815db8a 100644 --- a/samples/pure-java/pom.xml +++ b/samples/pure-java/pom.xml @@ -6,7 +6,7 @@ io.javaoperatorsdk java-operator-sdk-samples - 1.7.6-SNAPSHOT + 1.8.0-SNAPSHOT operator-framework-samples-pure-java diff --git a/samples/quarkus/pom.xml b/samples/quarkus/pom.xml index f9bc831d97..803a64064e 100644 --- a/samples/quarkus/pom.xml +++ b/samples/quarkus/pom.xml @@ -5,7 +5,7 @@ io.javaoperatorsdk java-operator-sdk-samples - 1.7.6-SNAPSHOT + 1.8.0-SNAPSHOT 4.0.0 @@ -43,9 +43,9 @@ - io.javaoperatorsdk - operator-framework-quarkus-extension - ${project.version} + io.quarkiverse.operatorsdk + quarkus-operator-sdk + 1.8.0.CR1 io.javaoperatorsdk diff --git a/samples/spring-boot-auto-config/pom.xml b/samples/spring-boot-auto-config/pom.xml index 27f652eee4..2de1e91c7d 100644 --- a/samples/spring-boot-auto-config/pom.xml +++ b/samples/spring-boot-auto-config/pom.xml @@ -8,7 +8,7 @@ io.javaoperatorsdk java-operator-sdk-samples - 1.7.6-SNAPSHOT + 1.8.0-SNAPSHOT operator-framework-samples-spring-boot-auto-configuration diff --git a/samples/spring-boot-plain/pom.xml b/samples/spring-boot-plain/pom.xml index 723594809e..d76a515066 100644 --- a/samples/spring-boot-plain/pom.xml +++ b/samples/spring-boot-plain/pom.xml @@ -6,7 +6,7 @@ io.javaoperatorsdk java-operator-sdk-samples - 1.7.6-SNAPSHOT + 1.8.0-SNAPSHOT operator-framework-samples-spring-boot-plain