diff --git a/README.md b/README.md index bbf28ff1ec..c5f846b068 100644 --- a/README.md +++ b/README.md @@ -69,8 +69,7 @@ Main method initializing the Operator and registering a controller. public class Runner { public static void main(String[] args) { - Operator operator = new Operator(new DefaultKubernetesClient(), - DefaultConfigurationService.instance()); + Operator operator = new StandaloneOperator(new DefaultKubernetesClient()); operator.register(new WebServerController()); } } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/AbstractOperator.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/AbstractOperator.java new file mode 100644 index 0000000000..06f736575c --- /dev/null +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/AbstractOperator.java @@ -0,0 +1,173 @@ +package io.javaoperatorsdk.operator; + +import io.fabric8.kubernetes.api.model.apiextensions.v1beta1.CustomResourceDefinition; +import io.fabric8.kubernetes.client.CustomResource; +import io.fabric8.kubernetes.client.CustomResourceDoneable; +import io.fabric8.kubernetes.client.CustomResourceList; +import io.fabric8.kubernetes.client.KubernetesClient; +import io.fabric8.kubernetes.client.dsl.MixedOperation; +import io.fabric8.kubernetes.client.dsl.base.CustomResourceDefinitionContext; +import io.fabric8.kubernetes.client.dsl.internal.CustomResourceOperationsImpl; +import io.fabric8.kubernetes.internal.KubernetesDeserializer; +import io.javaoperatorsdk.operator.api.ResourceController; +import io.javaoperatorsdk.operator.api.config.ConfigurationService; +import io.javaoperatorsdk.operator.processing.CustomResourceCache; +import io.javaoperatorsdk.operator.processing.DefaultEventHandler; +import io.javaoperatorsdk.operator.processing.EventDispatcher; +import io.javaoperatorsdk.operator.processing.event.DefaultEventSourceManager; +import io.javaoperatorsdk.operator.processing.event.internal.CustomResourceEventSource; +import io.javaoperatorsdk.operator.processing.retry.GenericRetry; +import io.javaoperatorsdk.operator.processing.retry.Retry; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +@SuppressWarnings("rawtypes") +public abstract class AbstractOperator implements Operator { + + private static final Logger log = LoggerFactory.getLogger(AbstractOperator.class); + private final KubernetesClient k8sClient; + private final ConfigurationService configurationService; + private Map, CustomResourceOperationsImpl> customResourceClients = + new HashMap<>(); + + public AbstractOperator(KubernetesClient k8sClient, ConfigurationService configurationService) { + this.k8sClient = k8sClient; + this.configurationService = configurationService; + } + + @Override + public void register(ResourceController controller) + throws OperatorException { + final var configuration = configurationService.getConfigurationFor(controller); + final var retry = GenericRetry.fromConfiguration(configuration.getRetryConfiguration()); + final var targetNamespaces = configuration.getNamespaces().toArray(new String[] {}); + registerController(controller, configuration.watchAllNamespaces(), retry, targetNamespaces); + } + + @Override + public void registerControllerForAllNamespaces( + ResourceController controller, Retry retry) throws OperatorException { + registerController(controller, true, retry); + } + + @Override + public void registerControllerForAllNamespaces( + ResourceController controller) throws OperatorException { + registerController(controller, true, null); + } + + @Override + public void registerController( + ResourceController controller, Retry retry, String... targetNamespaces) + throws OperatorException { + registerController(controller, false, retry, targetNamespaces); + } + + @Override + public void registerController( + ResourceController controller, String... targetNamespaces) throws OperatorException { + registerController(controller, false, null, targetNamespaces); + } + + @SuppressWarnings("rawtypes") + private void registerController( + ResourceController controller, + boolean watchAllNamespaces, + Retry retry, + String... targetNamespaces) + throws OperatorException { + final var configuration = configurationService.getConfigurationFor(controller); + Class resClass = configuration.getCustomResourceClass(); + CustomResourceDefinitionContext crd = getCustomResourceDefinitionForController(controller); + KubernetesDeserializer.registerCustomKind(crd.getVersion(), crd.getKind(), resClass); + String finalizer = configuration.getFinalizer(); + MixedOperation client = + k8sClient.customResources( + crd, resClass, CustomResourceList.class, configuration.getDoneableClass()); + EventDispatcher eventDispatcher = + new EventDispatcher( + controller, finalizer, new EventDispatcher.CustomResourceFacade(client)); + + CustomResourceCache customResourceCache = new CustomResourceCache(); + DefaultEventHandler defaultEventHandler = + new DefaultEventHandler( + customResourceCache, eventDispatcher, controller.getClass().getName(), retry); + DefaultEventSourceManager eventSourceManager = + new DefaultEventSourceManager(defaultEventHandler, retry != null); + defaultEventHandler.setEventSourceManager(eventSourceManager); + eventDispatcher.setEventSourceManager(eventSourceManager); + + customResourceClients.put(resClass, (CustomResourceOperationsImpl) client); + + controller.init(eventSourceManager); + CustomResourceEventSource customResourceEventSource = + createCustomResourceEventSource( + client, + customResourceCache, + watchAllNamespaces, + targetNamespaces, + defaultEventHandler, + configuration.isGenerationAware(), + finalizer); + eventSourceManager.registerCustomResourceEventSource(customResourceEventSource); + + log.info( + "Registered Controller: '{}' for CRD: '{}' for namespaces: {}", + controller.getClass().getSimpleName(), + resClass, + targetNamespaces.length == 0 + ? "[all/client namespace]" + : Arrays.toString(targetNamespaces)); + } + + private CustomResourceEventSource createCustomResourceEventSource( + MixedOperation client, + CustomResourceCache customResourceCache, + boolean watchAllNamespaces, + String[] targetNamespaces, + DefaultEventHandler defaultEventHandler, + boolean generationAware, + String finalizer) { + CustomResourceEventSource customResourceEventSource = + watchAllNamespaces + ? CustomResourceEventSource.customResourceEventSourceForAllNamespaces( + customResourceCache, client, generationAware, finalizer) + : CustomResourceEventSource.customResourceEventSourceForTargetNamespaces( + customResourceCache, client, targetNamespaces, generationAware, finalizer); + + customResourceEventSource.setEventHandler(defaultEventHandler); + + return customResourceEventSource; + } + + private CustomResourceDefinitionContext getCustomResourceDefinitionForController( + ResourceController controller) { + final var crdName = configurationService.getConfigurationFor(controller).getCRDName(); + CustomResourceDefinition customResourceDefinition = + k8sClient.customResourceDefinitions().withName(crdName).get(); + if (customResourceDefinition == null) { + throw new OperatorException("Cannot find Custom Resource Definition with name: " + crdName); + } + CustomResourceDefinitionContext context = + CustomResourceDefinitionContext.fromCrd(customResourceDefinition); + return context; + } + + @Override + public Map, CustomResourceOperationsImpl> + getCustomResourceClients() { + return customResourceClients; + } + + @Override + public < + T extends CustomResource, + L extends CustomResourceList, + D extends CustomResourceDoneable> + CustomResourceOperationsImpl getCustomResourceClients(Class customResourceClass) { + return customResourceClients.get(customResourceClass); + } +} 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 ebec85bcda..bd7044aa13 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 @@ -1,166 +1,33 @@ package io.javaoperatorsdk.operator; -import io.fabric8.kubernetes.api.model.apiextensions.v1beta1.CustomResourceDefinition; import io.fabric8.kubernetes.client.CustomResource; import io.fabric8.kubernetes.client.CustomResourceDoneable; import io.fabric8.kubernetes.client.CustomResourceList; -import io.fabric8.kubernetes.client.KubernetesClient; -import io.fabric8.kubernetes.client.dsl.MixedOperation; -import io.fabric8.kubernetes.client.dsl.base.CustomResourceDefinitionContext; import io.fabric8.kubernetes.client.dsl.internal.CustomResourceOperationsImpl; -import io.fabric8.kubernetes.internal.KubernetesDeserializer; import io.javaoperatorsdk.operator.api.ResourceController; -import io.javaoperatorsdk.operator.api.config.ConfigurationService; -import io.javaoperatorsdk.operator.processing.CustomResourceCache; -import io.javaoperatorsdk.operator.processing.DefaultEventHandler; -import io.javaoperatorsdk.operator.processing.EventDispatcher; -import io.javaoperatorsdk.operator.processing.event.DefaultEventSourceManager; -import io.javaoperatorsdk.operator.processing.event.internal.CustomResourceEventSource; -import io.javaoperatorsdk.operator.processing.retry.GenericRetry; import io.javaoperatorsdk.operator.processing.retry.Retry; -import java.util.Arrays; -import java.util.HashMap; import java.util.Map; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -@SuppressWarnings("rawtypes") -public class Operator { +public interface Operator { - private static final Logger log = LoggerFactory.getLogger(Operator.class); - private final KubernetesClient k8sClient; - private final ConfigurationService configurationService; - private Map, CustomResourceOperationsImpl> customResourceClients = - new HashMap<>(); + void register(ResourceController controller) + throws OperatorException; - public Operator(KubernetesClient k8sClient, ConfigurationService configurationService) { - this.k8sClient = k8sClient; - this.configurationService = configurationService; - } + void registerControllerForAllNamespaces( + ResourceController controller, Retry retry) throws OperatorException; - public void register(ResourceController controller) - throws OperatorException { - final var configuration = configurationService.getConfigurationFor(controller); - final var retry = GenericRetry.fromConfiguration(configuration.getRetryConfiguration()); - final var targetNamespaces = configuration.getNamespaces().toArray(new String[] {}); - registerController(controller, configuration.watchAllNamespaces(), retry, targetNamespaces); - } + void registerControllerForAllNamespaces( + ResourceController controller) throws OperatorException; - public void registerControllerForAllNamespaces( - ResourceController controller, Retry retry) throws OperatorException { - registerController(controller, true, retry); - } - - public void registerControllerForAllNamespaces( - ResourceController controller) throws OperatorException { - registerController(controller, true, null); - } - - public void registerController( + void registerController( ResourceController controller, Retry retry, String... targetNamespaces) - throws OperatorException { - registerController(controller, false, retry, targetNamespaces); - } - - public void registerController( - ResourceController controller, String... targetNamespaces) throws OperatorException { - registerController(controller, false, null, targetNamespaces); - } - - @SuppressWarnings("rawtypes") - private void registerController( - ResourceController controller, - boolean watchAllNamespaces, - Retry retry, - String... targetNamespaces) - throws OperatorException { - final var configuration = configurationService.getConfigurationFor(controller); - Class resClass = configuration.getCustomResourceClass(); - CustomResourceDefinitionContext crd = getCustomResourceDefinitionForController(controller); - KubernetesDeserializer.registerCustomKind(crd.getVersion(), crd.getKind(), resClass); - String finalizer = configuration.getFinalizer(); - MixedOperation client = - k8sClient.customResources( - crd, resClass, CustomResourceList.class, configuration.getDoneableClass()); - EventDispatcher eventDispatcher = - new EventDispatcher( - controller, finalizer, new EventDispatcher.CustomResourceFacade(client)); - - CustomResourceCache customResourceCache = new CustomResourceCache(); - DefaultEventHandler defaultEventHandler = - new DefaultEventHandler( - customResourceCache, eventDispatcher, controller.getClass().getName(), retry); - DefaultEventSourceManager eventSourceManager = - new DefaultEventSourceManager(defaultEventHandler, retry != null); - defaultEventHandler.setEventSourceManager(eventSourceManager); - eventDispatcher.setEventSourceManager(eventSourceManager); - - customResourceClients.put(resClass, (CustomResourceOperationsImpl) client); - - controller.init(eventSourceManager); - CustomResourceEventSource customResourceEventSource = - createCustomResourceEventSource( - client, - customResourceCache, - watchAllNamespaces, - targetNamespaces, - defaultEventHandler, - configuration.isGenerationAware(), - finalizer); - eventSourceManager.registerCustomResourceEventSource(customResourceEventSource); - - log.info( - "Registered Controller: '{}' for CRD: '{}' for namespaces: {}", - controller.getClass().getSimpleName(), - resClass, - targetNamespaces.length == 0 - ? "[all/client namespace]" - : Arrays.toString(targetNamespaces)); - } - - private CustomResourceEventSource createCustomResourceEventSource( - MixedOperation client, - CustomResourceCache customResourceCache, - boolean watchAllNamespaces, - String[] targetNamespaces, - DefaultEventHandler defaultEventHandler, - boolean generationAware, - String finalizer) { - CustomResourceEventSource customResourceEventSource = - watchAllNamespaces - ? CustomResourceEventSource.customResourceEventSourceForAllNamespaces( - customResourceCache, client, generationAware, finalizer) - : CustomResourceEventSource.customResourceEventSourceForTargetNamespaces( - customResourceCache, client, targetNamespaces, generationAware, finalizer); - - customResourceEventSource.setEventHandler(defaultEventHandler); - - return customResourceEventSource; - } + throws OperatorException; - private CustomResourceDefinitionContext getCustomResourceDefinitionForController( - ResourceController controller) { - final var crdName = configurationService.getConfigurationFor(controller).getCRDName(); - CustomResourceDefinition customResourceDefinition = - k8sClient.customResourceDefinitions().withName(crdName).get(); - if (customResourceDefinition == null) { - throw new OperatorException("Cannot find Custom Resource Definition with name: " + crdName); - } - CustomResourceDefinitionContext context = - CustomResourceDefinitionContext.fromCrd(customResourceDefinition); - return context; - } + void registerController( + ResourceController controller, String... targetNamespaces) throws OperatorException; - public Map, CustomResourceOperationsImpl> - getCustomResourceClients() { - return customResourceClients; - } + Map, CustomResourceOperationsImpl> getCustomResourceClients(); - public < - T extends CustomResource, - L extends CustomResourceList, - D extends CustomResourceDoneable> - CustomResourceOperationsImpl getCustomResourceClients(Class customResourceClass) { - return customResourceClients.get(customResourceClass); - } + , D extends CustomResourceDoneable> + CustomResourceOperationsImpl getCustomResourceClients(Class customResourceClass); } 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 index ac0964cf65..d151b4a54a 100644 --- 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 @@ -1,6 +1,5 @@ package io.javaoperatorsdk.quarkus.extension; -import io.javaoperatorsdk.operator.api.config.ConfigurationService; import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; import io.quarkus.runtime.annotations.Recorder; import java.util.List; @@ -9,7 +8,7 @@ @Recorder public class ConfigurationServiceRecorder { - public Supplier configurationServiceSupplier( + public Supplier configurationServiceSupplier( List controllerConfigs) { return () -> new QuarkusConfigurationService(controllerConfigs); } 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 index 7ad1cbac56..9cb769b2a6 100644 --- 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 @@ -4,7 +4,6 @@ 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; @@ -19,8 +18,8 @@ public class OperatorProducer { @Produces @DefaultBean @Singleton - Operator operator(KubernetesClient client, ConfigurationService configuration) { - final var operator = new Operator(client, configuration); + Operator operator(KubernetesClient client, QuarkusConfigurationService configuration) { + final var operator = new QuarkusOperator(client, configuration); controllers.stream().forEach(operator::register); return operator; } diff --git a/operator-framework-quarkus-extension/runtime/src/main/java/io/javaoperatorsdk/quarkus/extension/QuarkusOperator.java b/operator-framework-quarkus-extension/runtime/src/main/java/io/javaoperatorsdk/quarkus/extension/QuarkusOperator.java new file mode 100644 index 0000000000..a2b6b9a3b6 --- /dev/null +++ b/operator-framework-quarkus-extension/runtime/src/main/java/io/javaoperatorsdk/quarkus/extension/QuarkusOperator.java @@ -0,0 +1,12 @@ +package io.javaoperatorsdk.quarkus.extension; + +import io.fabric8.kubernetes.client.KubernetesClient; +import io.javaoperatorsdk.operator.AbstractOperator; + +public class QuarkusOperator extends AbstractOperator { + + public QuarkusOperator( + KubernetesClient k8sClient, QuarkusConfigurationService configurationService) { + super(k8sClient, configurationService); + } +} diff --git a/operator-framework-spring-boot-starter/src/main/java/io/javaoperatorsdk/operator/springboot/starter/OperatorAutoConfiguration.java b/operator-framework-spring-boot-starter/src/main/java/io/javaoperatorsdk/operator/springboot/starter/OperatorAutoConfiguration.java index b14bd718f8..c81b22702b 100644 --- a/operator-framework-spring-boot-starter/src/main/java/io/javaoperatorsdk/operator/springboot/starter/OperatorAutoConfiguration.java +++ b/operator-framework-spring-boot-starter/src/main/java/io/javaoperatorsdk/operator/springboot/starter/OperatorAutoConfiguration.java @@ -6,7 +6,7 @@ import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.openshift.client.DefaultOpenShiftClient; -import io.javaoperatorsdk.operator.Operator; +import io.javaoperatorsdk.operator.StandaloneOperator; import io.javaoperatorsdk.operator.api.ResourceController; import io.javaoperatorsdk.operator.api.config.ConfigurationService; import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; @@ -50,10 +50,10 @@ public Config getClientConfiguration() { } @Bean - @ConditionalOnMissingBean(Operator.class) - public Operator operator( - KubernetesClient kubernetesClient, List> resourceControllers) { - Operator operator = new Operator(kubernetesClient, this); + @ConditionalOnMissingBean(StandaloneOperator.class) + public StandaloneOperator operator( + KubernetesClient kubernetesClient, List resourceControllers) { + final var operator = new StandaloneOperator(kubernetesClient, this); resourceControllers.forEach(r -> operator.register(processController(r))); return operator; } diff --git a/operator-framework/src/main/java/io/javaoperatorsdk/operator/StandaloneOperator.java b/operator-framework/src/main/java/io/javaoperatorsdk/operator/StandaloneOperator.java new file mode 100644 index 0000000000..e6b716390b --- /dev/null +++ b/operator-framework/src/main/java/io/javaoperatorsdk/operator/StandaloneOperator.java @@ -0,0 +1,10 @@ +package io.javaoperatorsdk.operator; + +import io.fabric8.kubernetes.client.KubernetesClient; +import io.javaoperatorsdk.operator.api.config.ConfigurationService; + +public class StandaloneOperator extends AbstractOperator { + public StandaloneOperator(KubernetesClient k8sClient, ConfigurationService configurationService) { + super(k8sClient, configurationService); + } +} diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/ControllerExecutionIT.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/ControllerExecutionIT.java index 505e986a3a..2bab2224d4 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/ControllerExecutionIT.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/ControllerExecutionIT.java @@ -1,6 +1,6 @@ package io.javaoperatorsdk.operator; -import static org.assertj.core.api.Assertions.*; +import static org.assertj.core.api.Assertions.assertThat; import static org.awaitility.Awaitility.await; import io.fabric8.kubernetes.api.model.ConfigMap; diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/IntegrationTestSupport.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/IntegrationTestSupport.java index 6f54d6aa80..f5ced20948 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/IntegrationTestSupport.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/IntegrationTestSupport.java @@ -71,7 +71,7 @@ public void initialize( .withMetadata(new ObjectMetaBuilder().withName(TEST_NAMESPACE).build()) .build()); } - operator = new Operator(k8sClient, configurationService); + operator = new StandaloneOperator(k8sClient, configurationService); operator.registerController(controller, retry, TEST_NAMESPACE); log.info("Operator is running with {}", controller.getClass().getCanonicalName()); } diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/RetryIT.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/RetryIT.java index ef19561f02..970df02e65 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/RetryIT.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/RetryIT.java @@ -1,7 +1,7 @@ package io.javaoperatorsdk.operator; import static io.javaoperatorsdk.operator.IntegrationTestSupport.TEST_NAMESPACE; -import static org.assertj.core.api.Assertions.*; +import static org.assertj.core.api.Assertions.assertThat; import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; import io.fabric8.kubernetes.client.DefaultKubernetesClient; diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/doubleupdate/DoubleUpdateTestCustomResourceController.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/doubleupdate/DoubleUpdateTestCustomResourceController.java index 0169ececd6..3d4589d22a 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/doubleupdate/DoubleUpdateTestCustomResourceController.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/doubleupdate/DoubleUpdateTestCustomResourceController.java @@ -1,7 +1,11 @@ package io.javaoperatorsdk.operator.sample.doubleupdate; import io.javaoperatorsdk.operator.TestExecutionInfoProvider; -import io.javaoperatorsdk.operator.api.*; +import io.javaoperatorsdk.operator.api.Context; +import io.javaoperatorsdk.operator.api.Controller; +import io.javaoperatorsdk.operator.api.DeleteControl; +import io.javaoperatorsdk.operator.api.ResourceController; +import io.javaoperatorsdk.operator.api.UpdateControl; import java.util.HashMap; import java.util.concurrent.atomic.AtomicInteger; import org.slf4j.Logger; diff --git a/samples/mysql-schema/src/main/java/io/javaoperatorsdk/operator/sample/MySQLSchemaOperator.java b/samples/mysql-schema/src/main/java/io/javaoperatorsdk/operator/sample/MySQLSchemaOperator.java index dd6aacfb64..c5ca0e9f70 100644 --- a/samples/mysql-schema/src/main/java/io/javaoperatorsdk/operator/sample/MySQLSchemaOperator.java +++ b/samples/mysql-schema/src/main/java/io/javaoperatorsdk/operator/sample/MySQLSchemaOperator.java @@ -5,6 +5,7 @@ import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; import io.javaoperatorsdk.operator.Operator; +import io.javaoperatorsdk.operator.StandaloneOperator; import io.javaoperatorsdk.operator.config.runtime.DefaultConfigurationService; import java.io.IOException; import org.slf4j.Logger; @@ -23,7 +24,7 @@ public static void main(String[] args) throws IOException { Config config = new ConfigBuilder().withNamespace(null).build(); KubernetesClient client = new DefaultKubernetesClient(config); - Operator operator = new Operator(client, DefaultConfigurationService.instance()); + Operator operator = new StandaloneOperator(client, DefaultConfigurationService.instance()); operator.registerControllerForAllNamespaces(new SchemaController(client)); new FtBasic(new TkFork(new FkRegex("/health", "ALL GOOD!")), 8080).start(Exit.NEVER); diff --git a/samples/pure-java/src/main/java/io/javaoperatorsdk/operator/sample/PureJavaApplicationRunner.java b/samples/pure-java/src/main/java/io/javaoperatorsdk/operator/sample/PureJavaApplicationRunner.java index e2ab96617b..a3813c3fba 100644 --- a/samples/pure-java/src/main/java/io/javaoperatorsdk/operator/sample/PureJavaApplicationRunner.java +++ b/samples/pure-java/src/main/java/io/javaoperatorsdk/operator/sample/PureJavaApplicationRunner.java @@ -3,13 +3,14 @@ import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; import io.javaoperatorsdk.operator.Operator; +import io.javaoperatorsdk.operator.StandaloneOperator; import io.javaoperatorsdk.operator.config.runtime.DefaultConfigurationService; public class PureJavaApplicationRunner { public static void main(String[] args) { KubernetesClient client = new DefaultKubernetesClient(); - Operator operator = new Operator(client, DefaultConfigurationService.instance()); + Operator operator = new StandaloneOperator(client, DefaultConfigurationService.instance()); operator.registerController(new CustomServiceController(client)); } } diff --git a/samples/spring-boot-auto-config/src/main/java/io/javaoperatorsdk/operator/sample/SampleComponent.java b/samples/spring-boot-auto-config/src/main/java/io/javaoperatorsdk/operator/sample/SampleComponent.java index ff846507b3..e7ee16ba5b 100644 --- a/samples/spring-boot-auto-config/src/main/java/io/javaoperatorsdk/operator/sample/SampleComponent.java +++ b/samples/spring-boot-auto-config/src/main/java/io/javaoperatorsdk/operator/sample/SampleComponent.java @@ -1,21 +1,21 @@ package io.javaoperatorsdk.operator.sample; import io.fabric8.kubernetes.client.KubernetesClient; -import io.javaoperatorsdk.operator.Operator; +import io.javaoperatorsdk.operator.StandaloneOperator; import org.springframework.stereotype.Component; /** This component just showcases what beans are registered. */ @Component public class SampleComponent { - private final Operator operator; + private final StandaloneOperator operator; private final KubernetesClient kubernetesClient; private final CustomServiceController customServiceController; public SampleComponent( - Operator operator, + StandaloneOperator operator, KubernetesClient kubernetesClient, CustomServiceController customServiceController) { this.operator = operator; diff --git a/samples/spring-boot-plain/src/main/java/io/javaoperatorsdk/operator/sample/Config.java b/samples/spring-boot-plain/src/main/java/io/javaoperatorsdk/operator/sample/Config.java index 239fb64816..7868401bb0 100644 --- a/samples/spring-boot-plain/src/main/java/io/javaoperatorsdk/operator/sample/Config.java +++ b/samples/spring-boot-plain/src/main/java/io/javaoperatorsdk/operator/sample/Config.java @@ -2,7 +2,7 @@ import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; -import io.javaoperatorsdk.operator.Operator; +import io.javaoperatorsdk.operator.StandaloneOperator; import io.javaoperatorsdk.operator.api.ResourceController; import io.javaoperatorsdk.operator.config.runtime.DefaultConfigurationService; import java.util.List; @@ -24,8 +24,10 @@ public CustomServiceController customServiceController(KubernetesClient client) // Register all controller beans @Bean - public Operator operator(KubernetesClient client, List controllers) { - Operator operator = new Operator(client, DefaultConfigurationService.instance()); + public StandaloneOperator operator( + KubernetesClient client, List controllers) { + StandaloneOperator operator = + new StandaloneOperator(client, DefaultConfigurationService.instance()); controllers.forEach(c -> operator.registerControllerForAllNamespaces(c)); return operator; } diff --git a/samples/tomcat/src/main/java/io/javaoperatorsdk/operator/sample/TomcatController.java b/samples/tomcat/src/main/java/io/javaoperatorsdk/operator/sample/TomcatController.java index 3943d41557..cb92f271ad 100644 --- a/samples/tomcat/src/main/java/io/javaoperatorsdk/operator/sample/TomcatController.java +++ b/samples/tomcat/src/main/java/io/javaoperatorsdk/operator/sample/TomcatController.java @@ -15,7 +15,11 @@ import io.fabric8.kubernetes.client.dsl.RollableScalableResource; import io.fabric8.kubernetes.client.dsl.ServiceResource; import io.fabric8.kubernetes.client.utils.Serialization; -import io.javaoperatorsdk.operator.api.*; +import io.javaoperatorsdk.operator.api.Context; +import io.javaoperatorsdk.operator.api.Controller; +import io.javaoperatorsdk.operator.api.DeleteControl; +import io.javaoperatorsdk.operator.api.ResourceController; +import io.javaoperatorsdk.operator.api.UpdateControl; import io.javaoperatorsdk.operator.processing.event.EventSourceManager; import io.javaoperatorsdk.operator.processing.event.internal.CustomResourceEvent; import java.io.IOException; diff --git a/samples/tomcat/src/main/java/io/javaoperatorsdk/operator/sample/TomcatOperator.java b/samples/tomcat/src/main/java/io/javaoperatorsdk/operator/sample/TomcatOperator.java index 579c7fed7e..914e0be88a 100644 --- a/samples/tomcat/src/main/java/io/javaoperatorsdk/operator/sample/TomcatOperator.java +++ b/samples/tomcat/src/main/java/io/javaoperatorsdk/operator/sample/TomcatOperator.java @@ -5,6 +5,7 @@ import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; import io.javaoperatorsdk.operator.Operator; +import io.javaoperatorsdk.operator.StandaloneOperator; import io.javaoperatorsdk.operator.config.runtime.DefaultConfigurationService; import java.io.IOException; import org.slf4j.Logger; @@ -22,7 +23,7 @@ public static void main(String[] args) throws IOException { Config config = new ConfigBuilder().withNamespace(null).build(); KubernetesClient client = new DefaultKubernetesClient(config); - Operator operator = new Operator(client, DefaultConfigurationService.instance()); + Operator operator = new StandaloneOperator(client, DefaultConfigurationService.instance()); TomcatController tomcatController = new TomcatController(client); operator.registerControllerForAllNamespaces(tomcatController); diff --git a/samples/tomcat/src/main/java/io/javaoperatorsdk/operator/sample/WebappController.java b/samples/tomcat/src/main/java/io/javaoperatorsdk/operator/sample/WebappController.java index 32c3c2cd2f..97e45215b0 100644 --- a/samples/tomcat/src/main/java/io/javaoperatorsdk/operator/sample/WebappController.java +++ b/samples/tomcat/src/main/java/io/javaoperatorsdk/operator/sample/WebappController.java @@ -3,7 +3,11 @@ import io.fabric8.kubernetes.api.model.Pod; import io.fabric8.kubernetes.api.model.apps.Deployment; import io.fabric8.kubernetes.client.KubernetesClient; -import io.javaoperatorsdk.operator.api.*; +import io.javaoperatorsdk.operator.api.Context; +import io.javaoperatorsdk.operator.api.Controller; +import io.javaoperatorsdk.operator.api.DeleteControl; +import io.javaoperatorsdk.operator.api.ResourceController; +import io.javaoperatorsdk.operator.api.UpdateControl; import java.io.ByteArrayOutputStream; import java.util.List; import java.util.Objects; diff --git a/samples/webserver/src/main/java/io/javaoperatorsdk/operator/sample/WebServerOperator.java b/samples/webserver/src/main/java/io/javaoperatorsdk/operator/sample/WebServerOperator.java index db06f88e6a..46d8374042 100644 --- a/samples/webserver/src/main/java/io/javaoperatorsdk/operator/sample/WebServerOperator.java +++ b/samples/webserver/src/main/java/io/javaoperatorsdk/operator/sample/WebServerOperator.java @@ -5,6 +5,7 @@ import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; import io.javaoperatorsdk.operator.Operator; +import io.javaoperatorsdk.operator.StandaloneOperator; import io.javaoperatorsdk.operator.config.runtime.DefaultConfigurationService; import java.io.IOException; import org.slf4j.Logger; @@ -23,7 +24,7 @@ public static void main(String[] args) throws IOException { Config config = new ConfigBuilder().withNamespace(null).build(); KubernetesClient client = new DefaultKubernetesClient(config); - Operator operator = new Operator(client, DefaultConfigurationService.instance()); + Operator operator = new StandaloneOperator(client, DefaultConfigurationService.instance()); operator.registerControllerForAllNamespaces(new WebServerController(client)); new FtBasic(new TkFork(new FkRegex("/health", "ALL GOOD!")), 8080).start(Exit.NEVER);