From d478e353e83739100bcce09247fb5c742cadfee7 Mon Sep 17 00:00:00 2001 From: csviri Date: Tue, 2 Nov 2021 10:46:12 +0100 Subject: [PATCH 01/24] refactor: renaming central classes and APIs --- .../operator/ControllerUtils.java | 14 ++--- .../io/javaoperatorsdk/operator/Operator.java | 20 +++---- ...esourceController.java => Reconciler.java} | 6 +- .../config/AbstractConfigurationService.java | 6 +- .../api/config/ConfigurationService.java | 4 +- .../config/ConfigurationServiceOverrider.java | 4 +- .../api/config/ControllerConfiguration.java | 2 +- .../processing/ConfiguredController.java | 26 ++++----- .../operator/processing/EventDispatcher.java | 8 +-- ...tEventHandler.java => EventProcessor.java} | 10 ++-- .../event/DefaultEventSourceManager.java | 22 +++---- .../operator/ControllerManagerTest.java | 18 +++--- .../operator/ControllerUtilsTest.java | 8 +-- .../processing/EventDispatcherTest.java | 46 +++++++-------- ...ndlerTest.java => EventProcessorTest.java} | 58 +++++++++---------- .../event/DefaultEventSourceManagerTest.java | 8 +-- .../internal/CustomResourceSelectorTest.java | 10 ++-- .../sample/simple/DuplicateCRController.java | 6 +- ...troller.java => TestCustomReconciler.java} | 16 ++--- ...lerV2.java => TestCustomReconcilerV2.java} | 6 +- .../operator/junit/OperatorExtension.java | 22 +++---- .../runtime/AnnotationConfiguration.java | 6 +- .../ControllerAnnotationProcessor.java | 4 +- .../runtime/DefaultConfigurationService.java | 6 +- .../runtime/RuntimeControllerMetadata.java | 8 +-- .../operator/ConcurrencyIT.java | 8 +-- .../operator/ControllerExecutionIT.java | 8 +-- .../operator/EventSourceIT.java | 8 +-- .../operator/InformerEventSourceIT.java | 8 +-- .../io/javaoperatorsdk/operator/RetryIT.java | 10 ++-- .../operator/SubResourceUpdateIT.java | 6 +- .../operator/UpdatingResAndSubResIT.java | 6 +- .../ControllerAnnotationProcessorTest.java | 12 ++-- .../DefaultConfigurationServiceTest.java | 16 ++--- ... => DoubleUpdateTestCustomReconciler.java} | 10 ++-- ...a => EventSourceTestCustomReconciler.java} | 10 ++-- ...ormerEventSourceTestCustomReconciler.java} | 10 ++-- ...er.java => RetryTestCustomReconciler.java} | 10 ++-- ...rceController.java => TestReconciler.java} | 18 +++--- ...a => SubResourceTestCustomReconciler.java} | 10 ++-- ...ontroller.java => AbstractReconciler.java} | 6 +- .../AdditionalControllerInterface.java | 11 ---- .../AdditionalReconcilerInterface.java | 11 ++++ ...java => MultilevelAbstractReconciler.java} | 4 +- ...troller.java => MultilevelReconciler.java} | 10 ++-- ... => ReconcilerImplemented2Interfaces.java} | 8 +-- ...ImplementedIntermediateAbstractClass.java} | 10 ++-- .../sample/CustomServiceController.java | 8 +-- .../sample/PureJavaApplicationRunner.java | 2 +- .../operator/sample/Config.java | 6 +- 50 files changed, 285 insertions(+), 285 deletions(-) rename operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/{ResourceController.java => Reconciler.java} (92%) rename operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/{DefaultEventHandler.java => EventProcessor.java} (97%) rename operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/{DefaultEventHandlerTest.java => EventProcessorTest.java} (86%) rename operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/{TestCustomResourceController.java => TestCustomReconciler.java} (88%) rename operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/{TestCustomResourceControllerV2.java => TestCustomReconcilerV2.java} (65%) rename operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/doubleupdate/{DoubleUpdateTestCustomResourceController.java => DoubleUpdateTestCustomReconciler.java} (84%) rename operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/event/{EventSourceTestCustomResourceController.java => EventSourceTestCustomReconciler.java} (88%) rename operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/informereventsource/{InformerEventSourceTestCustomResourceController.java => InformerEventSourceTestCustomReconciler.java} (88%) rename operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/retry/{RetryTestCustomResourceController.java => RetryTestCustomReconciler.java} (88%) rename operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/simple/{TestCustomResourceController.java => TestReconciler.java} (91%) rename operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/subresource/{SubResourceTestCustomResourceController.java => SubResourceTestCustomReconciler.java} (85%) rename operator-framework/src/test/resources/compile-fixtures/{AbstractController.java => AbstractReconciler.java} (58%) delete mode 100644 operator-framework/src/test/resources/compile-fixtures/AdditionalControllerInterface.java create mode 100644 operator-framework/src/test/resources/compile-fixtures/AdditionalReconcilerInterface.java rename operator-framework/src/test/resources/compile-fixtures/{MultilevelAbstractController.java => MultilevelAbstractReconciler.java} (58%) rename operator-framework/src/test/resources/compile-fixtures/{MultilevelController.java => MultilevelReconciler.java} (60%) rename operator-framework/src/test/resources/compile-fixtures/{ControllerImplemented2Interfaces.java => ReconcilerImplemented2Interfaces.java} (63%) rename operator-framework/src/test/resources/compile-fixtures/{ControllerImplementedIntermediateAbstractClass.java => ReconcilerImplementedIntermediateAbstractClass.java} (55%) diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/ControllerUtils.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/ControllerUtils.java index b525055a81..00ac739242 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/ControllerUtils.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/ControllerUtils.java @@ -3,7 +3,7 @@ import java.util.Locale; import io.javaoperatorsdk.operator.api.Controller; -import io.javaoperatorsdk.operator.api.ResourceController; +import io.javaoperatorsdk.operator.api.Reconciler; @SuppressWarnings("rawtypes") public class ControllerUtils { @@ -14,7 +14,7 @@ public static String getDefaultFinalizerName(String crdName) { return crdName + FINALIZER_NAME_SUFFIX; } - public static String getNameFor(Class controllerClass) { + public static String getNameFor(Class controllerClass) { // if the controller annotation has a name attribute, use it final var annotation = controllerClass.getAnnotation(Controller.class); if (annotation != null) { @@ -28,19 +28,19 @@ public static String getNameFor(Class controllerCl return getDefaultNameFor(controllerClass); } - public static String getNameFor(ResourceController controller) { + public static String getNameFor(Reconciler controller) { return getNameFor(controller.getClass()); } - public static String getDefaultNameFor(ResourceController controller) { + public static String getDefaultNameFor(Reconciler controller) { return getDefaultNameFor(controller.getClass()); } - public static String getDefaultNameFor(Class controllerClass) { - return getDefaultResourceControllerName(controllerClass.getSimpleName()); + public static String getDefaultNameFor(Class reconcilerClass) { + return getDefaultResourceReconcilerName(reconcilerClass.getSimpleName()); } - public static String getDefaultResourceControllerName(String rcControllerClassName) { + public static String getDefaultResourceReconcilerName(String rcControllerClassName) { // if the name is fully qualified, extract the simple class name final var lastDot = rcControllerClassName.lastIndexOf('.'); if (lastDot > 0) { 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 60fe670a36..b9526a4246 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 @@ -14,7 +14,7 @@ import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.Version; import io.javaoperatorsdk.operator.api.LifecycleAware; -import io.javaoperatorsdk.operator.api.ResourceController; +import io.javaoperatorsdk.operator.api.Reconciler; import io.javaoperatorsdk.operator.api.config.ConfigurationService; import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; import io.javaoperatorsdk.operator.api.config.ExecutorServiceManager; @@ -114,9 +114,9 @@ public void close() { * @param the {@code CustomResource} type associated with the controller * @throws OperatorException if a problem occurred during the registration process */ - public > void register(ResourceController controller) + public > void registerController(Reconciler controller) throws OperatorException { - register(controller, null); + registerController(controller, null); } /** @@ -126,20 +126,20 @@ public void close() { * passing it the controller's original configuration. The effective registration of the * controller is delayed till the operator is started. * - * @param controller the controller to register + * @param reconciler part of the controller to register * @param configuration the configuration with which we want to register the controller, if {@code * null}, the controller's original configuration is used * @param the {@code CustomResource} type associated with the controller * @throws OperatorException if a problem occurred during the registration process */ - public > void register( - ResourceController controller, ControllerConfiguration configuration) + public > void registerController( + Reconciler reconciler, ControllerConfiguration configuration) throws OperatorException { - final var existing = configurationService.getConfigurationFor(controller); + final var existing = configurationService.getConfigurationFor(reconciler); if (existing == null) { throw new OperatorException( - "Cannot register controller with name " + controller.getClass().getCanonicalName() + - " controller named " + ControllerUtils.getNameFor(controller) + "Cannot register controller with name " + reconciler.getClass().getCanonicalName() + + " controller named " + ControllerUtils.getNameFor(reconciler) + " because its configuration cannot be found.\n" + " Known controllers are: " + configurationService.getKnownControllerNames()); } else { @@ -147,7 +147,7 @@ public void close() { configuration = existing; } final var configuredController = - new ConfiguredController<>(controller, configuration, kubernetesClient); + new ConfiguredController<>(reconciler, configuration, kubernetesClient); controllers.add(configuredController); final var watchedNS = diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/ResourceController.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/Reconciler.java similarity index 92% rename from operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/ResourceController.java rename to operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/Reconciler.java index 7fe27ec908..915f8e7e82 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/ResourceController.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/Reconciler.java @@ -2,7 +2,7 @@ import io.fabric8.kubernetes.client.CustomResource; -public interface ResourceController> { +public interface Reconciler> { /** * Note that this method is used in combination of finalizers. If automatic finalizer handling is @@ -28,7 +28,7 @@ public interface ResourceController> { * finalizer to indicate that the resource should not be deleted after all, in which case * the controller should restore the resource's state appropriately. */ - default DeleteControl deleteResource(R resource, Context context) { + default DeleteControl deleteResources(R resource, Context context) { return DeleteControl.defaultDelete(); } @@ -46,6 +46,6 @@ default DeleteControl deleteResource(R resource, Context context) { * be skipped. However we will always call an update if there is no finalizer on object * and it's not marked for deletion. */ - UpdateControl createOrUpdateResource(R resource, Context context); + UpdateControl createOrUpdateResources(R resource, Context context); } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/AbstractConfigurationService.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/AbstractConfigurationService.java index af9c7856b8..ea362e1818 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/AbstractConfigurationService.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/AbstractConfigurationService.java @@ -7,7 +7,7 @@ import io.fabric8.kubernetes.client.CustomResource; import io.javaoperatorsdk.operator.ControllerUtils; -import io.javaoperatorsdk.operator.api.ResourceController; +import io.javaoperatorsdk.operator.api.Reconciler; @SuppressWarnings("rawtypes") public class AbstractConfigurationService implements ConfigurationService { @@ -52,7 +52,7 @@ public AbstractConfigurationService(Version version) { @Override public > ControllerConfiguration getConfigurationFor( - ResourceController controller) { + Reconciler controller) { final var key = keyFor(controller); final var configuration = configurations.get(key); if (configuration == null) { @@ -73,7 +73,7 @@ private String getControllersNameMessage() { + "."; } - protected > String keyFor(ResourceController controller) { + protected > String keyFor(Reconciler controller) { return ControllerUtils.getNameFor(controller); } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationService.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationService.java index b65115ec56..93e424d416 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationService.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationService.java @@ -6,7 +6,7 @@ import io.fabric8.kubernetes.client.Config; import io.fabric8.kubernetes.client.CustomResource; -import io.javaoperatorsdk.operator.api.ResourceController; +import io.javaoperatorsdk.operator.api.Reconciler; import io.javaoperatorsdk.operator.api.monitoring.Metrics; import com.fasterxml.jackson.core.JsonProcessingException; @@ -37,7 +37,7 @@ public interface ConfigurationService { * null} if no configuration exists for the controller */ > ControllerConfiguration getConfigurationFor( - ResourceController controller); + Reconciler controller); /** * Retrieves the Kubernetes client configuration diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationServiceOverrider.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationServiceOverrider.java index 62630f3ce2..7a64821211 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationServiceOverrider.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationServiceOverrider.java @@ -4,7 +4,7 @@ import io.fabric8.kubernetes.client.Config; import io.fabric8.kubernetes.client.CustomResource; -import io.javaoperatorsdk.operator.api.ResourceController; +import io.javaoperatorsdk.operator.api.Reconciler; import io.javaoperatorsdk.operator.api.monitoring.Metrics; public class ConfigurationServiceOverrider { @@ -62,7 +62,7 @@ public ConfigurationService build() { return new ConfigurationService() { @Override public > ControllerConfiguration getConfigurationFor( - ResourceController controller) { + Reconciler controller) { return original.getConfigurationFor(controller); } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ControllerConfiguration.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ControllerConfiguration.java index 65ec26964b..6b639d2d71 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ControllerConfiguration.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ControllerConfiguration.java @@ -13,7 +13,7 @@ public interface ControllerConfiguration> { default String getName() { - return ControllerUtils.getDefaultResourceControllerName(getAssociatedControllerClassName()); + return ControllerUtils.getDefaultResourceReconcilerName(getAssociatedControllerClassName()); } default String getCRDName() { diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/ConfiguredController.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/ConfiguredController.java index a22d135317..bb6ff5a257 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/ConfiguredController.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/ConfiguredController.java @@ -15,30 +15,30 @@ import io.javaoperatorsdk.operator.api.DeleteControl; import io.javaoperatorsdk.operator.api.EventSourceInitializer; import io.javaoperatorsdk.operator.api.LifecycleAware; -import io.javaoperatorsdk.operator.api.ResourceController; +import io.javaoperatorsdk.operator.api.Reconciler; import io.javaoperatorsdk.operator.api.UpdateControl; import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; import io.javaoperatorsdk.operator.api.monitoring.Metrics.ControllerExecution; import io.javaoperatorsdk.operator.processing.event.DefaultEventSourceManager; import io.javaoperatorsdk.operator.processing.event.EventSourceManager; -public class ConfiguredController> implements ResourceController, +public class ConfiguredController> implements Reconciler, LifecycleAware, EventSourceInitializer { - private final ResourceController controller; + private final Reconciler reconciler; private final ControllerConfiguration configuration; private final KubernetesClient kubernetesClient; private DefaultEventSourceManager eventSourceManager; - public ConfiguredController(ResourceController controller, + public ConfiguredController(Reconciler reconciler, ControllerConfiguration configuration, KubernetesClient kubernetesClient) { - this.controller = controller; + this.reconciler = reconciler; this.configuration = configuration; this.kubernetesClient = kubernetesClient; } @Override - public DeleteControl deleteResource(R resource, Context context) { + public DeleteControl deleteResources(R resource, Context context) { return configuration.getConfigurationService().getMetrics().timeControllerExecution( new ControllerExecution<>() { @Override @@ -58,13 +58,13 @@ public String successTypeName(DeleteControl deleteControl) { @Override public DeleteControl execute() { - return controller.deleteResource(resource, context); + return reconciler.deleteResources(resource, context); } }); } @Override - public UpdateControl createOrUpdateResource(R resource, Context context) { + public UpdateControl createOrUpdateResources(R resource, Context context) { return configuration.getConfigurationService().getMetrics().timeControllerExecution( new ControllerExecution<>() { @Override @@ -91,7 +91,7 @@ public String successTypeName(UpdateControl result) { @Override public UpdateControl execute() { - return controller.createOrUpdateResource(resource, context); + return reconciler.createOrUpdateResources(resource, context); } }); } @@ -124,8 +124,8 @@ public String toString() { return "'" + configuration.getName() + "' Controller"; } - public ResourceController getController() { - return controller; + public Reconciler getReconciler() { + return reconciler; } public ControllerConfiguration getConfiguration() { @@ -169,8 +169,8 @@ public void start() throws OperatorException { try { eventSourceManager = new DefaultEventSourceManager<>(this); - if (controller instanceof EventSourceInitializer) { - ((EventSourceInitializer) controller).prepareEventSources(eventSourceManager); + if (reconciler instanceof EventSourceInitializer) { + ((EventSourceInitializer) reconciler).prepareEventSources(eventSourceManager); } } catch (MissingCRDException e) { throwMissingCRDException(crdName, specVersion, controllerName); diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventDispatcher.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventDispatcher.java index 3764667288..664be5f796 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventDispatcher.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventDispatcher.java @@ -13,7 +13,7 @@ import io.javaoperatorsdk.operator.api.DefaultContext; import io.javaoperatorsdk.operator.api.DeleteControl; import io.javaoperatorsdk.operator.api.ObservedGenerationAware; -import io.javaoperatorsdk.operator.api.ResourceController; +import io.javaoperatorsdk.operator.api.Reconciler; import io.javaoperatorsdk.operator.api.UpdateControl; import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; @@ -85,7 +85,7 @@ private ControllerConfiguration configuration() { /** * Determines whether the given resource should be dispatched to the controller's - * {@link ResourceController#deleteResource(CustomResource, Context)} method + * {@link Reconciler#deleteResources(CustomResource, Context)} method * * @param resource the resource to be potentially deleted * @return {@code true} if the resource should be handed to the controller's {@code @@ -115,7 +115,7 @@ private PostExecutionControl handleCreateOrUpdate( getVersion(resource), executionScope); - UpdateControl updateControl = controller.createOrUpdateResource(resource, context); + UpdateControl updateControl = controller.createOrUpdateResources(resource, context); R updatedCustomResource = null; if (updateControl.isUpdateCustomResourceAndStatusSubResource()) { updatedCustomResource = updateCustomResource(updateControl.getCustomResource()); @@ -173,7 +173,7 @@ private PostExecutionControl handleDelete(R resource, Context context) { getName(resource), getVersion(resource)); - DeleteControl deleteControl = controller.deleteResource(resource, context); + DeleteControl deleteControl = controller.deleteResources(resource, context); final var useFinalizer = configuration().useFinalizer(); if (useFinalizer) { // note that we don't reschedule here even if instructed. Removing finalizer means that diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/DefaultEventHandler.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventProcessor.java similarity index 97% rename from operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/DefaultEventHandler.java rename to operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventProcessor.java index 212cd378d7..3772e1cb97 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/DefaultEventHandler.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventProcessor.java @@ -36,10 +36,10 @@ * Event handler that makes sure that events are processed in a "single threaded" way per resource * UID, while buffering events which are received during an execution. */ -public class DefaultEventHandler> +public class EventProcessor> implements EventHandler, LifecycleAware { - private static final Logger log = LoggerFactory.getLogger(DefaultEventHandler.class); + private static final Logger log = LoggerFactory.getLogger(EventProcessor.class); private final Set underProcessing = new HashSet<>(); private final EventDispatcher eventDispatcher; @@ -54,7 +54,7 @@ public class DefaultEventHandler> private DefaultEventSourceManager eventSourceManager; private final EventMarker eventMarker; - public DefaultEventHandler(ConfiguredController controller, ResourceCache resourceCache) { + public EventProcessor(ConfiguredController controller, ResourceCache resourceCache) { this( resourceCache, ExecutorServiceManager.instance().executorService(), @@ -65,13 +65,13 @@ public DefaultEventHandler(ConfiguredController controller, ResourceCache new EventMarker()); } - DefaultEventHandler(EventDispatcher eventDispatcher, ResourceCache resourceCache, + EventProcessor(EventDispatcher eventDispatcher, ResourceCache resourceCache, String relatedControllerName, Retry retry, EventMarker eventMarker) { this(resourceCache, null, relatedControllerName, eventDispatcher, retry, null, eventMarker); } - private DefaultEventHandler(ResourceCache resourceCache, ExecutorService executor, + private EventProcessor(ResourceCache resourceCache, ExecutorService executor, String relatedControllerName, EventDispatcher eventDispatcher, Retry retry, Metrics metrics, EventMarker eventMarker) { diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/DefaultEventSourceManager.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/DefaultEventSourceManager.java index dd8e7f19ce..31c5419923 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/DefaultEventSourceManager.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/DefaultEventSourceManager.java @@ -14,7 +14,7 @@ import io.javaoperatorsdk.operator.OperatorException; import io.javaoperatorsdk.operator.api.LifecycleAware; import io.javaoperatorsdk.operator.processing.ConfiguredController; -import io.javaoperatorsdk.operator.processing.DefaultEventHandler; +import io.javaoperatorsdk.operator.processing.EventProcessor; import io.javaoperatorsdk.operator.processing.event.internal.CustomResourceEventSource; import io.javaoperatorsdk.operator.processing.event.internal.TimerEventSource; @@ -25,23 +25,23 @@ public class DefaultEventSourceManager> private final ReentrantLock lock = new ReentrantLock(); private final Set eventSources = Collections.synchronizedSet(new HashSet<>()); - private DefaultEventHandler defaultEventHandler; + private EventProcessor eventProcessor; private TimerEventSource retryAndRescheduleTimerEventSource; private CustomResourceEventSource customResourceEventSource; - DefaultEventSourceManager(DefaultEventHandler defaultEventHandler) { - init(defaultEventHandler); + DefaultEventSourceManager(EventProcessor eventProcessor) { + init(eventProcessor); } public DefaultEventSourceManager(ConfiguredController controller) { customResourceEventSource = new CustomResourceEventSource<>(controller); - init(new DefaultEventHandler<>(controller, customResourceEventSource)); + init(new EventProcessor<>(controller, customResourceEventSource)); registerEventSource(customResourceEventSource); } - private void init(DefaultEventHandler defaultEventHandler) { - this.defaultEventHandler = defaultEventHandler; - defaultEventHandler.setEventSourceManager(this); + private void init(EventProcessor eventProcessor) { + this.eventProcessor = eventProcessor; + eventProcessor.setEventSourceManager(this); this.retryAndRescheduleTimerEventSource = new TimerEventSource<>(); registerEventSource(retryAndRescheduleTimerEventSource); @@ -49,7 +49,7 @@ private void init(DefaultEventHandler defaultEventHandler) { @Override public void start() throws OperatorException { - defaultEventHandler.start(); + eventProcessor.start(); } @Override @@ -57,7 +57,7 @@ public void stop() { lock.lock(); try { try { - defaultEventHandler.stop(); + eventProcessor.stop(); } catch (Exception e) { log.warn("Error closing event handler", e); } @@ -82,7 +82,7 @@ public final void registerEventSource(EventSource eventSource) lock.lock(); try { eventSources.add(eventSource); - eventSource.setEventHandler(defaultEventHandler); + eventSource.setEventHandler(eventProcessor); eventSource.start(); } catch (Throwable e) { if (e instanceof IllegalStateException || e instanceof MissingCRDException) { diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/ControllerManagerTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/ControllerManagerTest.java index d25378499e..2faa90a295 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/ControllerManagerTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/ControllerManagerTest.java @@ -4,13 +4,13 @@ import io.fabric8.kubernetes.client.CustomResource; import io.javaoperatorsdk.operator.Operator.ControllerManager; -import io.javaoperatorsdk.operator.api.ResourceController; +import io.javaoperatorsdk.operator.api.Reconciler; import io.javaoperatorsdk.operator.api.config.DefaultControllerConfiguration; import io.javaoperatorsdk.operator.processing.ConfiguredController; import io.javaoperatorsdk.operator.sample.simple.DuplicateCRController; +import io.javaoperatorsdk.operator.sample.simple.TestCustomReconciler; +import io.javaoperatorsdk.operator.sample.simple.TestCustomReconcilerV2; import io.javaoperatorsdk.operator.sample.simple.TestCustomResource; -import io.javaoperatorsdk.operator.sample.simple.TestCustomResourceController; -import io.javaoperatorsdk.operator.sample.simple.TestCustomResourceControllerV2; import io.javaoperatorsdk.operator.sample.simple.TestCustomResourceV2; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -20,7 +20,7 @@ public class ControllerManagerTest { @Test public void shouldNotAddMultipleControllersForSameCustomResource() { - final var registered = new TestControllerConfiguration<>(new TestCustomResourceController(null), + final var registered = new TestControllerConfiguration<>(new TestCustomReconciler(null), TestCustomResource.class); final var duplicated = new TestControllerConfiguration<>(new DuplicateCRController(), TestCustomResource.class); @@ -30,9 +30,9 @@ public void shouldNotAddMultipleControllersForSameCustomResource() { @Test public void addingMultipleControllersForCustomResourcesWithDifferentVersionsShouldNotWork() { - final var registered = new TestControllerConfiguration<>(new TestCustomResourceController(null), + final var registered = new TestControllerConfiguration<>(new TestCustomReconciler(null), TestCustomResource.class); - final var duplicated = new TestControllerConfiguration<>(new TestCustomResourceControllerV2(), + final var duplicated = new TestControllerConfiguration<>(new TestCustomReconcilerV2(), TestCustomResourceV2.class); checkException(registered, duplicated); @@ -56,16 +56,16 @@ public void addingMultipleControllersForCustomResourcesWithDifferentVersionsShou private static class TestControllerConfiguration> extends DefaultControllerConfiguration { - private final ResourceController controller; + private final Reconciler controller; - public TestControllerConfiguration(ResourceController controller, Class crClass) { + public TestControllerConfiguration(Reconciler controller, Class crClass) { super(null, getControllerName(controller), CustomResource.getCRDName(crClass), null, false, null, null, null, null, crClass, null); this.controller = controller; } static > String getControllerName( - ResourceController controller) { + Reconciler controller) { return controller.getClass().getSimpleName() + "Controller"; } diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/ControllerUtilsTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/ControllerUtilsTest.java index cfc390f9c7..8c60a08f7d 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/ControllerUtilsTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/ControllerUtilsTest.java @@ -2,7 +2,7 @@ import org.junit.jupiter.api.Test; -import io.javaoperatorsdk.operator.sample.simple.TestCustomResourceController; +import io.javaoperatorsdk.operator.sample.simple.TestCustomReconciler; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -11,8 +11,8 @@ class ControllerUtilsTest { @Test void getDefaultResourceControllerName() { assertEquals( - "testcustomresourcecontroller", - ControllerUtils.getDefaultResourceControllerName( - TestCustomResourceController.class.getCanonicalName())); + "testcustomreconciler", + ControllerUtils.getDefaultResourceReconcilerName( + TestCustomReconciler.class.getCanonicalName())); } } diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/EventDispatcherTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/EventDispatcherTest.java index 1c651afa60..ea1cc92571 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/EventDispatcherTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/EventDispatcherTest.java @@ -12,7 +12,7 @@ import io.javaoperatorsdk.operator.TestUtils; import io.javaoperatorsdk.operator.api.Context; import io.javaoperatorsdk.operator.api.DeleteControl; -import io.javaoperatorsdk.operator.api.ResourceController; +import io.javaoperatorsdk.operator.api.Reconciler; import io.javaoperatorsdk.operator.api.RetryInfo; import io.javaoperatorsdk.operator.api.UpdateControl; import io.javaoperatorsdk.operator.api.config.ConfigurationService; @@ -40,7 +40,7 @@ class EventDispatcherTest { private static final String DEFAULT_FINALIZER = "javaoperatorsdk.io/finalizer"; private TestCustomResource testCustomResource; private EventDispatcher eventDispatcher; - private final ResourceController controller = mock(ResourceController.class); + private final Reconciler controller = mock(Reconciler.class); private final ControllerConfiguration configuration = mock(ControllerConfiguration.class); private final ConfigurationService configService = mock(ConfigurationService.class); @@ -54,16 +54,16 @@ void setup() { } private > EventDispatcher init(R customResource, - ResourceController controller, ControllerConfiguration configuration, + Reconciler controller, ControllerConfiguration configuration, CustomResourceFacade customResourceFacade) { when(configuration.getFinalizer()).thenReturn(DEFAULT_FINALIZER); when(configuration.useFinalizer()).thenCallRealMethod(); when(configuration.getName()).thenReturn("EventDispatcherTestController"); when(configService.getMetrics()).thenReturn(Metrics.NOOP); when(configuration.getConfigurationService()).thenReturn(configService); - when(controller.createOrUpdateResource(eq(customResource), any())) + when(controller.createOrUpdateResources(eq(customResource), any())) .thenReturn(UpdateControl.updateCustomResource(customResource)); - when(controller.deleteResource(eq(customResource), any())) + when(controller.deleteResources(eq(customResource), any())) .thenReturn(DeleteControl.defaultDelete()); when(customResourceFacade.replaceWithLock(any())).thenReturn(null); ConfiguredController configuredController = @@ -77,7 +77,7 @@ void addFinalizerOnNewResource() { assertFalse(testCustomResource.hasFinalizer(DEFAULT_FINALIZER)); eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); verify(controller, never()) - .createOrUpdateResource(ArgumentMatchers.eq(testCustomResource), any()); + .createOrUpdateResources(ArgumentMatchers.eq(testCustomResource), any()); verify(customResourceFacade, times(1)) .replaceWithLock( argThat(testCustomResource -> testCustomResource.hasFinalizer(DEFAULT_FINALIZER))); @@ -89,14 +89,14 @@ void callCreateOrUpdateOnNewResourceIfFinalizerSet() { testCustomResource.addFinalizer(DEFAULT_FINALIZER); eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); verify(controller, times(1)) - .createOrUpdateResource(ArgumentMatchers.eq(testCustomResource), any()); + .createOrUpdateResources(ArgumentMatchers.eq(testCustomResource), any()); } @Test void updatesOnlyStatusSubResourceIfFinalizerSet() { testCustomResource.addFinalizer(DEFAULT_FINALIZER); - when(controller.createOrUpdateResource(eq(testCustomResource), any())) + when(controller.createOrUpdateResources(eq(testCustomResource), any())) .thenReturn(UpdateControl.updateStatusSubResource(testCustomResource)); eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); @@ -109,7 +109,7 @@ void updatesOnlyStatusSubResourceIfFinalizerSet() { void updatesBothResourceAndStatusIfFinalizerSet() { testCustomResource.addFinalizer(DEFAULT_FINALIZER); - when(controller.createOrUpdateResource(eq(testCustomResource), any())) + when(controller.createOrUpdateResources(eq(testCustomResource), any())) .thenReturn(UpdateControl.updateCustomResourceAndStatus(testCustomResource)); when(customResourceFacade.replaceWithLock(testCustomResource)).thenReturn(testCustomResource); @@ -125,7 +125,7 @@ void callCreateOrUpdateOnModifiedResourceIfFinalizerSet() { eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); verify(controller, times(1)) - .createOrUpdateResource(ArgumentMatchers.eq(testCustomResource), any()); + .createOrUpdateResources(ArgumentMatchers.eq(testCustomResource), any()); } @Test @@ -136,7 +136,7 @@ void callsDeleteIfObjectHasFinalizerAndMarkedForDelete() { eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); - verify(controller, times(1)).deleteResource(eq(testCustomResource), any()); + verify(controller, times(1)).deleteResources(eq(testCustomResource), any()); } /** @@ -149,7 +149,7 @@ void callDeleteOnControllerIfMarkedForDeletionWhenNoFinalizerIsConfigured() { eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); - verify(controller).deleteResource(eq(testCustomResource), any()); + verify(controller).deleteResources(eq(testCustomResource), any()); } @Test @@ -158,7 +158,7 @@ void doNotCallDeleteIfMarkedForDeletionWhenFinalizerHasAlreadyBeenRemoved() { eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); - verify(controller, never()).deleteResource(eq(testCustomResource), any()); + verify(controller, never()).deleteResources(eq(testCustomResource), any()); } private void configureToNotUseFinalizer() { @@ -196,7 +196,7 @@ void removesDefaultFinalizerOnDeleteIfSet() { void doesNotRemovesTheSetFinalizerIfTheDeleteNotMethodInstructsIt() { testCustomResource.addFinalizer(DEFAULT_FINALIZER); - when(controller.deleteResource(eq(testCustomResource), any())) + when(controller.deleteResources(eq(testCustomResource), any())) .thenReturn(DeleteControl.noFinalizerRemoval()); markForDeletion(testCustomResource); @@ -210,7 +210,7 @@ void doesNotRemovesTheSetFinalizerIfTheDeleteNotMethodInstructsIt() { void doesNotUpdateTheResourceIfNoUpdateUpdateControlIfFinalizerSet() { testCustomResource.addFinalizer(DEFAULT_FINALIZER); - when(controller.createOrUpdateResource(eq(testCustomResource), any())) + when(controller.createOrUpdateResources(eq(testCustomResource), any())) .thenReturn(UpdateControl.noUpdate()); eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); @@ -221,7 +221,7 @@ void doesNotUpdateTheResourceIfNoUpdateUpdateControlIfFinalizerSet() { @Test void addsFinalizerIfNotMarkedForDeletionAndEmptyCustomResourceReturned() { removeFinalizers(testCustomResource); - when(controller.createOrUpdateResource(eq(testCustomResource), any())) + when(controller.createOrUpdateResources(eq(testCustomResource), any())) .thenReturn(UpdateControl.noUpdate()); eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); @@ -238,7 +238,7 @@ void doesNotCallDeleteIfMarkedForDeletionButNotOurFinalizer() { eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); verify(customResourceFacade, never()).replaceWithLock(any()); - verify(controller, never()).deleteResource(eq(testCustomResource), any()); + verify(controller, never()).deleteResources(eq(testCustomResource), any()); } @Test @@ -247,7 +247,7 @@ void executeControllerRegardlessGenerationInNonGenerationAwareModeIfFinalizerSet eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); - verify(controller, times(2)).createOrUpdateResource(eq(testCustomResource), any()); + verify(controller, times(2)).createOrUpdateResources(eq(testCustomResource), any()); } @Test @@ -272,7 +272,7 @@ public boolean isLastAttempt() { ArgumentCaptor contextArgumentCaptor = ArgumentCaptor.forClass(Context.class); verify(controller, times(1)) - .createOrUpdateResource(eq(testCustomResource), contextArgumentCaptor.capture()); + .createOrUpdateResources(eq(testCustomResource), contextArgumentCaptor.capture()); Context context = contextArgumentCaptor.getValue(); final var retryInfo = context.getRetryInfo().get(); assertThat(retryInfo.getAttemptCount()).isEqualTo(2); @@ -283,7 +283,7 @@ public boolean isLastAttempt() { void setReScheduleToPostExecutionControlFromUpdateControl() { testCustomResource.addFinalizer(DEFAULT_FINALIZER); - when(controller.createOrUpdateResource(eq(testCustomResource), any())) + when(controller.createOrUpdateResources(eq(testCustomResource), any())) .thenReturn( UpdateControl.updateStatusSubResource(testCustomResource).rescheduleAfter(1000L)); @@ -298,7 +298,7 @@ void reScheduleOnDeleteWithoutFinalizerRemoval() { testCustomResource.addFinalizer(DEFAULT_FINALIZER); markForDeletion(testCustomResource); - when(controller.deleteResource(eq(testCustomResource), any())) + when(controller.deleteResources(eq(testCustomResource), any())) .thenReturn(DeleteControl.noFinalizerRemoval().rescheduleAfter(1000L)); PostExecutionControl control = @@ -311,14 +311,14 @@ void reScheduleOnDeleteWithoutFinalizerRemoval() { void setObservedGenerationForStatusIfNeeded() { var observedGenResource = createObservedGenCustomResource(); - ResourceController lController = mock(ResourceController.class); + Reconciler lController = mock(Reconciler.class); ControllerConfiguration lConfiguration = mock(ControllerConfiguration.class); CustomResourceFacade lFacade = mock(CustomResourceFacade.class); var lDispatcher = init(observedGenResource, lController, lConfiguration, lFacade); when(lConfiguration.isGenerationAware()).thenReturn(true); - when(lController.createOrUpdateResource(eq(observedGenResource), any())) + when(lController.createOrUpdateResources(eq(observedGenResource), any())) .thenReturn(UpdateControl.updateStatusSubResource(observedGenResource)); when(lFacade.updateStatus(observedGenResource)).thenReturn(observedGenResource); diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/DefaultEventHandlerTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/EventProcessorTest.java similarity index 86% rename from operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/DefaultEventHandlerTest.java rename to operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/EventProcessorTest.java index 9be173e41b..d3ecc85664 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/DefaultEventHandlerTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/EventProcessorTest.java @@ -28,9 +28,9 @@ import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.*; -class DefaultEventHandlerTest { +class EventProcessorTest { - private static final Logger log = LoggerFactory.getLogger(DefaultEventHandlerTest.class); + private static final Logger log = LoggerFactory.getLogger(EventProcessorTest.class); public static final int FAKE_CONTROLLER_EXECUTION_DURATION = 250; public static final int SEPARATE_EXECUTION_TIMEOUT = 450; @@ -43,24 +43,24 @@ class DefaultEventHandlerTest { private TimerEventSource retryTimerEventSourceMock = mock(TimerEventSource.class); - private DefaultEventHandler defaultEventHandler = - new DefaultEventHandler(eventDispatcherMock, resourceCacheMock, "Test", null, eventMarker); + private EventProcessor eventProcessor = + new EventProcessor(eventDispatcherMock, resourceCacheMock, "Test", null, eventMarker); - private DefaultEventHandler defaultEventHandlerWithRetry = - new DefaultEventHandler(eventDispatcherMock, resourceCacheMock, "Test", + private EventProcessor eventProcessorWithRetry = + new EventProcessor(eventDispatcherMock, resourceCacheMock, "Test", GenericRetry.defaultLimitedExponentialRetry(), eventMarker); @BeforeEach public void setup() { when(defaultEventSourceManagerMock.getRetryAndRescheduleTimerEventSource()) .thenReturn(retryTimerEventSourceMock); - defaultEventHandler.setEventSourceManager(defaultEventSourceManagerMock); - defaultEventHandlerWithRetry.setEventSourceManager(defaultEventSourceManagerMock); + eventProcessor.setEventSourceManager(defaultEventSourceManagerMock); + eventProcessorWithRetry.setEventSourceManager(defaultEventSourceManagerMock); } @Test public void dispatchesEventsIfNoExecutionInProgress() { - defaultEventHandler.handleEvent(prepareCREvent()); + eventProcessor.handleEvent(prepareCREvent()); verify(eventDispatcherMock, timeout(50).times(1)).handleExecution(any()); } @@ -71,7 +71,7 @@ public void skipProcessingIfLatestCustomResourceNotInCache() { when(resourceCacheMock.getCustomResource(event.getRelatedCustomResourceID())) .thenReturn(Optional.empty()); - defaultEventHandler.handleEvent(event); + eventProcessor.handleEvent(event); verify(eventDispatcherMock, timeout(50).times(0)).handleExecution(any()); } @@ -80,7 +80,7 @@ public void skipProcessingIfLatestCustomResourceNotInCache() { public void ifExecutionInProgressWaitsUntilItsFinished() throws InterruptedException { CustomResourceID resourceUid = eventAlreadyUnderProcessing(); - defaultEventHandler.handleEvent(nonCREvent(resourceUid)); + eventProcessor.handleEvent(nonCREvent(resourceUid)); verify(eventDispatcherMock, timeout(SEPARATE_EXECUTION_TIMEOUT).times(1)) .handleExecution(any()); @@ -94,7 +94,7 @@ public void schedulesAnEventRetryOnException() { PostExecutionControl postExecutionControl = PostExecutionControl.exceptionDuringExecution(new RuntimeException("test")); - defaultEventHandlerWithRetry.eventProcessingFinished(executionScope, postExecutionControl); + eventProcessorWithRetry.eventProcessingFinished(executionScope, postExecutionControl); verify(retryTimerEventSourceMock, times(1)) .scheduleOnce(eq(customResource), eq(GenericRetry.DEFAULT_INITIAL_INTERVAL)); @@ -113,9 +113,9 @@ public void executesTheControllerInstantlyAfterErrorIfNewEventsReceived() { .thenReturn(PostExecutionControl.defaultDispatch()); // start processing an event - defaultEventHandlerWithRetry.handleEvent(event); + eventProcessorWithRetry.handleEvent(event); // handle another event - defaultEventHandlerWithRetry.handleEvent(event); + eventProcessorWithRetry.handleEvent(event); ArgumentCaptor executionScopeArgumentCaptor = ArgumentCaptor.forClass(ExecutionScope.class); @@ -145,15 +145,15 @@ public void successfulExecutionResetsTheRetry() { ArgumentCaptor executionScopeArgumentCaptor = ArgumentCaptor.forClass(ExecutionScope.class); - defaultEventHandlerWithRetry.handleEvent(event); + eventProcessorWithRetry.handleEvent(event); verify(eventDispatcherMock, timeout(SEPARATE_EXECUTION_TIMEOUT).times(1)) .handleExecution(any()); - defaultEventHandlerWithRetry.handleEvent(event); + eventProcessorWithRetry.handleEvent(event); verify(eventDispatcherMock, timeout(SEPARATE_EXECUTION_TIMEOUT).times(2)) .handleExecution(any()); - defaultEventHandlerWithRetry.handleEvent(event); + eventProcessorWithRetry.handleEvent(event); verify(eventDispatcherMock, timeout(SEPARATE_EXECUTION_TIMEOUT).times(3)) .handleExecution(executionScopeArgumentCaptor.capture()); log.info("Finished successfulExecutionResetsTheRetry"); @@ -173,7 +173,7 @@ public void scheduleTimedEventIfInstructedByPostExecutionControl() { when(eventDispatcherMock.handleExecution(any())) .thenReturn(PostExecutionControl.defaultDispatch().withReSchedule(testDelay)); - defaultEventHandler.handleEvent(prepareCREvent()); + eventProcessor.handleEvent(prepareCREvent()); verify(retryTimerEventSourceMock, timeout(SEPARATE_EXECUTION_TIMEOUT).times(1)) .scheduleOnce(any(), eq(testDelay)); @@ -185,8 +185,8 @@ public void reScheduleOnlyIfNotExecutedEventsReceivedMeanwhile() { when(eventDispatcherMock.handleExecution(any())) .thenReturn(PostExecutionControl.defaultDispatch().withReSchedule(testDelay)); - defaultEventHandler.handleEvent(prepareCREvent()); - defaultEventHandler.handleEvent(prepareCREvent()); + eventProcessor.handleEvent(prepareCREvent()); + eventProcessor.handleEvent(prepareCREvent()); verify(retryTimerEventSourceMock, timeout(SEPARATE_EXECUTION_TIMEOUT).times(0)) .scheduleOnce(any(), eq(testDelay)); @@ -194,8 +194,8 @@ public void reScheduleOnlyIfNotExecutedEventsReceivedMeanwhile() { @Test public void doNotFireEventsIfClosing() { - defaultEventHandler.stop(); - defaultEventHandler.handleEvent(prepareCREvent()); + eventProcessor.stop(); + eventProcessor.handleEvent(prepareCREvent()); verify(eventDispatcherMock, timeout(50).times(0)).handleExecution(any()); } @@ -205,7 +205,7 @@ public void cleansUpWhenDeleteEventReceivedAndNoEventPresent() { Event deleteEvent = new CustomResourceEvent(DELETED, prepareCREvent().getRelatedCustomResourceID()); - defaultEventHandler.handleEvent(deleteEvent); + eventProcessor.handleEvent(deleteEvent); verify(defaultEventSourceManagerMock, times(1)) .cleanupForCustomResource(eq(deleteEvent.getRelatedCustomResourceID())); @@ -218,7 +218,7 @@ public void cleansUpAfterExecutionIfOnlyDeleteEventMarkLeft() { eventMarker.markDeleteEventReceived(crEvent.getRelatedCustomResourceID()); var executionScope = new ExecutionScope(cr, null); - defaultEventHandler.eventProcessingFinished(executionScope, + eventProcessor.eventProcessingFinished(executionScope, PostExecutionControl.defaultDispatch()); verify(defaultEventSourceManagerMock, times(1)) @@ -237,7 +237,7 @@ public void whitelistNextEventIfTheCacheIsNotPropagatedAfterAnUpdate() { when(defaultEventSourceManagerMock.getCustomResourceEventSource()) .thenReturn(mockCREventSource); - defaultEventHandler.eventProcessingFinished(new ExecutionScope(cr, null), + eventProcessor.eventProcessingFinished(new ExecutionScope(cr, null), PostExecutionControl.customResourceUpdated(updatedCr)); verify(mockCREventSource, times(1)).whitelistNextEvent(eq(crID)); @@ -257,7 +257,7 @@ public void dontWhitelistsEventWhenOtherChangeDuringExecution() { when(defaultEventSourceManagerMock.getCustomResourceEventSource()) .thenReturn(mockCREventSource); - defaultEventHandler.eventProcessingFinished(new ExecutionScope(cr, null), + eventProcessor.eventProcessingFinished(new ExecutionScope(cr, null), PostExecutionControl.customResourceUpdated(updatedCr)); verify(mockCREventSource, times(0)).whitelistNextEvent(eq(crID)); @@ -273,7 +273,7 @@ public void dontWhitelistsEventIfUpdatedEventInCache() { when(defaultEventSourceManagerMock.getCustomResourceEventSource()) .thenReturn(mockCREventSource); - defaultEventHandler.eventProcessingFinished(new ExecutionScope(cr, null), + eventProcessor.eventProcessingFinished(new ExecutionScope(cr, null), PostExecutionControl.customResourceUpdated(cr)); verify(mockCREventSource, times(0)).whitelistNextEvent(eq(crID)); @@ -284,7 +284,7 @@ public void cancelScheduleOnceEventsOnSuccessfulExecution() { var crID = new CustomResourceID("test-cr", TEST_NAMESPACE); var cr = testCustomResource(crID); - defaultEventHandler.eventProcessingFinished(new ExecutionScope(cr, null), + eventProcessor.eventProcessingFinished(new ExecutionScope(cr, null), PostExecutionControl.defaultDispatch()); verify(retryTimerEventSourceMock, times(1)).cancelOnceSchedule(eq(crID)); @@ -298,7 +298,7 @@ private CustomResourceID eventAlreadyUnderProcessing() { return PostExecutionControl.defaultDispatch(); }); Event event = prepareCREvent(); - defaultEventHandler.handleEvent(event); + eventProcessor.handleEvent(event); return event.getRelatedCustomResourceID(); } diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/DefaultEventSourceManagerTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/DefaultEventSourceManagerTest.java index d5b87bb5b5..304d8a7461 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/DefaultEventSourceManagerTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/DefaultEventSourceManagerTest.java @@ -7,7 +7,7 @@ import io.fabric8.kubernetes.client.CustomResource; import io.javaoperatorsdk.operator.TestUtils; -import io.javaoperatorsdk.operator.processing.DefaultEventHandler; +import io.javaoperatorsdk.operator.processing.EventProcessor; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.eq; @@ -17,9 +17,9 @@ class DefaultEventSourceManagerTest { - private DefaultEventHandler defaultEventHandlerMock = mock(DefaultEventHandler.class); + private EventProcessor eventProcessorMock = mock(EventProcessor.class); private DefaultEventSourceManager defaultEventSourceManager = - new DefaultEventSourceManager(defaultEventHandlerMock); + new DefaultEventSourceManager(eventProcessorMock); @Test public void registersEventSource() { @@ -31,7 +31,7 @@ public void registersEventSource() { defaultEventSourceManager.getRegisteredEventSources(); assertThat(registeredSources).hasSize(2); - verify(eventSource, times(1)).setEventHandler(eq(defaultEventHandlerMock)); + verify(eventSource, times(1)).setEventHandler(eq(eventProcessorMock)); verify(eventSource, times(1)).start(); } diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceSelectorTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceSelectorTest.java index 7fcda72bb4..e57d1ce17f 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceSelectorTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceSelectorTest.java @@ -24,7 +24,7 @@ import io.javaoperatorsdk.operator.Operator; import io.javaoperatorsdk.operator.api.Context; import io.javaoperatorsdk.operator.api.Controller; -import io.javaoperatorsdk.operator.api.ResourceController; +import io.javaoperatorsdk.operator.api.Reconciler; import io.javaoperatorsdk.operator.api.UpdateControl; import io.javaoperatorsdk.operator.api.config.ConfigurationService; import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; @@ -90,7 +90,7 @@ void resourceWatchedByLabel() { AtomicInteger c2 = new AtomicInteger(); AtomicInteger c2err = new AtomicInteger(); - o1.register( + o1.registerController( new MyController( resource -> { if ("foo".equals(resource.getMetadata().getName())) { @@ -102,7 +102,7 @@ void resourceWatchedByLabel() { }), new MyConfiguration(configurationService, "app=foo")); o1.start(); - o2.register( + o2.registerController( new MyController( resource -> { if ("bar".equals(resource.getMetadata().getName())) { @@ -177,7 +177,7 @@ public ConfigurationService getConfigurationService() { } @Controller(namespaces = NAMESPACE) - public static class MyController implements ResourceController { + public static class MyController implements Reconciler { private final Consumer consumer; @@ -186,7 +186,7 @@ public MyController(Consumer consumer) { } @Override - public UpdateControl createOrUpdateResource( + public UpdateControl createOrUpdateResources( TestCustomResource resource, Context context) { LOGGER.info("Received event on: {}", resource); diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/DuplicateCRController.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/DuplicateCRController.java index 443c4c21cc..a00a619ac3 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/DuplicateCRController.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/DuplicateCRController.java @@ -2,14 +2,14 @@ import io.javaoperatorsdk.operator.api.Context; import io.javaoperatorsdk.operator.api.Controller; -import io.javaoperatorsdk.operator.api.ResourceController; +import io.javaoperatorsdk.operator.api.Reconciler; import io.javaoperatorsdk.operator.api.UpdateControl; @Controller -public class DuplicateCRController implements ResourceController { +public class DuplicateCRController implements Reconciler { @Override - public UpdateControl createOrUpdateResource(TestCustomResource resource, + public UpdateControl createOrUpdateResources(TestCustomResource resource, Context context) { return UpdateControl.noUpdate(); } diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomResourceController.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomReconciler.java similarity index 88% rename from operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomResourceController.java rename to operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomReconciler.java index eba0859a9c..079c3fe1f2 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomResourceController.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomReconciler.java @@ -14,13 +14,13 @@ 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.Reconciler; import io.javaoperatorsdk.operator.api.UpdateControl; @Controller(generationAwareEventProcessing = false) -public class TestCustomResourceController implements ResourceController { +public class TestCustomReconciler implements Reconciler { - private static final Logger log = LoggerFactory.getLogger(TestCustomResourceController.class); + private static final Logger log = LoggerFactory.getLogger(TestCustomReconciler.class); public static final String CRD_NAME = CustomResource.getCRDName(TestCustomResource.class); public static final String FINALIZER_NAME = CRD_NAME + "/finalizer"; @@ -28,17 +28,17 @@ public class TestCustomResourceController implements ResourceController createOrUpdateResource( + public UpdateControl createOrUpdateResources( TestCustomResource resource, Context context) { if (!resource.getMetadata().getFinalizers().contains(FINALIZER_NAME)) { throw new IllegalStateException("Finalizer is not present."); @@ -84,7 +84,7 @@ public UpdateControl createOrUpdateResource( .createOrReplace(existingConfigMap); } else { Map labels = new HashMap<>(); - labels.put("managedBy", TestCustomResourceController.class.getSimpleName()); + labels.put("managedBy", TestCustomReconciler.class.getSimpleName()); ConfigMap newConfigMap = new ConfigMapBuilder() .withMetadata( diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomResourceControllerV2.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomReconcilerV2.java similarity index 65% rename from operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomResourceControllerV2.java rename to operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomReconcilerV2.java index 29a89381e2..a5249bf600 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomResourceControllerV2.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomReconcilerV2.java @@ -2,14 +2,14 @@ import io.javaoperatorsdk.operator.api.Context; import io.javaoperatorsdk.operator.api.Controller; -import io.javaoperatorsdk.operator.api.ResourceController; +import io.javaoperatorsdk.operator.api.Reconciler; import io.javaoperatorsdk.operator.api.UpdateControl; @Controller -public class TestCustomResourceControllerV2 implements ResourceController { +public class TestCustomReconcilerV2 implements Reconciler { @Override - public UpdateControl createOrUpdateResource(TestCustomResourceV2 resource, + public UpdateControl createOrUpdateResources(TestCustomResourceV2 resource, Context context) { return UpdateControl.noUpdate(); } diff --git a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java index b48aca918b..eb71553ba5 100644 --- a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java +++ b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java @@ -26,7 +26,7 @@ import io.fabric8.kubernetes.client.utils.KubernetesResourceUtil; import io.fabric8.kubernetes.client.utils.Utils; import io.javaoperatorsdk.operator.Operator; -import io.javaoperatorsdk.operator.api.ResourceController; +import io.javaoperatorsdk.operator.api.Reconciler; import io.javaoperatorsdk.operator.api.config.BaseConfigurationService; import io.javaoperatorsdk.operator.api.config.ConfigurationService; import io.javaoperatorsdk.operator.api.config.Version; @@ -106,16 +106,16 @@ public String getNamespace() { } @SuppressWarnings({"rawtypes"}) - public List getControllers() { + public List getControllers() { return operator.getControllers().stream() - .map(ConfiguredController::getController) + .map(ConfiguredController::getReconciler) .collect(Collectors.toUnmodifiableList()); } @SuppressWarnings({"rawtypes"}) - public T getControllerOfType(Class type) { + public T getControllerOfType(Class type) { return operator.getControllers().stream() - .map(ConfiguredController::getController) + .map(ConfiguredController::getReconciler) .filter(type::isInstance) .map(type::cast) .findFirst() @@ -176,7 +176,7 @@ protected void before(ExtensionContext context) { } - this.operator.register(ref.controller, oconfig.build()); + this.operator.registerController(ref.controller, oconfig.build()); } this.operator.start(); @@ -242,19 +242,19 @@ public Builder withConfigurationService(ConfigurationService value) { } @SuppressWarnings("rawtypes") - public Builder withController(ResourceController value) { + public Builder withController(Reconciler value) { controllers.add(new ControllerSpec(value, null)); return this; } @SuppressWarnings("rawtypes") - public Builder withController(ResourceController value, Retry retry) { + public Builder withController(Reconciler value, Retry retry) { controllers.add(new ControllerSpec(value, retry)); return this; } @SuppressWarnings("rawtypes") - public Builder withController(Class value) { + public Builder withController(Class value) { try { controllers.add(new ControllerSpec(value.getConstructor().newInstance(), null)); } catch (Exception e) { @@ -274,11 +274,11 @@ public OperatorExtension build() { @SuppressWarnings("rawtypes") private static class ControllerSpec { - final ResourceController controller; + final Reconciler controller; final Retry retry; public ControllerSpec( - ResourceController controller, + Reconciler controller, Retry retry) { this.controller = controller; this.retry = retry; diff --git a/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/AnnotationConfiguration.java b/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/AnnotationConfiguration.java index 34ca56378f..eb8cbd0ef6 100644 --- a/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/AnnotationConfiguration.java +++ b/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/AnnotationConfiguration.java @@ -6,7 +6,7 @@ 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.Reconciler; import io.javaoperatorsdk.operator.api.config.ConfigurationService; import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; import io.javaoperatorsdk.operator.processing.event.internal.CustomResourceEventFilter; @@ -15,11 +15,11 @@ public class AnnotationConfiguration> implements ControllerConfiguration { - private final ResourceController controller; + private final Reconciler controller; private final Controller annotation; private ConfigurationService service; - public AnnotationConfiguration(ResourceController controller) { + public AnnotationConfiguration(Reconciler controller) { this.controller = controller; this.annotation = controller.getClass().getAnnotation(Controller.class); } diff --git a/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/ControllerAnnotationProcessor.java b/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/ControllerAnnotationProcessor.java index aaa55a01e8..0c13c709f5 100644 --- a/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/ControllerAnnotationProcessor.java +++ b/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/ControllerAnnotationProcessor.java @@ -16,7 +16,7 @@ import javax.lang.model.type.TypeMirror; import io.fabric8.kubernetes.client.CustomResource; -import io.javaoperatorsdk.operator.api.ResourceController; +import io.javaoperatorsdk.operator.api.Reconciler; import com.google.auto.service.AutoService; import com.squareup.javapoet.TypeName; @@ -66,7 +66,7 @@ private TypeParameterResolver initializeResolver(ProcessingEnvironment processin .getDeclaredType( processingEnv .getElementUtils() - .getTypeElement(ResourceController.class.getCanonicalName()), + .getTypeElement(Reconciler.class.getCanonicalName()), processingEnv.getTypeUtils().getWildcardType(null, null)); return new TypeParameterResolver(resourceControllerType, 0); } diff --git a/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationService.java b/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationService.java index 60e65a06f4..af63cf6093 100644 --- a/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationService.java +++ b/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationService.java @@ -1,7 +1,7 @@ package io.javaoperatorsdk.operator.config.runtime; import io.fabric8.kubernetes.client.CustomResource; -import io.javaoperatorsdk.operator.api.ResourceController; +import io.javaoperatorsdk.operator.api.Reconciler; import io.javaoperatorsdk.operator.api.config.BaseConfigurationService; import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; import io.javaoperatorsdk.operator.api.config.Utils; @@ -20,12 +20,12 @@ public static DefaultConfigurationService instance() { @Override public > ControllerConfiguration getConfigurationFor( - ResourceController controller) { + Reconciler controller) { return getConfigurationFor(controller, true); } > ControllerConfiguration getConfigurationFor( - ResourceController controller, boolean createIfNeeded) { + Reconciler controller, boolean createIfNeeded) { var config = super.getConfigurationFor(controller); if (config == null) { if (createIfNeeded) { diff --git a/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/RuntimeControllerMetadata.java b/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/RuntimeControllerMetadata.java index 1536d681f3..6a26d3c4ca 100644 --- a/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/RuntimeControllerMetadata.java +++ b/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/RuntimeControllerMetadata.java @@ -3,22 +3,22 @@ import java.util.Map; import io.fabric8.kubernetes.client.CustomResource; -import io.javaoperatorsdk.operator.api.ResourceController; +import io.javaoperatorsdk.operator.api.Reconciler; @SuppressWarnings("rawtypes") public class RuntimeControllerMetadata { public static final String CONTROLLERS_RESOURCE_PATH = "javaoperatorsdk/controllers"; - private static final Map, Class> controllerToCustomResourceMappings; + private static final Map, Class> controllerToCustomResourceMappings; static { controllerToCustomResourceMappings = ClassMappingProvider.provide( - CONTROLLERS_RESOURCE_PATH, ResourceController.class, CustomResource.class); + CONTROLLERS_RESOURCE_PATH, Reconciler.class, CustomResource.class); } static > Class getCustomResourceClass( - ResourceController controller) { + Reconciler controller) { final Class customResourceClass = controllerToCustomResourceMappings.get(controller.getClass()); if (customResourceClass == null) { diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/ConcurrencyIT.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/ConcurrencyIT.java index 4332faf413..391faa75d4 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/ConcurrencyIT.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/ConcurrencyIT.java @@ -13,7 +13,7 @@ import io.javaoperatorsdk.operator.config.runtime.DefaultConfigurationService; import io.javaoperatorsdk.operator.junit.OperatorExtension; import io.javaoperatorsdk.operator.sample.simple.TestCustomResource; -import io.javaoperatorsdk.operator.sample.simple.TestCustomResourceController; +import io.javaoperatorsdk.operator.sample.simple.TestReconciler; import io.javaoperatorsdk.operator.support.TestUtils; import static org.assertj.core.api.Assertions.assertThat; @@ -30,7 +30,7 @@ public class ConcurrencyIT { OperatorExtension operator = OperatorExtension.builder() .withConfigurationService(DefaultConfigurationService.instance()) - .withController(new TestCustomResourceController(true)) + .withController(new TestReconciler(true)) .build(); @Test @@ -48,7 +48,7 @@ public void manyResourcesGetCreatedUpdatedAndDeleted() throws InterruptedExcepti List items = operator.resources(ConfigMap.class) .withLabel( - "managedBy", TestCustomResourceController.class.getSimpleName()) + "managedBy", TestReconciler.class.getSimpleName()) .list() .getItems(); assertThat(items).hasSize(NUMBER_OF_RESOURCES_CREATED); @@ -81,7 +81,7 @@ public void manyResourcesGetCreatedUpdatedAndDeleted() throws InterruptedExcepti List items = operator.resources(ConfigMap.class) .withLabel( - "managedBy", TestCustomResourceController.class.getSimpleName()) + "managedBy", TestReconciler.class.getSimpleName()) .list() .getItems(); // reducing configmaps to names only - better for debugging 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 cb3cdbb704..a26dfc884c 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/ControllerExecutionIT.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/ControllerExecutionIT.java @@ -9,7 +9,7 @@ import io.javaoperatorsdk.operator.config.runtime.DefaultConfigurationService; import io.javaoperatorsdk.operator.junit.OperatorExtension; import io.javaoperatorsdk.operator.sample.simple.TestCustomResource; -import io.javaoperatorsdk.operator.sample.simple.TestCustomResourceController; +import io.javaoperatorsdk.operator.sample.simple.TestReconciler; import io.javaoperatorsdk.operator.support.TestUtils; import static org.assertj.core.api.Assertions.assertThat; @@ -20,12 +20,12 @@ public class ControllerExecutionIT { OperatorExtension operator = OperatorExtension.builder() .withConfigurationService(DefaultConfigurationService.instance()) - .withController(new TestCustomResourceController(true)) + .withController(new TestReconciler(true)) .build(); @Test public void configMapGetsCreatedForTestCustomResource() { - operator.getControllerOfType(TestCustomResourceController.class).setUpdateStatus(true); + operator.getControllerOfType(TestReconciler.class).setUpdateStatus(true); TestCustomResource resource = TestUtils.testCustomResource(); operator.create(TestCustomResource.class, resource); @@ -37,7 +37,7 @@ public void configMapGetsCreatedForTestCustomResource() { @Test public void eventIsSkippedChangedOnMetadataOnlyUpdate() { - operator.getControllerOfType(TestCustomResourceController.class).setUpdateStatus(false); + operator.getControllerOfType(TestReconciler.class).setUpdateStatus(false); TestCustomResource resource = TestUtils.testCustomResource(); operator.create(TestCustomResource.class, resource); diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/EventSourceIT.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/EventSourceIT.java index eb556535a1..66fa2036c4 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/EventSourceIT.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/EventSourceIT.java @@ -8,8 +8,8 @@ import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; import io.javaoperatorsdk.operator.config.runtime.DefaultConfigurationService; import io.javaoperatorsdk.operator.junit.OperatorExtension; +import io.javaoperatorsdk.operator.sample.event.EventSourceTestCustomReconciler; import io.javaoperatorsdk.operator.sample.event.EventSourceTestCustomResource; -import io.javaoperatorsdk.operator.sample.event.EventSourceTestCustomResourceController; import io.javaoperatorsdk.operator.sample.event.EventSourceTestCustomResourceSpec; import io.javaoperatorsdk.operator.support.TestUtils; @@ -21,7 +21,7 @@ public class EventSourceIT { OperatorExtension operator = OperatorExtension.builder() .withConfigurationService(DefaultConfigurationService.instance()) - .withController(EventSourceTestCustomResourceController.class) + .withController(EventSourceTestCustomReconciler.class) .build(); @Test @@ -33,7 +33,7 @@ public void receivingPeriodicEvents() { await() .atMost(5, TimeUnit.SECONDS) .pollInterval( - EventSourceTestCustomResourceController.TIMER_PERIOD / 2, TimeUnit.MILLISECONDS) + EventSourceTestCustomReconciler.TIMER_PERIOD / 2, TimeUnit.MILLISECONDS) .untilAsserted( () -> assertThat(TestUtils.getNumberOfExecutions(operator)) .isGreaterThanOrEqualTo(4)); @@ -45,7 +45,7 @@ public EventSourceTestCustomResource createTestCustomResource(String id) { new ObjectMetaBuilder() .withName("eventsource-" + id) .withNamespace(operator.getNamespace()) - .withFinalizers(EventSourceTestCustomResourceController.FINALIZER_NAME) + .withFinalizers(EventSourceTestCustomReconciler.FINALIZER_NAME) .build()); resource.setKind("Eventsourcesample"); resource.setSpec(new EventSourceTestCustomResourceSpec()); diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/InformerEventSourceIT.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/InformerEventSourceIT.java index 1cb3fa7096..d501fc5b22 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/InformerEventSourceIT.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/InformerEventSourceIT.java @@ -10,11 +10,11 @@ import io.fabric8.kubernetes.api.model.ObjectMeta; import io.javaoperatorsdk.operator.config.runtime.DefaultConfigurationService; import io.javaoperatorsdk.operator.junit.OperatorExtension; +import io.javaoperatorsdk.operator.sample.informereventsource.InformerEventSourceTestCustomReconciler; import io.javaoperatorsdk.operator.sample.informereventsource.InformerEventSourceTestCustomResource; -import io.javaoperatorsdk.operator.sample.informereventsource.InformerEventSourceTestCustomResourceController; -import static io.javaoperatorsdk.operator.sample.informereventsource.InformerEventSourceTestCustomResourceController.RELATED_RESOURCE_UID; -import static io.javaoperatorsdk.operator.sample.informereventsource.InformerEventSourceTestCustomResourceController.TARGET_CONFIG_MAP_KEY; +import static io.javaoperatorsdk.operator.sample.informereventsource.InformerEventSourceTestCustomReconciler.RELATED_RESOURCE_UID; +import static io.javaoperatorsdk.operator.sample.informereventsource.InformerEventSourceTestCustomReconciler.TARGET_CONFIG_MAP_KEY; import static org.assertj.core.api.Assertions.assertThat; import static org.awaitility.Awaitility.await; @@ -28,7 +28,7 @@ public class InformerEventSourceIT { OperatorExtension operator = OperatorExtension.builder() .withConfigurationService(DefaultConfigurationService.instance()) - .withController(new InformerEventSourceTestCustomResourceController()) + .withController(new InformerEventSourceTestCustomReconciler()) .build(); @Test 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 e5fcde6934..32c2bfc840 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/RetryIT.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/RetryIT.java @@ -9,8 +9,8 @@ import io.javaoperatorsdk.operator.config.runtime.DefaultConfigurationService; import io.javaoperatorsdk.operator.junit.OperatorExtension; import io.javaoperatorsdk.operator.processing.retry.GenericRetry; +import io.javaoperatorsdk.operator.sample.retry.RetryTestCustomReconciler; import io.javaoperatorsdk.operator.sample.retry.RetryTestCustomResource; -import io.javaoperatorsdk.operator.sample.retry.RetryTestCustomResourceController; import io.javaoperatorsdk.operator.sample.retry.RetryTestCustomResourceSpec; import io.javaoperatorsdk.operator.sample.retry.RetryTestCustomResourceStatus; import io.javaoperatorsdk.operator.support.TestUtils; @@ -26,7 +26,7 @@ public class RetryIT { OperatorExtension.builder() .withConfigurationService(DefaultConfigurationService.instance()) .withController( - new RetryTestCustomResourceController(), + new RetryTestCustomReconciler(), new GenericRetry().setInitialInterval(RETRY_INTERVAL).withLinearRetry() .setMaxAttempts(5)) .build(); @@ -40,7 +40,7 @@ public void retryFailedExecution() { await("cr status updated") .pollDelay( - RETRY_INTERVAL * (RetryTestCustomResourceController.NUMBER_FAILED_EXECUTIONS + 2), + RETRY_INTERVAL * (RetryTestCustomReconciler.NUMBER_FAILED_EXECUTIONS + 2), TimeUnit.MILLISECONDS) .pollInterval( RETRY_INTERVAL, @@ -49,7 +49,7 @@ public void retryFailedExecution() { .untilAsserted(() -> { assertThat( TestUtils.getNumberOfExecutions(operator)) - .isEqualTo(RetryTestCustomResourceController.NUMBER_FAILED_EXECUTIONS + 1); + .isEqualTo(RetryTestCustomReconciler.NUMBER_FAILED_EXECUTIONS + 1); RetryTestCustomResource finalResource = operator.get(RetryTestCustomResource.class, @@ -64,7 +64,7 @@ public RetryTestCustomResource createTestCustomResource(String id) { resource.setMetadata( new ObjectMetaBuilder() .withName("retrysource-" + id) - .withFinalizers(RetryTestCustomResourceController.FINALIZER_NAME) + .withFinalizers(RetryTestCustomReconciler.FINALIZER_NAME) .build()); resource.setKind("retrysample"); resource.setSpec(new RetryTestCustomResourceSpec()); diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/SubResourceUpdateIT.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/SubResourceUpdateIT.java index 1cee81c054..9a22af416f 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/SubResourceUpdateIT.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/SubResourceUpdateIT.java @@ -9,8 +9,8 @@ import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; import io.javaoperatorsdk.operator.config.runtime.DefaultConfigurationService; import io.javaoperatorsdk.operator.junit.OperatorExtension; +import io.javaoperatorsdk.operator.sample.subresource.SubResourceTestCustomReconciler; import io.javaoperatorsdk.operator.sample.subresource.SubResourceTestCustomResource; -import io.javaoperatorsdk.operator.sample.subresource.SubResourceTestCustomResourceController; import io.javaoperatorsdk.operator.sample.subresource.SubResourceTestCustomResourceSpec; import io.javaoperatorsdk.operator.support.TestUtils; @@ -24,7 +24,7 @@ public class SubResourceUpdateIT { OperatorExtension operator = OperatorExtension.builder() .withConfigurationService(DefaultConfigurationService.instance()) - .withController(SubResourceTestCustomResourceController.class) + .withController(SubResourceTestCustomReconciler.class) .build(); @Test @@ -113,7 +113,7 @@ public SubResourceTestCustomResource createTestCustomResource(String id) { resource.setMetadata( new ObjectMetaBuilder() .withName("subresource-" + id) - .withFinalizers(SubResourceTestCustomResourceController.FINALIZER_NAME) + .withFinalizers(SubResourceTestCustomReconciler.FINALIZER_NAME) .build()); resource.setKind("SubresourceSample"); resource.setSpec(new SubResourceTestCustomResourceSpec()); diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/UpdatingResAndSubResIT.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/UpdatingResAndSubResIT.java index 7d08ca6110..11542247a8 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/UpdatingResAndSubResIT.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/UpdatingResAndSubResIT.java @@ -8,8 +8,8 @@ import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; import io.javaoperatorsdk.operator.config.runtime.DefaultConfigurationService; import io.javaoperatorsdk.operator.junit.OperatorExtension; +import io.javaoperatorsdk.operator.sample.doubleupdate.DoubleUpdateTestCustomReconciler; import io.javaoperatorsdk.operator.sample.doubleupdate.DoubleUpdateTestCustomResource; -import io.javaoperatorsdk.operator.sample.doubleupdate.DoubleUpdateTestCustomResourceController; import io.javaoperatorsdk.operator.sample.doubleupdate.DoubleUpdateTestCustomResourceSpec; import io.javaoperatorsdk.operator.sample.doubleupdate.DoubleUpdateTestCustomResourceStatus; import io.javaoperatorsdk.operator.support.TestUtils; @@ -22,7 +22,7 @@ public class UpdatingResAndSubResIT { OperatorExtension operator = OperatorExtension.builder() .withConfigurationService(DefaultConfigurationService.instance()) - .withController(DoubleUpdateTestCustomResourceController.class) + .withController(DoubleUpdateTestCustomReconciler.class) .build(); @Test @@ -47,7 +47,7 @@ public void updatesSubResourceStatus() { customResource .getMetadata() .getAnnotations() - .get(DoubleUpdateTestCustomResourceController.TEST_ANNOTATION)) + .get(DoubleUpdateTestCustomReconciler.TEST_ANNOTATION)) .isNotNull(); } diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/runtime/ControllerAnnotationProcessorTest.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/runtime/ControllerAnnotationProcessorTest.java index e2f750b5d1..e819723c03 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/runtime/ControllerAnnotationProcessorTest.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/runtime/ControllerAnnotationProcessorTest.java @@ -16,7 +16,7 @@ public void generateCorrectDoneableClassIfInterfaceIsSecond() { .withProcessors(new ControllerAnnotationProcessor()) .compile( JavaFileObjects.forResource( - "compile-fixtures/ControllerImplemented2Interfaces.java")); + "compile-fixtures/ReconcilerImplemented2Interfaces.java")); CompilationSubject.assertThat(compilation).succeeded(); } @@ -26,9 +26,9 @@ public void generateCorrectDoneableClassIfThereIsAbstractBaseController() { Compiler.javac() .withProcessors(new ControllerAnnotationProcessor()) .compile( - JavaFileObjects.forResource("compile-fixtures/AbstractController.java"), + JavaFileObjects.forResource("compile-fixtures/AbstractReconciler.java"), JavaFileObjects.forResource( - "compile-fixtures/ControllerImplementedIntermediateAbstractClass.java")); + "compile-fixtures/ReconcilerImplementedIntermediateAbstractClass.java")); CompilationSubject.assertThat(compilation).succeeded(); } @@ -38,9 +38,9 @@ public void generateDoneableClasswithMultilevelHierarchy() { Compiler.javac() .withProcessors(new ControllerAnnotationProcessor()) .compile( - JavaFileObjects.forResource("compile-fixtures/AdditionalControllerInterface.java"), - JavaFileObjects.forResource("compile-fixtures/MultilevelAbstractController.java"), - JavaFileObjects.forResource("compile-fixtures/MultilevelController.java")); + JavaFileObjects.forResource("compile-fixtures/AdditionalReconcilerInterface.java"), + JavaFileObjects.forResource("compile-fixtures/MultilevelAbstractReconciler.java"), + JavaFileObjects.forResource("compile-fixtures/MultilevelReconciler.java")); CompilationSubject.assertThat(compilation).succeeded(); } } diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationServiceTest.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationServiceTest.java index 64623470ae..6964d31b8f 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationServiceTest.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationServiceTest.java @@ -14,7 +14,7 @@ import io.javaoperatorsdk.operator.ControllerUtils; import io.javaoperatorsdk.operator.api.Context; import io.javaoperatorsdk.operator.api.Controller; -import io.javaoperatorsdk.operator.api.ResourceController; +import io.javaoperatorsdk.operator.api.Reconciler; import io.javaoperatorsdk.operator.api.UpdateControl; import static org.assertj.core.api.Assertions.assertThat; @@ -74,7 +74,7 @@ void attemptingToRetrieveAnUnknownControllerShouldLogWarning() { @Test public void returnsValuesFromControllerAnnotationFinalizer() { - final var controller = new TestCustomResourceController(); + final var controller = new TestCustomReconciler(); final var configuration = DefaultConfigurationService.instance().getConfigurationFor(controller); assertEquals(CustomResource.getCRDName(TestCustomResource.class), configuration.getCRDName()); @@ -106,10 +106,10 @@ public void supportsInnerClassCustomResources() { @Controller(finalizerName = CUSTOM_FINALIZER_NAME) static class TestCustomFinalizerController - implements ResourceController { + implements Reconciler { @Override - public UpdateControl createOrUpdateResource( + public UpdateControl createOrUpdateResources( InnerCustomResource resource, Context context) { return null; } @@ -121,22 +121,22 @@ public static class InnerCustomResource extends CustomResource { } @Controller(name = NotAutomaticallyCreated.NAME) - static class NotAutomaticallyCreated implements ResourceController { + static class NotAutomaticallyCreated implements Reconciler { public static final String NAME = "should-be-logged"; @Override - public UpdateControl createOrUpdateResource( + public UpdateControl createOrUpdateResources( TestCustomResource resource, Context context) { return null; } } @Controller(generationAwareEventProcessing = false, name = "test") - static class TestCustomResourceController implements ResourceController { + static class TestCustomReconciler implements Reconciler { @Override - public UpdateControl createOrUpdateResource( + public UpdateControl createOrUpdateResources( TestCustomResource resource, Context context) { return null; } 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/DoubleUpdateTestCustomReconciler.java similarity index 84% rename from operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/doubleupdate/DoubleUpdateTestCustomResourceController.java rename to operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/doubleupdate/DoubleUpdateTestCustomReconciler.java index df9f3dcf10..849ba7b1ba 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/DoubleUpdateTestCustomReconciler.java @@ -8,22 +8,22 @@ import io.javaoperatorsdk.operator.api.Context; import io.javaoperatorsdk.operator.api.Controller; -import io.javaoperatorsdk.operator.api.ResourceController; +import io.javaoperatorsdk.operator.api.Reconciler; import io.javaoperatorsdk.operator.api.UpdateControl; import io.javaoperatorsdk.operator.support.TestExecutionInfoProvider; @Controller -public class DoubleUpdateTestCustomResourceController - implements ResourceController, TestExecutionInfoProvider { +public class DoubleUpdateTestCustomReconciler + implements Reconciler, TestExecutionInfoProvider { private static final Logger log = - LoggerFactory.getLogger(DoubleUpdateTestCustomResourceController.class); + LoggerFactory.getLogger(DoubleUpdateTestCustomReconciler.class); public static final String TEST_ANNOTATION = "TestAnnotation"; public static final String TEST_ANNOTATION_VALUE = "TestAnnotationValue"; private final AtomicInteger numberOfExecutions = new AtomicInteger(0); @Override - public UpdateControl createOrUpdateResource( + public UpdateControl createOrUpdateResources( DoubleUpdateTestCustomResource resource, Context context) { numberOfExecutions.addAndGet(1); diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/event/EventSourceTestCustomResourceController.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/event/EventSourceTestCustomReconciler.java similarity index 88% rename from operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/event/EventSourceTestCustomResourceController.java rename to operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/event/EventSourceTestCustomReconciler.java index cecf713f3c..aaa9e1f526 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/event/EventSourceTestCustomResourceController.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/event/EventSourceTestCustomReconciler.java @@ -10,22 +10,22 @@ import io.javaoperatorsdk.operator.api.Context; import io.javaoperatorsdk.operator.api.Controller; import io.javaoperatorsdk.operator.api.EventSourceInitializer; -import io.javaoperatorsdk.operator.api.ResourceController; +import io.javaoperatorsdk.operator.api.Reconciler; import io.javaoperatorsdk.operator.api.UpdateControl; import io.javaoperatorsdk.operator.processing.event.EventSourceManager; import io.javaoperatorsdk.operator.processing.event.internal.TimerEventSource; import io.javaoperatorsdk.operator.support.TestExecutionInfoProvider; @Controller -public class EventSourceTestCustomResourceController - implements ResourceController, EventSourceInitializer, +public class EventSourceTestCustomReconciler + implements Reconciler, EventSourceInitializer, TestExecutionInfoProvider { public static final String FINALIZER_NAME = ControllerUtils.getDefaultFinalizerName( CustomResource.getCRDName(EventSourceTestCustomResource.class)); private static final Logger log = - LoggerFactory.getLogger(EventSourceTestCustomResourceController.class); + LoggerFactory.getLogger(EventSourceTestCustomReconciler.class); public static final int TIMER_DELAY = 300; public static final int TIMER_PERIOD = 500; private final AtomicInteger numberOfExecutions = new AtomicInteger(0); @@ -38,7 +38,7 @@ public void prepareEventSources(EventSourceManager eventSourceManager) { } @Override - public UpdateControl createOrUpdateResource( + public UpdateControl createOrUpdateResources( EventSourceTestCustomResource resource, Context context) { timerEventSource.schedule(resource, TIMER_DELAY, TIMER_PERIOD); diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/informereventsource/InformerEventSourceTestCustomResourceController.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/informereventsource/InformerEventSourceTestCustomReconciler.java similarity index 88% rename from operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/informereventsource/InformerEventSourceTestCustomResourceController.java rename to operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/informereventsource/InformerEventSourceTestCustomReconciler.java index ad2a2dc863..64c191b7ce 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/informereventsource/InformerEventSourceTestCustomResourceController.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/informereventsource/InformerEventSourceTestCustomReconciler.java @@ -8,7 +8,7 @@ import io.javaoperatorsdk.operator.api.Context; import io.javaoperatorsdk.operator.api.Controller; import io.javaoperatorsdk.operator.api.EventSourceInitializer; -import io.javaoperatorsdk.operator.api.ResourceController; +import io.javaoperatorsdk.operator.api.Reconciler; import io.javaoperatorsdk.operator.api.UpdateControl; import io.javaoperatorsdk.operator.junit.KubernetesClientAware; import io.javaoperatorsdk.operator.processing.event.EventSourceManager; @@ -22,12 +22,12 @@ * sample usage of InformerEventSource */ @Controller(finalizerName = NO_FINALIZER) -public class InformerEventSourceTestCustomResourceController implements - ResourceController, KubernetesClientAware, +public class InformerEventSourceTestCustomReconciler implements + Reconciler, KubernetesClientAware, EventSourceInitializer { private static final Logger LOGGER = - LoggerFactory.getLogger(InformerEventSourceTestCustomResourceController.class); + LoggerFactory.getLogger(InformerEventSourceTestCustomReconciler.class); public static final String RELATED_RESOURCE_UID = "relatedResourceName"; public static final String TARGET_CONFIG_MAP_KEY = "targetStatus"; @@ -43,7 +43,7 @@ public void prepareEventSources(EventSourceManager eventSourceManager) { } @Override - public UpdateControl createOrUpdateResource( + public UpdateControl createOrUpdateResources( InformerEventSourceTestCustomResource resource, Context context) { diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/retry/RetryTestCustomResourceController.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/retry/RetryTestCustomReconciler.java similarity index 88% rename from operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/retry/RetryTestCustomResourceController.java rename to operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/retry/RetryTestCustomReconciler.java index cf24ee9484..872d9e9f3f 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/retry/RetryTestCustomResourceController.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/retry/RetryTestCustomReconciler.java @@ -9,13 +9,13 @@ import io.javaoperatorsdk.operator.ControllerUtils; import io.javaoperatorsdk.operator.api.Context; import io.javaoperatorsdk.operator.api.Controller; -import io.javaoperatorsdk.operator.api.ResourceController; +import io.javaoperatorsdk.operator.api.Reconciler; import io.javaoperatorsdk.operator.api.UpdateControl; import io.javaoperatorsdk.operator.support.TestExecutionInfoProvider; @Controller -public class RetryTestCustomResourceController - implements ResourceController, TestExecutionInfoProvider { +public class RetryTestCustomReconciler + implements Reconciler, TestExecutionInfoProvider { public static final int NUMBER_FAILED_EXECUTIONS = 2; @@ -23,11 +23,11 @@ public class RetryTestCustomResourceController ControllerUtils.getDefaultFinalizerName( CustomResource.getCRDName(RetryTestCustomResource.class)); private static final Logger log = - LoggerFactory.getLogger(RetryTestCustomResourceController.class); + LoggerFactory.getLogger(RetryTestCustomReconciler.class); private final AtomicInteger numberOfExecutions = new AtomicInteger(0); @Override - public UpdateControl createOrUpdateResource( + public UpdateControl createOrUpdateResources( RetryTestCustomResource resource, Context context) { numberOfExecutions.addAndGet(1); diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomResourceController.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestReconciler.java similarity index 91% rename from operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomResourceController.java rename to operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestReconciler.java index 6aefaa3922..aa3e02b196 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomResourceController.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestReconciler.java @@ -16,17 +16,17 @@ 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.Reconciler; import io.javaoperatorsdk.operator.api.UpdateControl; import io.javaoperatorsdk.operator.junit.KubernetesClientAware; import io.javaoperatorsdk.operator.support.TestExecutionInfoProvider; @Controller(generationAwareEventProcessing = false) -public class TestCustomResourceController - implements ResourceController, TestExecutionInfoProvider, +public class TestReconciler + implements Reconciler, TestExecutionInfoProvider, KubernetesClientAware { - private static final Logger log = LoggerFactory.getLogger(TestCustomResourceController.class); + private static final Logger log = LoggerFactory.getLogger(TestReconciler.class); public static final String FINALIZER_NAME = ControllerUtils.getDefaultFinalizerName(CustomResource.getCRDName(TestCustomResource.class)); @@ -35,11 +35,11 @@ public class TestCustomResourceController private KubernetesClient kubernetesClient; private boolean updateStatus; - public TestCustomResourceController() { + public TestReconciler() { this(true); } - public TestCustomResourceController(boolean updateStatus) { + public TestReconciler(boolean updateStatus) { this.updateStatus = updateStatus; } @@ -62,7 +62,7 @@ public void setKubernetesClient(KubernetesClient kubernetesClient) { } @Override - public DeleteControl deleteResource( + public DeleteControl deleteResources( TestCustomResource resource, Context context) { Boolean delete = kubernetesClient @@ -85,7 +85,7 @@ public DeleteControl deleteResource( } @Override - public UpdateControl createOrUpdateResource( + public UpdateControl createOrUpdateResources( TestCustomResource resource, Context context) { numberOfExecutions.addAndGet(1); if (!resource.getMetadata().getFinalizers().contains(FINALIZER_NAME)) { @@ -109,7 +109,7 @@ public UpdateControl createOrUpdateResource( .createOrReplace(existingConfigMap); } else { Map labels = new HashMap<>(); - labels.put("managedBy", TestCustomResourceController.class.getSimpleName()); + labels.put("managedBy", TestReconciler.class.getSimpleName()); ConfigMap newConfigMap = new ConfigMapBuilder() .withMetadata( diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/subresource/SubResourceTestCustomResourceController.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/subresource/SubResourceTestCustomReconciler.java similarity index 85% rename from operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/subresource/SubResourceTestCustomResourceController.java rename to operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/subresource/SubResourceTestCustomReconciler.java index f04958cbcd..033fdaafc4 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/subresource/SubResourceTestCustomResourceController.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/subresource/SubResourceTestCustomReconciler.java @@ -9,23 +9,23 @@ import io.javaoperatorsdk.operator.ControllerUtils; import io.javaoperatorsdk.operator.api.Context; import io.javaoperatorsdk.operator.api.Controller; -import io.javaoperatorsdk.operator.api.ResourceController; +import io.javaoperatorsdk.operator.api.Reconciler; import io.javaoperatorsdk.operator.api.UpdateControl; import io.javaoperatorsdk.operator.support.TestExecutionInfoProvider; @Controller(generationAwareEventProcessing = false) -public class SubResourceTestCustomResourceController - implements ResourceController, TestExecutionInfoProvider { +public class SubResourceTestCustomReconciler + implements Reconciler, TestExecutionInfoProvider { public static final String FINALIZER_NAME = ControllerUtils.getDefaultFinalizerName( CustomResource.getCRDName(SubResourceTestCustomResource.class)); private static final Logger log = - LoggerFactory.getLogger(SubResourceTestCustomResourceController.class); + LoggerFactory.getLogger(SubResourceTestCustomReconciler.class); private final AtomicInteger numberOfExecutions = new AtomicInteger(0); @Override - public UpdateControl createOrUpdateResource( + public UpdateControl createOrUpdateResources( SubResourceTestCustomResource resource, Context context) { numberOfExecutions.addAndGet(1); if (!resource.getMetadata().getFinalizers().contains(FINALIZER_NAME)) { diff --git a/operator-framework/src/test/resources/compile-fixtures/AbstractController.java b/operator-framework/src/test/resources/compile-fixtures/AbstractReconciler.java similarity index 58% rename from operator-framework/src/test/resources/compile-fixtures/AbstractController.java rename to operator-framework/src/test/resources/compile-fixtures/AbstractReconciler.java index d35a18c070..527c8e9f90 100644 --- a/operator-framework/src/test/resources/compile-fixtures/AbstractController.java +++ b/operator-framework/src/test/resources/compile-fixtures/AbstractReconciler.java @@ -1,12 +1,12 @@ package io; import io.fabric8.kubernetes.client.CustomResource; -import io.javaoperatorsdk.operator.api.ResourceController; +import io.javaoperatorsdk.operator.api.Reconciler; import java.io.Serializable; -public abstract class AbstractController> implements Serializable, - ResourceController { +public abstract class AbstractReconciler> implements Serializable, + Reconciler { public static class MyCustomResource extends CustomResource { diff --git a/operator-framework/src/test/resources/compile-fixtures/AdditionalControllerInterface.java b/operator-framework/src/test/resources/compile-fixtures/AdditionalControllerInterface.java deleted file mode 100644 index 01077510f5..0000000000 --- a/operator-framework/src/test/resources/compile-fixtures/AdditionalControllerInterface.java +++ /dev/null @@ -1,11 +0,0 @@ -package io; - -import io.fabric8.kubernetes.client.CustomResource; -import io.javaoperatorsdk.operator.api.ResourceController; -import java.io.Serializable; - - -public interface AdditionalControllerInterface> extends - Serializable, - ResourceController { -} diff --git a/operator-framework/src/test/resources/compile-fixtures/AdditionalReconcilerInterface.java b/operator-framework/src/test/resources/compile-fixtures/AdditionalReconcilerInterface.java new file mode 100644 index 0000000000..c8046e2f51 --- /dev/null +++ b/operator-framework/src/test/resources/compile-fixtures/AdditionalReconcilerInterface.java @@ -0,0 +1,11 @@ +package io; + +import io.fabric8.kubernetes.client.CustomResource; +import io.javaoperatorsdk.operator.api.Reconciler; +import java.io.Serializable; + + +public interface AdditionalReconcilerInterface> extends + Serializable, + Reconciler { +} diff --git a/operator-framework/src/test/resources/compile-fixtures/MultilevelAbstractController.java b/operator-framework/src/test/resources/compile-fixtures/MultilevelAbstractReconciler.java similarity index 58% rename from operator-framework/src/test/resources/compile-fixtures/MultilevelAbstractController.java rename to operator-framework/src/test/resources/compile-fixtures/MultilevelAbstractReconciler.java index 4fe30adfe3..0dafba4c69 100644 --- a/operator-framework/src/test/resources/compile-fixtures/MultilevelAbstractController.java +++ b/operator-framework/src/test/resources/compile-fixtures/MultilevelAbstractReconciler.java @@ -4,8 +4,8 @@ import java.io.Serializable; -public abstract class MultilevelAbstractController> implements +public abstract class MultilevelAbstractReconciler> implements Serializable, - AdditionalControllerInterface { + AdditionalReconcilerInterface { } diff --git a/operator-framework/src/test/resources/compile-fixtures/MultilevelController.java b/operator-framework/src/test/resources/compile-fixtures/MultilevelReconciler.java similarity index 60% rename from operator-framework/src/test/resources/compile-fixtures/MultilevelController.java rename to operator-framework/src/test/resources/compile-fixtures/MultilevelReconciler.java index 0c07065337..aa181d8845 100644 --- a/operator-framework/src/test/resources/compile-fixtures/MultilevelController.java +++ b/operator-framework/src/test/resources/compile-fixtures/MultilevelReconciler.java @@ -7,20 +7,20 @@ import io.javaoperatorsdk.operator.api.UpdateControl; @Controller -public class MultilevelController extends - MultilevelAbstractController { +public class MultilevelReconciler extends + MultilevelAbstractReconciler { public static class MyCustomResource extends CustomResource { } - public UpdateControl createOrUpdateResource( - MultilevelController.MyCustomResource customResource, + public UpdateControl createOrUpdateResources( + MultilevelReconciler.MyCustomResource customResource, Context context) { return UpdateControl.updateCustomResource(null); } - public DeleteControl deleteResource(MultilevelController.MyCustomResource customResource, + public DeleteControl deleteResources(MultilevelReconciler.MyCustomResource customResource, Context context) { return DeleteControl.defaultDelete(); } diff --git a/operator-framework/src/test/resources/compile-fixtures/ControllerImplemented2Interfaces.java b/operator-framework/src/test/resources/compile-fixtures/ReconcilerImplemented2Interfaces.java similarity index 63% rename from operator-framework/src/test/resources/compile-fixtures/ControllerImplemented2Interfaces.java rename to operator-framework/src/test/resources/compile-fixtures/ReconcilerImplemented2Interfaces.java index 2b0fa58a8f..4160da0a82 100644 --- a/operator-framework/src/test/resources/compile-fixtures/ControllerImplemented2Interfaces.java +++ b/operator-framework/src/test/resources/compile-fixtures/ReconcilerImplemented2Interfaces.java @@ -4,23 +4,23 @@ 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.Reconciler; import io.javaoperatorsdk.operator.api.UpdateControl; import java.io.Serializable; @Controller -public class ControllerImplemented2Interfaces implements Serializable, ResourceController { +public class ReconcilerImplemented2Interfaces implements Serializable, Reconciler { public static class MyCustomResource extends CustomResource { } @Override - public UpdateControl createOrUpdateResource(MyCustomResource customResource, Context context) { + public UpdateControl createOrUpdateResources(MyCustomResource customResource, Context context) { return UpdateControl.updateCustomResource(null); } @Override - public DeleteControl deleteResource(MyCustomResource customResource, Context context) { + public DeleteControl deleteResources(MyCustomResource customResource, Context context) { return DeleteControl.defaultDelete(); } } diff --git a/operator-framework/src/test/resources/compile-fixtures/ControllerImplementedIntermediateAbstractClass.java b/operator-framework/src/test/resources/compile-fixtures/ReconcilerImplementedIntermediateAbstractClass.java similarity index 55% rename from operator-framework/src/test/resources/compile-fixtures/ControllerImplementedIntermediateAbstractClass.java rename to operator-framework/src/test/resources/compile-fixtures/ReconcilerImplementedIntermediateAbstractClass.java index 5674a3ed81..a8fe67f532 100644 --- a/operator-framework/src/test/resources/compile-fixtures/ControllerImplementedIntermediateAbstractClass.java +++ b/operator-framework/src/test/resources/compile-fixtures/ReconcilerImplementedIntermediateAbstractClass.java @@ -7,16 +7,16 @@ import java.io.Serializable; @Controller -public class ControllerImplementedIntermediateAbstractClass extends - AbstractController implements Serializable { +public class ReconcilerImplementedIntermediateAbstractClass extends + AbstractReconciler implements Serializable { - public UpdateControl createOrUpdateResource( - AbstractController.MyCustomResource customResource, + public UpdateControl createOrUpdateResources( + AbstractReconciler.MyCustomResource customResource, Context context) { return UpdateControl.updateCustomResource(null); } - public DeleteControl deleteResource(AbstractController.MyCustomResource customResource, + public DeleteControl deleteResources(AbstractReconciler.MyCustomResource customResource, Context context) { return DeleteControl.defaultDelete(); } diff --git a/samples/common/src/main/java/io/javaoperatorsdk/operator/sample/CustomServiceController.java b/samples/common/src/main/java/io/javaoperatorsdk/operator/sample/CustomServiceController.java index 932fd1bc1b..daae8f76a2 100644 --- a/samples/common/src/main/java/io/javaoperatorsdk/operator/sample/CustomServiceController.java +++ b/samples/common/src/main/java/io/javaoperatorsdk/operator/sample/CustomServiceController.java @@ -13,12 +13,12 @@ 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.Reconciler; import io.javaoperatorsdk.operator.api.UpdateControl; /** A very simple sample controller that creates a service with a label. */ @Controller -public class CustomServiceController implements ResourceController { +public class CustomServiceController implements Reconciler { public static final String KIND = "CustomService"; private static final Logger log = LoggerFactory.getLogger(CustomServiceController.class); @@ -34,13 +34,13 @@ public CustomServiceController(KubernetesClient kubernetesClient) { } @Override - public DeleteControl deleteResource(CustomService resource, Context context) { + public DeleteControl deleteResources(CustomService resource, Context context) { log.info("Execution deleteResource for: {}", resource.getMetadata().getName()); return DeleteControl.defaultDelete(); } @Override - public UpdateControl createOrUpdateResource( + public UpdateControl createOrUpdateResources( CustomService resource, Context context) { log.info("Execution createOrUpdateResource for: {}", resource.getMetadata().getName()); 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 6aaa737c7c..4c7ca515bd 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 @@ -11,7 +11,7 @@ public static void main(String[] args) { new Operator(ConfigurationServiceOverrider.override(DefaultConfigurationService.instance()) .withConcurrentReconciliationThreads(2) .build()); - operator.register(new CustomServiceController()); + operator.registerController(new CustomServiceController()); operator.start(); } } 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 40c5ecefb9..3432ed091b 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 @@ -6,7 +6,7 @@ import org.springframework.context.annotation.Configuration; import io.javaoperatorsdk.operator.Operator; -import io.javaoperatorsdk.operator.api.ResourceController; +import io.javaoperatorsdk.operator.api.Reconciler; import io.javaoperatorsdk.operator.config.runtime.DefaultConfigurationService; @Configuration @@ -19,9 +19,9 @@ public CustomServiceController customServiceController() { // Register all controller beans @Bean(initMethod = "start", destroyMethod = "stop") - public Operator operator(List controllers) { + public Operator operator(List controllers) { Operator operator = new Operator(DefaultConfigurationService.instance()); - controllers.forEach(operator::register); + controllers.forEach(operator::registerController); return operator; } } From 5919eac0f9746e160c572544e03b41beada6646e Mon Sep 17 00:00:00 2001 From: csviri Date: Tue, 2 Nov 2021 11:25:03 +0100 Subject: [PATCH 02/24] refactor!: moving reconciler related classes to reconciler package --- .../monitoring/micrometer/MicrometerMetrics.java | 2 +- .../io/javaoperatorsdk/operator/ControllerUtils.java | 4 ++-- .../java/io/javaoperatorsdk/operator/Operator.java | 2 +- .../operator/api/ObservedGenerationAware.java | 1 + .../api/config/AbstractConfigurationService.java | 2 +- .../operator/api/config/ConfigurationService.java | 2 +- .../api/config/ConfigurationServiceOverrider.java | 2 +- .../operator/api/config/ControllerConfiguration.java | 2 +- .../operator/api/monitoring/Metrics.java | 2 +- .../operator/api/{ => reconciler}/BaseControl.java | 2 +- .../operator/api/{ => reconciler}/Context.java | 2 +- .../operator/api/{ => reconciler}/Controller.java | 2 +- .../api/{ => reconciler}/DefaultContext.java | 2 +- .../operator/api/{ => reconciler}/DeleteControl.java | 2 +- .../api/{ => reconciler}/EventSourceInitializer.java | 2 +- .../operator/api/{ => reconciler}/Reconciler.java | 2 +- .../operator/api/{ => reconciler}/RetryInfo.java | 2 +- .../operator/api/{ => reconciler}/UpdateControl.java | 2 +- .../operator/processing/ConfiguredController.java | 10 +++++----- .../operator/processing/EventDispatcher.java | 12 ++++++------ .../operator/processing/EventProcessor.java | 2 +- .../operator/processing/ExecutionScope.java | 2 +- .../operator/processing/retry/RetryExecution.java | 2 +- .../operator/ControllerManagerTest.java | 2 +- .../operator/api/DeleteControlTest.java | 1 + .../operator/processing/EventDispatcherTest.java | 10 +++++----- .../event/internal/CustomResourceSelectorTest.java | 8 ++++---- .../sample/simple/DuplicateCRController.java | 8 ++++---- .../operator/sample/simple/TestCustomReconciler.java | 10 +++++----- .../sample/simple/TestCustomReconcilerV2.java | 8 ++++---- .../operator/junit/OperatorExtension.java | 2 +- .../config/runtime/AnnotationConfiguration.java | 4 ++-- .../runtime/ControllerAnnotationProcessor.java | 4 ++-- .../config/runtime/DefaultConfigurationService.java | 2 +- .../config/runtime/RuntimeControllerMetadata.java | 2 +- .../runtime/DefaultConfigurationServiceTest.java | 8 ++++---- .../DoubleUpdateTestCustomReconciler.java | 8 ++++---- .../event/EventSourceTestCustomReconciler.java | 10 +++++----- .../InformerEventSourceTestCustomReconciler.java | 12 ++++++------ .../sample/retry/RetryTestCustomReconciler.java | 8 ++++---- .../operator/sample/simple/TestReconciler.java | 10 +++++----- .../subresource/SubResourceTestCustomReconciler.java | 8 ++++---- .../compile-fixtures/AbstractReconciler.java | 2 +- .../AdditionalReconcilerInterface.java | 2 +- .../compile-fixtures/MultilevelReconciler.java | 8 ++++---- .../ReconcilerImplemented2Interfaces.java | 10 +++++----- ...concilerImplementedIntermediateAbstractClass.java | 8 ++++---- .../operator/sample/CustomServiceController.java | 10 +++++----- .../io/javaoperatorsdk/operator/sample/Config.java | 2 +- 49 files changed, 117 insertions(+), 115 deletions(-) rename operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/{ => reconciler}/BaseControl.java (90%) rename operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/{ => reconciler}/Context.java (65%) rename operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/{ => reconciler}/Controller.java (97%) rename operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/{ => reconciler}/DefaultContext.java (85%) rename operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/{ => reconciler}/DeleteControl.java (93%) rename operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/{ => reconciler}/EventSourceInitializer.java (91%) rename operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/{ => reconciler}/Reconciler.java (98%) rename operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/{ => reconciler}/RetryInfo.java (62%) rename operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/{ => reconciler}/UpdateControl.java (97%) diff --git a/micrometer-support/src/main/java/io/javaoperatorsdk/operator/monitoring/micrometer/MicrometerMetrics.java b/micrometer-support/src/main/java/io/javaoperatorsdk/operator/monitoring/micrometer/MicrometerMetrics.java index a90460d825..15f29929a9 100644 --- a/micrometer-support/src/main/java/io/javaoperatorsdk/operator/monitoring/micrometer/MicrometerMetrics.java +++ b/micrometer-support/src/main/java/io/javaoperatorsdk/operator/monitoring/micrometer/MicrometerMetrics.java @@ -5,7 +5,7 @@ import java.util.List; import java.util.Map; -import io.javaoperatorsdk.operator.api.RetryInfo; +import io.javaoperatorsdk.operator.api.reconciler.RetryInfo; import io.javaoperatorsdk.operator.api.monitoring.Metrics; import io.javaoperatorsdk.operator.processing.event.CustomResourceID; import io.javaoperatorsdk.operator.processing.event.Event; diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/ControllerUtils.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/ControllerUtils.java index 00ac739242..57d75cd291 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/ControllerUtils.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/ControllerUtils.java @@ -2,8 +2,8 @@ import java.util.Locale; -import io.javaoperatorsdk.operator.api.Controller; -import io.javaoperatorsdk.operator.api.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.Controller; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; @SuppressWarnings("rawtypes") public class ControllerUtils { 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 b9526a4246..fc7d88101c 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 @@ -14,7 +14,7 @@ import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.Version; import io.javaoperatorsdk.operator.api.LifecycleAware; -import io.javaoperatorsdk.operator.api.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.config.ConfigurationService; import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; import io.javaoperatorsdk.operator.api.config.ExecutorServiceManager; diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/ObservedGenerationAware.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/ObservedGenerationAware.java index 946fde48a3..e0a05a6b6c 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/ObservedGenerationAware.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/ObservedGenerationAware.java @@ -3,6 +3,7 @@ import java.util.Optional; import io.fabric8.kubernetes.client.CustomResource; +import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; /** * If the custom resource's status implements this interface, the observed generation will be diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/AbstractConfigurationService.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/AbstractConfigurationService.java index ea362e1818..4424937d6e 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/AbstractConfigurationService.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/AbstractConfigurationService.java @@ -7,7 +7,7 @@ import io.fabric8.kubernetes.client.CustomResource; import io.javaoperatorsdk.operator.ControllerUtils; -import io.javaoperatorsdk.operator.api.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; @SuppressWarnings("rawtypes") public class AbstractConfigurationService implements ConfigurationService { diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationService.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationService.java index 93e424d416..556c002b33 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationService.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationService.java @@ -6,7 +6,7 @@ import io.fabric8.kubernetes.client.Config; import io.fabric8.kubernetes.client.CustomResource; -import io.javaoperatorsdk.operator.api.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.monitoring.Metrics; import com.fasterxml.jackson.core.JsonProcessingException; diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationServiceOverrider.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationServiceOverrider.java index 7a64821211..e1298cae4b 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationServiceOverrider.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationServiceOverrider.java @@ -4,7 +4,7 @@ import io.fabric8.kubernetes.client.Config; import io.fabric8.kubernetes.client.CustomResource; -import io.javaoperatorsdk.operator.api.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.monitoring.Metrics; public class ConfigurationServiceOverrider { diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ControllerConfiguration.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ControllerConfiguration.java index 6b639d2d71..c9d6453807 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ControllerConfiguration.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ControllerConfiguration.java @@ -6,7 +6,7 @@ import io.fabric8.kubernetes.client.CustomResource; import io.javaoperatorsdk.operator.ControllerUtils; -import io.javaoperatorsdk.operator.api.Controller; +import io.javaoperatorsdk.operator.api.reconciler.Controller; import io.javaoperatorsdk.operator.processing.event.internal.CustomResourceEventFilter; import io.javaoperatorsdk.operator.processing.event.internal.CustomResourceEventFilters; diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/monitoring/Metrics.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/monitoring/Metrics.java index 5544bc542e..efb99cc0ae 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/monitoring/Metrics.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/monitoring/Metrics.java @@ -2,7 +2,7 @@ import java.util.Map; -import io.javaoperatorsdk.operator.api.RetryInfo; +import io.javaoperatorsdk.operator.api.reconciler.RetryInfo; import io.javaoperatorsdk.operator.processing.event.CustomResourceID; import io.javaoperatorsdk.operator.processing.event.Event; diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/BaseControl.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/BaseControl.java similarity index 90% rename from operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/BaseControl.java rename to operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/BaseControl.java index aeca177cae..0fdcab7a56 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/BaseControl.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/BaseControl.java @@ -1,4 +1,4 @@ -package io.javaoperatorsdk.operator.api; +package io.javaoperatorsdk.operator.api.reconciler; import java.util.Optional; import java.util.concurrent.TimeUnit; diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/Context.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/Context.java similarity index 65% rename from operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/Context.java rename to operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/Context.java index 3651414c16..bc8966f31c 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/Context.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/Context.java @@ -1,4 +1,4 @@ -package io.javaoperatorsdk.operator.api; +package io.javaoperatorsdk.operator.api.reconciler; import java.util.Optional; diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/Controller.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/Controller.java similarity index 97% rename from operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/Controller.java rename to operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/Controller.java index bf03b03309..169e45d5bc 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/Controller.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/Controller.java @@ -1,4 +1,4 @@ -package io.javaoperatorsdk.operator.api; +package io.javaoperatorsdk.operator.api.reconciler; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/DefaultContext.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/DefaultContext.java similarity index 85% rename from operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/DefaultContext.java rename to operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/DefaultContext.java index b74793d25c..8f73af29e7 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/DefaultContext.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/DefaultContext.java @@ -1,4 +1,4 @@ -package io.javaoperatorsdk.operator.api; +package io.javaoperatorsdk.operator.api.reconciler; import java.util.Optional; diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/DeleteControl.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/DeleteControl.java similarity index 93% rename from operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/DeleteControl.java rename to operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/DeleteControl.java index 0c2c3c87e5..5f41192c60 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/DeleteControl.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/DeleteControl.java @@ -1,4 +1,4 @@ -package io.javaoperatorsdk.operator.api; +package io.javaoperatorsdk.operator.api.reconciler; public class DeleteControl extends BaseControl { diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/EventSourceInitializer.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/EventSourceInitializer.java similarity index 91% rename from operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/EventSourceInitializer.java rename to operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/EventSourceInitializer.java index e7500b9e47..ed26b46ac1 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/EventSourceInitializer.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/EventSourceInitializer.java @@ -1,4 +1,4 @@ -package io.javaoperatorsdk.operator.api; +package io.javaoperatorsdk.operator.api.reconciler; import io.fabric8.kubernetes.client.CustomResource; import io.javaoperatorsdk.operator.processing.event.EventSourceManager; diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/Reconciler.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/Reconciler.java similarity index 98% rename from operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/Reconciler.java rename to operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/Reconciler.java index 915f8e7e82..4f9eeef543 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/Reconciler.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/Reconciler.java @@ -1,4 +1,4 @@ -package io.javaoperatorsdk.operator.api; +package io.javaoperatorsdk.operator.api.reconciler; import io.fabric8.kubernetes.client.CustomResource; diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/RetryInfo.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/RetryInfo.java similarity index 62% rename from operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/RetryInfo.java rename to operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/RetryInfo.java index 92149012a7..2525bde192 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/RetryInfo.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/RetryInfo.java @@ -1,4 +1,4 @@ -package io.javaoperatorsdk.operator.api; +package io.javaoperatorsdk.operator.api.reconciler; public interface RetryInfo { diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/UpdateControl.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/UpdateControl.java similarity index 97% rename from operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/UpdateControl.java rename to operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/UpdateControl.java index 2c9531ca06..7d7b6b6e0b 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/UpdateControl.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/UpdateControl.java @@ -1,4 +1,4 @@ -package io.javaoperatorsdk.operator.api; +package io.javaoperatorsdk.operator.api.reconciler; import io.fabric8.kubernetes.client.CustomResource; diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/ConfiguredController.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/ConfiguredController.java index bb6ff5a257..116baf7f32 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/ConfiguredController.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/ConfiguredController.java @@ -11,12 +11,12 @@ import io.javaoperatorsdk.operator.CustomResourceUtils; import io.javaoperatorsdk.operator.MissingCRDException; import io.javaoperatorsdk.operator.OperatorException; -import io.javaoperatorsdk.operator.api.Context; -import io.javaoperatorsdk.operator.api.DeleteControl; -import io.javaoperatorsdk.operator.api.EventSourceInitializer; +import io.javaoperatorsdk.operator.api.reconciler.Context; +import io.javaoperatorsdk.operator.api.reconciler.DeleteControl; +import io.javaoperatorsdk.operator.api.reconciler.EventSourceInitializer; import io.javaoperatorsdk.operator.api.LifecycleAware; -import io.javaoperatorsdk.operator.api.Reconciler; -import io.javaoperatorsdk.operator.api.UpdateControl; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; import io.javaoperatorsdk.operator.api.monitoring.Metrics.ControllerExecution; import io.javaoperatorsdk.operator.processing.event.DefaultEventSourceManager; diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventDispatcher.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventDispatcher.java index 664be5f796..655afb1597 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventDispatcher.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventDispatcher.java @@ -8,13 +8,13 @@ import io.fabric8.kubernetes.client.KubernetesClientException; import io.fabric8.kubernetes.client.dsl.MixedOperation; import io.fabric8.kubernetes.client.dsl.Resource; -import io.javaoperatorsdk.operator.api.BaseControl; -import io.javaoperatorsdk.operator.api.Context; -import io.javaoperatorsdk.operator.api.DefaultContext; -import io.javaoperatorsdk.operator.api.DeleteControl; +import io.javaoperatorsdk.operator.api.reconciler.BaseControl; +import io.javaoperatorsdk.operator.api.reconciler.Context; +import io.javaoperatorsdk.operator.api.reconciler.DefaultContext; +import io.javaoperatorsdk.operator.api.reconciler.DeleteControl; import io.javaoperatorsdk.operator.api.ObservedGenerationAware; -import io.javaoperatorsdk.operator.api.Reconciler; -import io.javaoperatorsdk.operator.api.UpdateControl; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; import static io.javaoperatorsdk.operator.processing.KubernetesResourceUtils.getName; diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventProcessor.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventProcessor.java index 7a5410f1f5..ee6832b7a2 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventProcessor.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventProcessor.java @@ -15,7 +15,7 @@ import io.fabric8.kubernetes.client.CustomResource; import io.javaoperatorsdk.operator.OperatorException; import io.javaoperatorsdk.operator.api.LifecycleAware; -import io.javaoperatorsdk.operator.api.RetryInfo; +import io.javaoperatorsdk.operator.api.reconciler.RetryInfo; import io.javaoperatorsdk.operator.api.config.ConfigurationService; import io.javaoperatorsdk.operator.api.config.ExecutorServiceManager; import io.javaoperatorsdk.operator.api.monitoring.Metrics; diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/ExecutionScope.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/ExecutionScope.java index 6cf05e9308..a24f3461c7 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/ExecutionScope.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/ExecutionScope.java @@ -1,7 +1,7 @@ package io.javaoperatorsdk.operator.processing; import io.fabric8.kubernetes.client.CustomResource; -import io.javaoperatorsdk.operator.api.RetryInfo; +import io.javaoperatorsdk.operator.api.reconciler.RetryInfo; import io.javaoperatorsdk.operator.processing.event.CustomResourceID; public class ExecutionScope> { diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/retry/RetryExecution.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/retry/RetryExecution.java index 9326d225d6..814a85b7d3 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/retry/RetryExecution.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/retry/RetryExecution.java @@ -2,7 +2,7 @@ import java.util.Optional; -import io.javaoperatorsdk.operator.api.RetryInfo; +import io.javaoperatorsdk.operator.api.reconciler.RetryInfo; public interface RetryExecution extends RetryInfo { diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/ControllerManagerTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/ControllerManagerTest.java index 2faa90a295..0b214b88d4 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/ControllerManagerTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/ControllerManagerTest.java @@ -4,7 +4,7 @@ import io.fabric8.kubernetes.client.CustomResource; import io.javaoperatorsdk.operator.Operator.ControllerManager; -import io.javaoperatorsdk.operator.api.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.config.DefaultControllerConfiguration; import io.javaoperatorsdk.operator.processing.ConfiguredController; import io.javaoperatorsdk.operator.sample.simple.DuplicateCRController; diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/api/DeleteControlTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/api/DeleteControlTest.java index eb0fddd849..d86d4795b7 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/api/DeleteControlTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/api/DeleteControlTest.java @@ -1,5 +1,6 @@ package io.javaoperatorsdk.operator.api; +import io.javaoperatorsdk.operator.api.reconciler.DeleteControl; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/EventDispatcherTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/EventDispatcherTest.java index ea1cc92571..7ad3ce871d 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/EventDispatcherTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/EventDispatcherTest.java @@ -10,11 +10,11 @@ import io.fabric8.kubernetes.api.model.ObjectMeta; import io.fabric8.kubernetes.client.CustomResource; import io.javaoperatorsdk.operator.TestUtils; -import io.javaoperatorsdk.operator.api.Context; -import io.javaoperatorsdk.operator.api.DeleteControl; -import io.javaoperatorsdk.operator.api.Reconciler; -import io.javaoperatorsdk.operator.api.RetryInfo; -import io.javaoperatorsdk.operator.api.UpdateControl; +import io.javaoperatorsdk.operator.api.reconciler.Context; +import io.javaoperatorsdk.operator.api.reconciler.DeleteControl; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.RetryInfo; +import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; import io.javaoperatorsdk.operator.api.config.ConfigurationService; import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; import io.javaoperatorsdk.operator.api.monitoring.Metrics; diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceSelectorTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceSelectorTest.java index e57d1ce17f..538cb67d29 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceSelectorTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceSelectorTest.java @@ -22,10 +22,10 @@ import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient; import io.fabric8.kubernetes.client.server.mock.KubernetesMockServer; import io.javaoperatorsdk.operator.Operator; -import io.javaoperatorsdk.operator.api.Context; -import io.javaoperatorsdk.operator.api.Controller; -import io.javaoperatorsdk.operator.api.Reconciler; -import io.javaoperatorsdk.operator.api.UpdateControl; +import io.javaoperatorsdk.operator.api.reconciler.Context; +import io.javaoperatorsdk.operator.api.reconciler.Controller; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; import io.javaoperatorsdk.operator.api.config.ConfigurationService; import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; import io.javaoperatorsdk.operator.api.config.Version; diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/DuplicateCRController.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/DuplicateCRController.java index a00a619ac3..1106fc13ea 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/DuplicateCRController.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/DuplicateCRController.java @@ -1,9 +1,9 @@ package io.javaoperatorsdk.operator.sample.simple; -import io.javaoperatorsdk.operator.api.Context; -import io.javaoperatorsdk.operator.api.Controller; -import io.javaoperatorsdk.operator.api.Reconciler; -import io.javaoperatorsdk.operator.api.UpdateControl; +import io.javaoperatorsdk.operator.api.reconciler.Context; +import io.javaoperatorsdk.operator.api.reconciler.Controller; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; @Controller public class DuplicateCRController implements Reconciler { diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomReconciler.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomReconciler.java index 079c3fe1f2..21b137a2a5 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomReconciler.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomReconciler.java @@ -11,11 +11,11 @@ import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; import io.fabric8.kubernetes.client.CustomResource; import io.fabric8.kubernetes.client.KubernetesClient; -import io.javaoperatorsdk.operator.api.Context; -import io.javaoperatorsdk.operator.api.Controller; -import io.javaoperatorsdk.operator.api.DeleteControl; -import io.javaoperatorsdk.operator.api.Reconciler; -import io.javaoperatorsdk.operator.api.UpdateControl; +import io.javaoperatorsdk.operator.api.reconciler.Context; +import io.javaoperatorsdk.operator.api.reconciler.Controller; +import io.javaoperatorsdk.operator.api.reconciler.DeleteControl; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; @Controller(generationAwareEventProcessing = false) public class TestCustomReconciler implements Reconciler { diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomReconcilerV2.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomReconcilerV2.java index a5249bf600..12a0df5134 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomReconcilerV2.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomReconcilerV2.java @@ -1,9 +1,9 @@ package io.javaoperatorsdk.operator.sample.simple; -import io.javaoperatorsdk.operator.api.Context; -import io.javaoperatorsdk.operator.api.Controller; -import io.javaoperatorsdk.operator.api.Reconciler; -import io.javaoperatorsdk.operator.api.UpdateControl; +import io.javaoperatorsdk.operator.api.reconciler.Context; +import io.javaoperatorsdk.operator.api.reconciler.Controller; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; @Controller public class TestCustomReconcilerV2 implements Reconciler { diff --git a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java index eb71553ba5..0144b7d793 100644 --- a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java +++ b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java @@ -26,7 +26,7 @@ import io.fabric8.kubernetes.client.utils.KubernetesResourceUtil; import io.fabric8.kubernetes.client.utils.Utils; import io.javaoperatorsdk.operator.Operator; -import io.javaoperatorsdk.operator.api.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.config.BaseConfigurationService; import io.javaoperatorsdk.operator.api.config.ConfigurationService; import io.javaoperatorsdk.operator.api.config.Version; diff --git a/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/AnnotationConfiguration.java b/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/AnnotationConfiguration.java index eb8cbd0ef6..65a0c0fb51 100644 --- a/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/AnnotationConfiguration.java +++ b/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/AnnotationConfiguration.java @@ -5,8 +5,8 @@ import io.fabric8.kubernetes.client.CustomResource; import io.javaoperatorsdk.operator.ControllerUtils; -import io.javaoperatorsdk.operator.api.Controller; -import io.javaoperatorsdk.operator.api.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.Controller; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.config.ConfigurationService; import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; import io.javaoperatorsdk.operator.processing.event.internal.CustomResourceEventFilter; diff --git a/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/ControllerAnnotationProcessor.java b/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/ControllerAnnotationProcessor.java index 0c13c709f5..16cadbd3d3 100644 --- a/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/ControllerAnnotationProcessor.java +++ b/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/ControllerAnnotationProcessor.java @@ -16,14 +16,14 @@ import javax.lang.model.type.TypeMirror; import io.fabric8.kubernetes.client.CustomResource; -import io.javaoperatorsdk.operator.api.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import com.google.auto.service.AutoService; import com.squareup.javapoet.TypeName; import static io.javaoperatorsdk.operator.config.runtime.RuntimeControllerMetadata.CONTROLLERS_RESOURCE_PATH; -@SupportedAnnotationTypes("io.javaoperatorsdk.operator.api.Controller") +@SupportedAnnotationTypes("io.javaoperatorsdk.operator.api.controller.Controller") @SupportedSourceVersion(SourceVersion.RELEASE_11) @AutoService(Processor.class) public class ControllerAnnotationProcessor extends AbstractProcessor { diff --git a/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationService.java b/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationService.java index af63cf6093..004a614139 100644 --- a/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationService.java +++ b/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationService.java @@ -1,7 +1,7 @@ package io.javaoperatorsdk.operator.config.runtime; import io.fabric8.kubernetes.client.CustomResource; -import io.javaoperatorsdk.operator.api.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.config.BaseConfigurationService; import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; import io.javaoperatorsdk.operator.api.config.Utils; diff --git a/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/RuntimeControllerMetadata.java b/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/RuntimeControllerMetadata.java index 6a26d3c4ca..a3d738cd46 100644 --- a/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/RuntimeControllerMetadata.java +++ b/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/RuntimeControllerMetadata.java @@ -3,7 +3,7 @@ import java.util.Map; import io.fabric8.kubernetes.client.CustomResource; -import io.javaoperatorsdk.operator.api.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; @SuppressWarnings("rawtypes") public class RuntimeControllerMetadata { diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationServiceTest.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationServiceTest.java index 6964d31b8f..d848f11144 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationServiceTest.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationServiceTest.java @@ -12,10 +12,10 @@ import io.fabric8.kubernetes.model.annotation.Group; import io.fabric8.kubernetes.model.annotation.Version; import io.javaoperatorsdk.operator.ControllerUtils; -import io.javaoperatorsdk.operator.api.Context; -import io.javaoperatorsdk.operator.api.Controller; -import io.javaoperatorsdk.operator.api.Reconciler; -import io.javaoperatorsdk.operator.api.UpdateControl; +import io.javaoperatorsdk.operator.api.reconciler.Context; +import io.javaoperatorsdk.operator.api.reconciler.Controller; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/doubleupdate/DoubleUpdateTestCustomReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/doubleupdate/DoubleUpdateTestCustomReconciler.java index 849ba7b1ba..acecb31e14 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/doubleupdate/DoubleUpdateTestCustomReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/doubleupdate/DoubleUpdateTestCustomReconciler.java @@ -6,10 +6,10 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import io.javaoperatorsdk.operator.api.Context; -import io.javaoperatorsdk.operator.api.Controller; -import io.javaoperatorsdk.operator.api.Reconciler; -import io.javaoperatorsdk.operator.api.UpdateControl; +import io.javaoperatorsdk.operator.api.reconciler.Context; +import io.javaoperatorsdk.operator.api.reconciler.Controller; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; import io.javaoperatorsdk.operator.support.TestExecutionInfoProvider; @Controller diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/event/EventSourceTestCustomReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/event/EventSourceTestCustomReconciler.java index aaa9e1f526..e75500636f 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/event/EventSourceTestCustomReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/event/EventSourceTestCustomReconciler.java @@ -7,11 +7,11 @@ import io.fabric8.kubernetes.client.CustomResource; import io.javaoperatorsdk.operator.ControllerUtils; -import io.javaoperatorsdk.operator.api.Context; -import io.javaoperatorsdk.operator.api.Controller; -import io.javaoperatorsdk.operator.api.EventSourceInitializer; -import io.javaoperatorsdk.operator.api.Reconciler; -import io.javaoperatorsdk.operator.api.UpdateControl; +import io.javaoperatorsdk.operator.api.reconciler.Context; +import io.javaoperatorsdk.operator.api.reconciler.Controller; +import io.javaoperatorsdk.operator.api.reconciler.EventSourceInitializer; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; import io.javaoperatorsdk.operator.processing.event.EventSourceManager; import io.javaoperatorsdk.operator.processing.event.internal.TimerEventSource; import io.javaoperatorsdk.operator.support.TestExecutionInfoProvider; diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/informereventsource/InformerEventSourceTestCustomReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/informereventsource/InformerEventSourceTestCustomReconciler.java index 64c191b7ce..74dd74a541 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/informereventsource/InformerEventSourceTestCustomReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/informereventsource/InformerEventSourceTestCustomReconciler.java @@ -5,17 +5,17 @@ import io.fabric8.kubernetes.api.model.ConfigMap; import io.fabric8.kubernetes.client.KubernetesClient; -import io.javaoperatorsdk.operator.api.Context; -import io.javaoperatorsdk.operator.api.Controller; -import io.javaoperatorsdk.operator.api.EventSourceInitializer; -import io.javaoperatorsdk.operator.api.Reconciler; -import io.javaoperatorsdk.operator.api.UpdateControl; +import io.javaoperatorsdk.operator.api.reconciler.Context; +import io.javaoperatorsdk.operator.api.reconciler.Controller; +import io.javaoperatorsdk.operator.api.reconciler.EventSourceInitializer; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; import io.javaoperatorsdk.operator.junit.KubernetesClientAware; import io.javaoperatorsdk.operator.processing.event.EventSourceManager; import io.javaoperatorsdk.operator.processing.event.internal.InformerEventSource; import io.javaoperatorsdk.operator.processing.event.internal.Mappers; -import static io.javaoperatorsdk.operator.api.Controller.NO_FINALIZER; +import static io.javaoperatorsdk.operator.api.reconciler.Controller.NO_FINALIZER; /** * Copies the config map value from spec into status. The main purpose is to test and demonstrate diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/retry/RetryTestCustomReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/retry/RetryTestCustomReconciler.java index 872d9e9f3f..45d23a381b 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/retry/RetryTestCustomReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/retry/RetryTestCustomReconciler.java @@ -7,10 +7,10 @@ import io.fabric8.kubernetes.client.CustomResource; import io.javaoperatorsdk.operator.ControllerUtils; -import io.javaoperatorsdk.operator.api.Context; -import io.javaoperatorsdk.operator.api.Controller; -import io.javaoperatorsdk.operator.api.Reconciler; -import io.javaoperatorsdk.operator.api.UpdateControl; +import io.javaoperatorsdk.operator.api.reconciler.Context; +import io.javaoperatorsdk.operator.api.reconciler.Controller; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; import io.javaoperatorsdk.operator.support.TestExecutionInfoProvider; @Controller diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestReconciler.java index aa3e02b196..9751ec4dbb 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestReconciler.java @@ -13,11 +13,11 @@ import io.fabric8.kubernetes.client.CustomResource; import io.fabric8.kubernetes.client.KubernetesClient; import io.javaoperatorsdk.operator.ControllerUtils; -import io.javaoperatorsdk.operator.api.Context; -import io.javaoperatorsdk.operator.api.Controller; -import io.javaoperatorsdk.operator.api.DeleteControl; -import io.javaoperatorsdk.operator.api.Reconciler; -import io.javaoperatorsdk.operator.api.UpdateControl; +import io.javaoperatorsdk.operator.api.reconciler.Context; +import io.javaoperatorsdk.operator.api.reconciler.Controller; +import io.javaoperatorsdk.operator.api.reconciler.DeleteControl; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; import io.javaoperatorsdk.operator.junit.KubernetesClientAware; import io.javaoperatorsdk.operator.support.TestExecutionInfoProvider; diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/subresource/SubResourceTestCustomReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/subresource/SubResourceTestCustomReconciler.java index 033fdaafc4..42e0586195 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/subresource/SubResourceTestCustomReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/subresource/SubResourceTestCustomReconciler.java @@ -7,10 +7,10 @@ import io.fabric8.kubernetes.client.CustomResource; import io.javaoperatorsdk.operator.ControllerUtils; -import io.javaoperatorsdk.operator.api.Context; -import io.javaoperatorsdk.operator.api.Controller; -import io.javaoperatorsdk.operator.api.Reconciler; -import io.javaoperatorsdk.operator.api.UpdateControl; +import io.javaoperatorsdk.operator.api.reconciler.Context; +import io.javaoperatorsdk.operator.api.reconciler.Controller; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; import io.javaoperatorsdk.operator.support.TestExecutionInfoProvider; @Controller(generationAwareEventProcessing = false) diff --git a/operator-framework/src/test/resources/compile-fixtures/AbstractReconciler.java b/operator-framework/src/test/resources/compile-fixtures/AbstractReconciler.java index 527c8e9f90..6f351b845a 100644 --- a/operator-framework/src/test/resources/compile-fixtures/AbstractReconciler.java +++ b/operator-framework/src/test/resources/compile-fixtures/AbstractReconciler.java @@ -1,7 +1,7 @@ package io; import io.fabric8.kubernetes.client.CustomResource; -import io.javaoperatorsdk.operator.api.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import java.io.Serializable; diff --git a/operator-framework/src/test/resources/compile-fixtures/AdditionalReconcilerInterface.java b/operator-framework/src/test/resources/compile-fixtures/AdditionalReconcilerInterface.java index c8046e2f51..2579e31c56 100644 --- a/operator-framework/src/test/resources/compile-fixtures/AdditionalReconcilerInterface.java +++ b/operator-framework/src/test/resources/compile-fixtures/AdditionalReconcilerInterface.java @@ -1,7 +1,7 @@ package io; import io.fabric8.kubernetes.client.CustomResource; -import io.javaoperatorsdk.operator.api.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import java.io.Serializable; diff --git a/operator-framework/src/test/resources/compile-fixtures/MultilevelReconciler.java b/operator-framework/src/test/resources/compile-fixtures/MultilevelReconciler.java index aa181d8845..88e1944dd6 100644 --- a/operator-framework/src/test/resources/compile-fixtures/MultilevelReconciler.java +++ b/operator-framework/src/test/resources/compile-fixtures/MultilevelReconciler.java @@ -1,10 +1,10 @@ package io; import io.fabric8.kubernetes.client.CustomResource; -import io.javaoperatorsdk.operator.api.Context; -import io.javaoperatorsdk.operator.api.Controller; -import io.javaoperatorsdk.operator.api.DeleteControl; -import io.javaoperatorsdk.operator.api.UpdateControl; +import io.javaoperatorsdk.operator.api.reconciler.Context; +import io.javaoperatorsdk.operator.api.reconciler.Controller; +import io.javaoperatorsdk.operator.api.reconciler.DeleteControl; +import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; @Controller public class MultilevelReconciler extends diff --git a/operator-framework/src/test/resources/compile-fixtures/ReconcilerImplemented2Interfaces.java b/operator-framework/src/test/resources/compile-fixtures/ReconcilerImplemented2Interfaces.java index 4160da0a82..79dc59bfb8 100644 --- a/operator-framework/src/test/resources/compile-fixtures/ReconcilerImplemented2Interfaces.java +++ b/operator-framework/src/test/resources/compile-fixtures/ReconcilerImplemented2Interfaces.java @@ -1,11 +1,11 @@ package io; import io.fabric8.kubernetes.client.CustomResource; -import io.javaoperatorsdk.operator.api.Context; -import io.javaoperatorsdk.operator.api.Controller; -import io.javaoperatorsdk.operator.api.DeleteControl; -import io.javaoperatorsdk.operator.api.Reconciler; -import io.javaoperatorsdk.operator.api.UpdateControl; +import io.javaoperatorsdk.operator.api.reconciler.Context; +import io.javaoperatorsdk.operator.api.reconciler.Controller; +import io.javaoperatorsdk.operator.api.reconciler.DeleteControl; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; import java.io.Serializable; @Controller diff --git a/operator-framework/src/test/resources/compile-fixtures/ReconcilerImplementedIntermediateAbstractClass.java b/operator-framework/src/test/resources/compile-fixtures/ReconcilerImplementedIntermediateAbstractClass.java index a8fe67f532..cd01cde2e7 100644 --- a/operator-framework/src/test/resources/compile-fixtures/ReconcilerImplementedIntermediateAbstractClass.java +++ b/operator-framework/src/test/resources/compile-fixtures/ReconcilerImplementedIntermediateAbstractClass.java @@ -1,9 +1,9 @@ package io; -import io.javaoperatorsdk.operator.api.Context; -import io.javaoperatorsdk.operator.api.Controller; -import io.javaoperatorsdk.operator.api.DeleteControl; -import io.javaoperatorsdk.operator.api.UpdateControl; +import io.javaoperatorsdk.operator.api.reconciler.Context; +import io.javaoperatorsdk.operator.api.reconciler.Controller; +import io.javaoperatorsdk.operator.api.reconciler.DeleteControl; +import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; import java.io.Serializable; @Controller diff --git a/samples/common/src/main/java/io/javaoperatorsdk/operator/sample/CustomServiceController.java b/samples/common/src/main/java/io/javaoperatorsdk/operator/sample/CustomServiceController.java index daae8f76a2..fb2a0d5b48 100644 --- a/samples/common/src/main/java/io/javaoperatorsdk/operator/sample/CustomServiceController.java +++ b/samples/common/src/main/java/io/javaoperatorsdk/operator/sample/CustomServiceController.java @@ -10,11 +10,11 @@ import io.fabric8.kubernetes.api.model.ServiceSpec; import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; -import io.javaoperatorsdk.operator.api.Context; -import io.javaoperatorsdk.operator.api.Controller; -import io.javaoperatorsdk.operator.api.DeleteControl; -import io.javaoperatorsdk.operator.api.Reconciler; -import io.javaoperatorsdk.operator.api.UpdateControl; +import io.javaoperatorsdk.operator.api.reconciler.Context; +import io.javaoperatorsdk.operator.api.reconciler.Controller; +import io.javaoperatorsdk.operator.api.reconciler.DeleteControl; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; /** A very simple sample controller that creates a service with a label. */ @Controller 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 3432ed091b..f7102f69b8 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 @@ -6,7 +6,7 @@ import org.springframework.context.annotation.Configuration; import io.javaoperatorsdk.operator.Operator; -import io.javaoperatorsdk.operator.api.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.config.runtime.DefaultConfigurationService; @Configuration From 74920abe9b4605baa4f22aa80fea588773d86541 Mon Sep 17 00:00:00 2001 From: csviri Date: Tue, 2 Nov 2021 13:45:04 +0100 Subject: [PATCH 03/24] refactor: moving reconciler and related classes to separate package --- .../monitoring/micrometer/MicrometerMetrics.java | 2 +- .../io/javaoperatorsdk/operator/Operator.java | 2 +- .../api/config/ConfigurationService.java | 2 +- .../config/ConfigurationServiceOverrider.java | 2 +- .../processing/ConfiguredController.java | 6 +++--- .../operator/processing/EventDispatcher.java | 4 ++-- .../operator/processing/EventProcessor.java | 2 +- .../operator/ControllerManagerTest.java | 2 +- .../operator/api/DeleteControlTest.java | 3 ++- .../operator/processing/EventDispatcherTest.java | 6 +++--- .../internal/CustomResourceSelectorTest.java | 6 +++--- .../operator/junit/OperatorExtension.java | 2 +- .../config/runtime/AnnotationConfiguration.java | 4 ++-- .../runtime/ControllerAnnotationProcessor.java | 6 +++--- .../runtime/DefaultConfigurationService.java | 16 ++++++++-------- .../runtime/RuntimeControllerMetadata.java | 10 +++++----- .../runtime/DefaultConfigurationServiceTest.java | 16 ++++++++-------- 17 files changed, 46 insertions(+), 45 deletions(-) diff --git a/micrometer-support/src/main/java/io/javaoperatorsdk/operator/monitoring/micrometer/MicrometerMetrics.java b/micrometer-support/src/main/java/io/javaoperatorsdk/operator/monitoring/micrometer/MicrometerMetrics.java index 15f29929a9..19f4f78bf7 100644 --- a/micrometer-support/src/main/java/io/javaoperatorsdk/operator/monitoring/micrometer/MicrometerMetrics.java +++ b/micrometer-support/src/main/java/io/javaoperatorsdk/operator/monitoring/micrometer/MicrometerMetrics.java @@ -5,8 +5,8 @@ import java.util.List; import java.util.Map; -import io.javaoperatorsdk.operator.api.reconciler.RetryInfo; import io.javaoperatorsdk.operator.api.monitoring.Metrics; +import io.javaoperatorsdk.operator.api.reconciler.RetryInfo; import io.javaoperatorsdk.operator.processing.event.CustomResourceID; import io.javaoperatorsdk.operator.processing.event.Event; import io.micrometer.core.instrument.MeterRegistry; 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 fc7d88101c..d549fb6ab0 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 @@ -14,10 +14,10 @@ import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.Version; import io.javaoperatorsdk.operator.api.LifecycleAware; -import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.config.ConfigurationService; import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; import io.javaoperatorsdk.operator.api.config.ExecutorServiceManager; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.processing.ConfiguredController; @SuppressWarnings("rawtypes") diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationService.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationService.java index 556c002b33..24e0605955 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationService.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationService.java @@ -6,8 +6,8 @@ import io.fabric8.kubernetes.client.Config; import io.fabric8.kubernetes.client.CustomResource; -import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.monitoring.Metrics; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationServiceOverrider.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationServiceOverrider.java index e1298cae4b..3c223cd23f 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationServiceOverrider.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationServiceOverrider.java @@ -4,8 +4,8 @@ import io.fabric8.kubernetes.client.Config; import io.fabric8.kubernetes.client.CustomResource; -import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.monitoring.Metrics; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; public class ConfigurationServiceOverrider { private final ConfigurationService original; diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/ConfiguredController.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/ConfiguredController.java index 116baf7f32..fd2f3f6285 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/ConfiguredController.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/ConfiguredController.java @@ -11,14 +11,14 @@ import io.javaoperatorsdk.operator.CustomResourceUtils; import io.javaoperatorsdk.operator.MissingCRDException; import io.javaoperatorsdk.operator.OperatorException; +import io.javaoperatorsdk.operator.api.LifecycleAware; +import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; +import io.javaoperatorsdk.operator.api.monitoring.Metrics.ControllerExecution; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.api.reconciler.DeleteControl; import io.javaoperatorsdk.operator.api.reconciler.EventSourceInitializer; -import io.javaoperatorsdk.operator.api.LifecycleAware; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; -import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; -import io.javaoperatorsdk.operator.api.monitoring.Metrics.ControllerExecution; import io.javaoperatorsdk.operator.processing.event.DefaultEventSourceManager; import io.javaoperatorsdk.operator.processing.event.EventSourceManager; diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventDispatcher.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventDispatcher.java index 655afb1597..4ef515c926 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventDispatcher.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventDispatcher.java @@ -8,14 +8,14 @@ import io.fabric8.kubernetes.client.KubernetesClientException; import io.fabric8.kubernetes.client.dsl.MixedOperation; import io.fabric8.kubernetes.client.dsl.Resource; +import io.javaoperatorsdk.operator.api.ObservedGenerationAware; +import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.BaseControl; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.api.reconciler.DefaultContext; import io.javaoperatorsdk.operator.api.reconciler.DeleteControl; -import io.javaoperatorsdk.operator.api.ObservedGenerationAware; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; -import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; import static io.javaoperatorsdk.operator.processing.KubernetesResourceUtils.getName; import static io.javaoperatorsdk.operator.processing.KubernetesResourceUtils.getUID; diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventProcessor.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventProcessor.java index ee6832b7a2..f59844c6e7 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventProcessor.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventProcessor.java @@ -15,10 +15,10 @@ import io.fabric8.kubernetes.client.CustomResource; import io.javaoperatorsdk.operator.OperatorException; import io.javaoperatorsdk.operator.api.LifecycleAware; -import io.javaoperatorsdk.operator.api.reconciler.RetryInfo; import io.javaoperatorsdk.operator.api.config.ConfigurationService; import io.javaoperatorsdk.operator.api.config.ExecutorServiceManager; import io.javaoperatorsdk.operator.api.monitoring.Metrics; +import io.javaoperatorsdk.operator.api.reconciler.RetryInfo; import io.javaoperatorsdk.operator.processing.event.CustomResourceID; import io.javaoperatorsdk.operator.processing.event.DefaultEventSourceManager; import io.javaoperatorsdk.operator.processing.event.Event; diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/ControllerManagerTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/ControllerManagerTest.java index 0b214b88d4..5f33de65a7 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/ControllerManagerTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/ControllerManagerTest.java @@ -4,8 +4,8 @@ import io.fabric8.kubernetes.client.CustomResource; import io.javaoperatorsdk.operator.Operator.ControllerManager; -import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.config.DefaultControllerConfiguration; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.processing.ConfiguredController; import io.javaoperatorsdk.operator.sample.simple.DuplicateCRController; import io.javaoperatorsdk.operator.sample.simple.TestCustomReconciler; diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/api/DeleteControlTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/api/DeleteControlTest.java index d86d4795b7..9907c0405e 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/api/DeleteControlTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/api/DeleteControlTest.java @@ -1,9 +1,10 @@ package io.javaoperatorsdk.operator.api; -import io.javaoperatorsdk.operator.api.reconciler.DeleteControl; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import io.javaoperatorsdk.operator.api.reconciler.DeleteControl; + class DeleteControlTest { @Test diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/EventDispatcherTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/EventDispatcherTest.java index 7ad3ce871d..667d525994 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/EventDispatcherTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/EventDispatcherTest.java @@ -10,14 +10,14 @@ import io.fabric8.kubernetes.api.model.ObjectMeta; import io.fabric8.kubernetes.client.CustomResource; import io.javaoperatorsdk.operator.TestUtils; +import io.javaoperatorsdk.operator.api.config.ConfigurationService; +import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; +import io.javaoperatorsdk.operator.api.monitoring.Metrics; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.api.reconciler.DeleteControl; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.reconciler.RetryInfo; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; -import io.javaoperatorsdk.operator.api.config.ConfigurationService; -import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; -import io.javaoperatorsdk.operator.api.monitoring.Metrics; import io.javaoperatorsdk.operator.processing.EventDispatcher.CustomResourceFacade; import io.javaoperatorsdk.operator.sample.observedgeneration.ObservedGenCustomResource; import io.javaoperatorsdk.operator.sample.simple.TestCustomResource; diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceSelectorTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceSelectorTest.java index 538cb67d29..e72b07959e 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceSelectorTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceSelectorTest.java @@ -22,13 +22,13 @@ import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient; import io.fabric8.kubernetes.client.server.mock.KubernetesMockServer; import io.javaoperatorsdk.operator.Operator; +import io.javaoperatorsdk.operator.api.config.ConfigurationService; +import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; +import io.javaoperatorsdk.operator.api.config.Version; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.api.reconciler.Controller; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; -import io.javaoperatorsdk.operator.api.config.ConfigurationService; -import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; -import io.javaoperatorsdk.operator.api.config.Version; import io.javaoperatorsdk.operator.sample.simple.TestCustomResource; import static org.assertj.core.api.Assertions.assertThat; diff --git a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java index 0144b7d793..0d6e60d0fe 100644 --- a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java +++ b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java @@ -26,10 +26,10 @@ import io.fabric8.kubernetes.client.utils.KubernetesResourceUtil; import io.fabric8.kubernetes.client.utils.Utils; import io.javaoperatorsdk.operator.Operator; -import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.config.BaseConfigurationService; import io.javaoperatorsdk.operator.api.config.ConfigurationService; import io.javaoperatorsdk.operator.api.config.Version; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.processing.ConfiguredController; import io.javaoperatorsdk.operator.processing.retry.Retry; diff --git a/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/AnnotationConfiguration.java b/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/AnnotationConfiguration.java index 65a0c0fb51..00bbb888a9 100644 --- a/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/AnnotationConfiguration.java +++ b/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/AnnotationConfiguration.java @@ -5,10 +5,10 @@ import io.fabric8.kubernetes.client.CustomResource; import io.javaoperatorsdk.operator.ControllerUtils; -import io.javaoperatorsdk.operator.api.reconciler.Controller; -import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.config.ConfigurationService; import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; +import io.javaoperatorsdk.operator.api.reconciler.Controller; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.processing.event.internal.CustomResourceEventFilter; import io.javaoperatorsdk.operator.processing.event.internal.CustomResourceEventFilters; diff --git a/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/ControllerAnnotationProcessor.java b/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/ControllerAnnotationProcessor.java index 16cadbd3d3..58ca6381fe 100644 --- a/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/ControllerAnnotationProcessor.java +++ b/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/ControllerAnnotationProcessor.java @@ -21,9 +21,9 @@ import com.google.auto.service.AutoService; import com.squareup.javapoet.TypeName; -import static io.javaoperatorsdk.operator.config.runtime.RuntimeControllerMetadata.CONTROLLERS_RESOURCE_PATH; +import static io.javaoperatorsdk.operator.config.runtime.RuntimeControllerMetadata.RECONCILERS_RESOURCE_PATH; -@SupportedAnnotationTypes("io.javaoperatorsdk.operator.api.controller.Controller") +@SupportedAnnotationTypes("io.javaoperatorsdk.operator.api.reconciler.Controller") @SupportedSourceVersion(SourceVersion.RELEASE_11) @AutoService(Processor.class) public class ControllerAnnotationProcessor extends AbstractProcessor { @@ -35,7 +35,7 @@ public class ControllerAnnotationProcessor extends AbstractProcessor { public synchronized void init(ProcessingEnvironment processingEnv) { super.init(processingEnv); controllersResourceWriter = - new AccumulativeMappingWriter(CONTROLLERS_RESOURCE_PATH, processingEnv) + new AccumulativeMappingWriter(RECONCILERS_RESOURCE_PATH, processingEnv) .loadExistingMappings(); typeParameterResolver = initializeResolver(processingEnv); diff --git a/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationService.java b/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationService.java index 004a614139..a1e8fb2f01 100644 --- a/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationService.java +++ b/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationService.java @@ -1,10 +1,10 @@ package io.javaoperatorsdk.operator.config.runtime; import io.fabric8.kubernetes.client.CustomResource; -import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.config.BaseConfigurationService; import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; import io.javaoperatorsdk.operator.api.config.Utils; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; public class DefaultConfigurationService extends BaseConfigurationService { @@ -20,26 +20,26 @@ public static DefaultConfigurationService instance() { @Override public > ControllerConfiguration getConfigurationFor( - Reconciler controller) { - return getConfigurationFor(controller, true); + Reconciler reconciler) { + return getConfigurationFor(reconciler, true); } > ControllerConfiguration getConfigurationFor( - Reconciler controller, boolean createIfNeeded) { - var config = super.getConfigurationFor(controller); + Reconciler reconciler, boolean createIfNeeded) { + var config = super.getConfigurationFor(reconciler); if (config == null) { if (createIfNeeded) { // create the configuration on demand and register it - config = new AnnotationConfiguration<>(controller); + config = new AnnotationConfiguration<>(reconciler); register(config); getLogger().info( "Created configuration for controller {} with name {}", - controller.getClass().getName(), + reconciler.getClass().getName(), config.getName()); } } else { // check that we don't have a controller name collision - final var newControllerClassName = controller.getClass().getCanonicalName(); + final var newControllerClassName = reconciler.getClass().getCanonicalName(); if (!config.getAssociatedControllerClassName().equals(newControllerClassName)) { throwExceptionOnNameCollision(newControllerClassName, config); } diff --git a/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/RuntimeControllerMetadata.java b/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/RuntimeControllerMetadata.java index a3d738cd46..68ba58f1c1 100644 --- a/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/RuntimeControllerMetadata.java +++ b/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/RuntimeControllerMetadata.java @@ -8,24 +8,24 @@ @SuppressWarnings("rawtypes") public class RuntimeControllerMetadata { - public static final String CONTROLLERS_RESOURCE_PATH = "javaoperatorsdk/controllers"; + public static final String RECONCILERS_RESOURCE_PATH = "javaoperatorsdk/reconcilers"; private static final Map, Class> controllerToCustomResourceMappings; static { controllerToCustomResourceMappings = ClassMappingProvider.provide( - CONTROLLERS_RESOURCE_PATH, Reconciler.class, CustomResource.class); + RECONCILERS_RESOURCE_PATH, Reconciler.class, CustomResource.class); } static > Class getCustomResourceClass( - Reconciler controller) { + Reconciler reconciler) { final Class customResourceClass = - controllerToCustomResourceMappings.get(controller.getClass()); + controllerToCustomResourceMappings.get(reconciler.getClass()); if (customResourceClass == null) { throw new IllegalArgumentException( String.format( "No custom resource has been found for controller %s", - controller.getClass().getCanonicalName())); + reconciler.getClass().getCanonicalName())); } return (Class) customResourceClass; } diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationServiceTest.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationServiceTest.java index d848f11144..07045279ba 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationServiceTest.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationServiceTest.java @@ -74,9 +74,9 @@ void attemptingToRetrieveAnUnknownControllerShouldLogWarning() { @Test public void returnsValuesFromControllerAnnotationFinalizer() { - final var controller = new TestCustomReconciler(); + final var reconciler = new TestCustomReconciler(); final var configuration = - DefaultConfigurationService.instance().getConfigurationFor(controller); + DefaultConfigurationService.instance().getConfigurationFor(reconciler); assertEquals(CustomResource.getCRDName(TestCustomResource.class), configuration.getCRDName()); assertEquals( ControllerUtils.getDefaultFinalizerName(configuration.getCRDName()), @@ -87,15 +87,15 @@ public void returnsValuesFromControllerAnnotationFinalizer() { @Test public void returnCustomerFinalizerNameIfSet() { - final var controller = new TestCustomFinalizerController(); + final var reconciler = new TestCustomFinalizerReconciler(); final var configuration = - DefaultConfigurationService.instance().getConfigurationFor(controller); + DefaultConfigurationService.instance().getConfigurationFor(reconciler); assertEquals(CUSTOM_FINALIZER_NAME, configuration.getFinalizer()); } @Test public void supportsInnerClassCustomResources() { - final var controller = new TestCustomFinalizerController(); + final var controller = new TestCustomFinalizerReconciler(); assertDoesNotThrow( () -> { DefaultConfigurationService.instance() @@ -105,11 +105,11 @@ public void supportsInnerClassCustomResources() { } @Controller(finalizerName = CUSTOM_FINALIZER_NAME) - static class TestCustomFinalizerController - implements Reconciler { + static class TestCustomFinalizerReconciler + implements Reconciler { @Override - public UpdateControl createOrUpdateResources( + public UpdateControl createOrUpdateResources( InnerCustomResource resource, Context context) { return null; } From 3f92747ce09a437362822d8ae928e7fb67a7efaa Mon Sep 17 00:00:00 2001 From: csviri Date: Thu, 4 Nov 2021 14:35:43 +0100 Subject: [PATCH 04/24] refactor!: further renamings - ConfiguredController now feels more like an overall aggregate. Now centrally starts and stop some aggregated components. --- .../operator/ControllerUtils.java | 5 +- .../api/config/ControllerConfiguration.java | 2 +- .../reconciler/EventSourceInitializer.java | 7 +- .../processing/ConfiguredController.java | 59 ++++---- .../operator/processing/EventProcessor.java | 6 +- .../event/DefaultEventSourceManager.java | 124 ---------------- .../processing/event/EventSourceManager.java | 138 ++++++++++++++++-- .../processing/event/EventSourceRegistry.java | 26 ++++ .../operator/ControllerUtilsTest.java | 2 +- .../processing/EventProcessorTest.java | 22 +-- ...rTest.java => EventSourceManagerTest.java} | 40 +++-- .../internal/CustomResourceSelectorTest.java | 2 +- .../EventSourceTestCustomReconciler.java | 6 +- ...formerEventSourceTestCustomReconciler.java | 6 +- 14 files changed, 243 insertions(+), 202 deletions(-) delete mode 100644 operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/DefaultEventSourceManager.java create mode 100644 operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/EventSourceRegistry.java rename operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/{DefaultEventSourceManagerTest.java => EventSourceManagerTest.java} (62%) diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/ControllerUtils.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/ControllerUtils.java index 57d75cd291..6a92ddd755 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/ControllerUtils.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/ControllerUtils.java @@ -23,7 +23,6 @@ public static String getNameFor(Class controllerClass) { return name; } } - // otherwise, use the lower-cased full class name return getDefaultNameFor(controllerClass); } @@ -37,10 +36,10 @@ public static String getDefaultNameFor(Reconciler controller) { } public static String getDefaultNameFor(Class reconcilerClass) { - return getDefaultResourceReconcilerName(reconcilerClass.getSimpleName()); + return getDefaultReconcilerName(reconcilerClass.getSimpleName()); } - public static String getDefaultResourceReconcilerName(String rcControllerClassName) { + public static String getDefaultReconcilerName(String rcControllerClassName) { // if the name is fully qualified, extract the simple class name final var lastDot = rcControllerClassName.lastIndexOf('.'); if (lastDot > 0) { diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ControllerConfiguration.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ControllerConfiguration.java index c9d6453807..29560e5a63 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ControllerConfiguration.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ControllerConfiguration.java @@ -13,7 +13,7 @@ public interface ControllerConfiguration> { default String getName() { - return ControllerUtils.getDefaultResourceReconcilerName(getAssociatedControllerClassName()); + return ControllerUtils.getDefaultReconcilerName(getAssociatedControllerClassName()); } default String getCRDName() { diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/EventSourceInitializer.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/EventSourceInitializer.java index ed26b46ac1..f782b8bec7 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/EventSourceInitializer.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/EventSourceInitializer.java @@ -1,7 +1,7 @@ package io.javaoperatorsdk.operator.api.reconciler; import io.fabric8.kubernetes.client.CustomResource; -import io.javaoperatorsdk.operator.processing.event.EventSourceManager; +import io.javaoperatorsdk.operator.processing.event.EventSourceRegistry; public interface EventSourceInitializer> { @@ -9,8 +9,9 @@ public interface EventSourceInitializer> { * In this typically you might want to register event sources. But can access * CustomResourceEventSource, what might be handy for some edge cases. * - * @param eventSourceManager the {@link EventSourceManager} where event sources can be registered. + * @param eventSourceRegistry the {@link EventSourceRegistry} where event sources can be + * registered. */ - void prepareEventSources(EventSourceManager eventSourceManager); + void prepareEventSources(EventSourceRegistry eventSourceRegistry); } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/ConfiguredController.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/ConfiguredController.java index fd2f3f6285..9d3f9f5966 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/ConfiguredController.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/ConfiguredController.java @@ -19,15 +19,16 @@ import io.javaoperatorsdk.operator.api.reconciler.EventSourceInitializer; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; -import io.javaoperatorsdk.operator.processing.event.DefaultEventSourceManager; import io.javaoperatorsdk.operator.processing.event.EventSourceManager; +import io.javaoperatorsdk.operator.processing.event.EventSourceRegistry; public class ConfiguredController> implements Reconciler, LifecycleAware, EventSourceInitializer { private final Reconciler reconciler; private final ControllerConfiguration configuration; private final KubernetesClient kubernetesClient; - private DefaultEventSourceManager eventSourceManager; + private EventSourceManager eventSourceManager; + private EventProcessor eventProcessor; public ConfiguredController(Reconciler reconciler, ControllerConfiguration configuration, @@ -97,7 +98,7 @@ public UpdateControl execute() { } @Override - public void prepareEventSources(EventSourceManager eventSourceManager) { + public void prepareEventSources(EventSourceRegistry eventSourceRegistry) { throw new UnsupportedOperationException("This method should never be called directly"); } @@ -153,35 +154,40 @@ public void start() throws OperatorException { final String controllerName = configuration.getName(); final var crdName = configuration.getCRDName(); final var specVersion = "v1"; - - // check that the custom resource is known by the cluster if configured that way - final CustomResourceDefinition crd; // todo: check proper CRD spec version based on config - if (configuration.getConfigurationService().checkCRDAndValidateLocalModel()) { - crd = - kubernetesClient.apiextensions().v1().customResourceDefinitions().withName(crdName).get(); - if (crd == null) { - throwMissingCRDException(crdName, specVersion, controllerName); + try { + // check that the custom resource is known by the cluster if configured that way + final CustomResourceDefinition crd; // todo: check proper CRD spec version based on config + if (configuration.getConfigurationService().checkCRDAndValidateLocalModel()) { + crd = + kubernetesClient.apiextensions().v1().customResourceDefinitions().withName(crdName) + .get(); + if (crd == null) { + throwMissingCRDException(crdName, specVersion, controllerName); + } + + // Apply validations that are not handled by fabric8 + CustomResourceUtils.assertCustomResource(resClass, crd); } - // Apply validations that are not handled by fabric8 - CustomResourceUtils.assertCustomResource(resClass, crd); - } - - try { - eventSourceManager = new DefaultEventSourceManager<>(this); + eventSourceManager = new EventSourceManager<>(this); + eventProcessor = + new EventProcessor<>(this, eventSourceManager.getCustomResourceEventSource()); + eventProcessor.setEventSourceManager(eventSourceManager); + eventSourceManager.setEventProcessor(eventProcessor); if (reconciler instanceof EventSourceInitializer) { ((EventSourceInitializer) reconciler).prepareEventSources(eventSourceManager); } + if (failOnMissingCurrentNS()) { + throw new OperatorException( + "Controller '" + + controllerName + + "' is configured to watch the current namespace but it couldn't be inferred from the current configuration."); + } + eventProcessor.start(); + eventSourceManager.start(); } catch (MissingCRDException e) { throwMissingCRDException(crdName, specVersion, controllerName); } - - if (failOnMissingCurrentNS()) { - throw new OperatorException( - "Controller '" - + controllerName - + "' is configured to watch the current namespace but it couldn't be inferred from the current configuration."); - } } private void throwMissingCRDException(String crdName, String specVersion, String controllerName) { @@ -213,7 +219,7 @@ private boolean failOnMissingCurrentNS() { return false; } - public EventSourceManager getEventSourceManager() { + public EventSourceRegistry getEventSourceManager() { return eventSourceManager; } @@ -221,5 +227,8 @@ public void stop() { if (eventSourceManager != null) { eventSourceManager.stop(); } + if (eventProcessor != null) { + eventProcessor.stop(); + } } } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventProcessor.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventProcessor.java index f59844c6e7..01245ea7b7 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventProcessor.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventProcessor.java @@ -20,9 +20,9 @@ import io.javaoperatorsdk.operator.api.monitoring.Metrics; import io.javaoperatorsdk.operator.api.reconciler.RetryInfo; import io.javaoperatorsdk.operator.processing.event.CustomResourceID; -import io.javaoperatorsdk.operator.processing.event.DefaultEventSourceManager; import io.javaoperatorsdk.operator.processing.event.Event; import io.javaoperatorsdk.operator.processing.event.EventHandler; +import io.javaoperatorsdk.operator.processing.event.EventSourceManager; import io.javaoperatorsdk.operator.processing.event.internal.CustomResourceEvent; import io.javaoperatorsdk.operator.processing.event.internal.ResourceAction; import io.javaoperatorsdk.operator.processing.retry.GenericRetry; @@ -51,7 +51,7 @@ public class EventProcessor> private final Metrics metrics; private volatile boolean running; private final ResourceCache resourceCache; - private DefaultEventSourceManager eventSourceManager; + private EventSourceManager eventSourceManager; private final EventMarker eventMarker; public EventProcessor(ConfiguredController controller, ResourceCache resourceCache) { @@ -89,7 +89,7 @@ private EventProcessor(ResourceCache resourceCache, ExecutorService executor, this.eventMarker = eventMarker; } - public void setEventSourceManager(DefaultEventSourceManager eventSourceManager) { + public void setEventSourceManager(EventSourceManager eventSourceManager) { this.eventSourceManager = eventSourceManager; } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/DefaultEventSourceManager.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/DefaultEventSourceManager.java deleted file mode 100644 index 31c5419923..0000000000 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/DefaultEventSourceManager.java +++ /dev/null @@ -1,124 +0,0 @@ -package io.javaoperatorsdk.operator.processing.event; - -import java.util.Collections; -import java.util.HashSet; -import java.util.Objects; -import java.util.Set; -import java.util.concurrent.locks.ReentrantLock; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import io.fabric8.kubernetes.client.CustomResource; -import io.javaoperatorsdk.operator.MissingCRDException; -import io.javaoperatorsdk.operator.OperatorException; -import io.javaoperatorsdk.operator.api.LifecycleAware; -import io.javaoperatorsdk.operator.processing.ConfiguredController; -import io.javaoperatorsdk.operator.processing.EventProcessor; -import io.javaoperatorsdk.operator.processing.event.internal.CustomResourceEventSource; -import io.javaoperatorsdk.operator.processing.event.internal.TimerEventSource; - -public class DefaultEventSourceManager> - implements EventSourceManager, LifecycleAware { - - private static final Logger log = LoggerFactory.getLogger(DefaultEventSourceManager.class); - - private final ReentrantLock lock = new ReentrantLock(); - private final Set eventSources = Collections.synchronizedSet(new HashSet<>()); - private EventProcessor eventProcessor; - private TimerEventSource retryAndRescheduleTimerEventSource; - private CustomResourceEventSource customResourceEventSource; - - DefaultEventSourceManager(EventProcessor eventProcessor) { - init(eventProcessor); - } - - public DefaultEventSourceManager(ConfiguredController controller) { - customResourceEventSource = new CustomResourceEventSource<>(controller); - init(new EventProcessor<>(controller, customResourceEventSource)); - registerEventSource(customResourceEventSource); - } - - private void init(EventProcessor eventProcessor) { - this.eventProcessor = eventProcessor; - eventProcessor.setEventSourceManager(this); - - this.retryAndRescheduleTimerEventSource = new TimerEventSource<>(); - registerEventSource(retryAndRescheduleTimerEventSource); - } - - @Override - public void start() throws OperatorException { - eventProcessor.start(); - } - - @Override - public void stop() { - lock.lock(); - try { - try { - eventProcessor.stop(); - } catch (Exception e) { - log.warn("Error closing event handler", e); - } - log.debug("Closing event sources."); - for (var eventSource : eventSources) { - try { - eventSource.stop(); - } catch (Exception e) { - log.warn("Error closing {} -> {}", eventSource, e); - } - } - eventSources.clear(); - } finally { - lock.unlock(); - } - } - - @Override - public final void registerEventSource(EventSource eventSource) - throws OperatorException { - Objects.requireNonNull(eventSource, "EventSource must not be null"); - lock.lock(); - try { - eventSources.add(eventSource); - eventSource.setEventHandler(eventProcessor); - eventSource.start(); - } catch (Throwable e) { - if (e instanceof IllegalStateException || e instanceof MissingCRDException) { - // leave untouched - throw e; - } - throw new OperatorException( - "Couldn't register event source: " + eventSource.getClass().getName(), e); - } finally { - lock.unlock(); - } - } - - public void cleanupForCustomResource(CustomResourceID customResourceUid) { - lock.lock(); - try { - for (EventSource eventSource : this.eventSources) { - eventSource.cleanupForCustomResource(customResourceUid); - } - } finally { - lock.unlock(); - } - } - - public TimerEventSource getRetryAndRescheduleTimerEventSource() { - return retryAndRescheduleTimerEventSource; - } - - @Override - public Set getRegisteredEventSources() { - return Collections.unmodifiableSet(eventSources); - } - - @Override - public CustomResourceEventSource getCustomResourceEventSource() { - return customResourceEventSource; - } - -} diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/EventSourceManager.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/EventSourceManager.java index e06ab2e3d1..6d6ccb45d5 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/EventSourceManager.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/EventSourceManager.java @@ -1,26 +1,138 @@ package io.javaoperatorsdk.operator.processing.event; +import java.util.Collections; +import java.util.HashSet; +import java.util.Objects; import java.util.Set; +import java.util.concurrent.locks.ReentrantLock; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import io.fabric8.kubernetes.client.CustomResource; +import io.javaoperatorsdk.operator.MissingCRDException; import io.javaoperatorsdk.operator.OperatorException; +import io.javaoperatorsdk.operator.api.LifecycleAware; +import io.javaoperatorsdk.operator.processing.ConfiguredController; +import io.javaoperatorsdk.operator.processing.EventProcessor; import io.javaoperatorsdk.operator.processing.event.internal.CustomResourceEventSource; +import io.javaoperatorsdk.operator.processing.event.internal.TimerEventSource; + +public class EventSourceManager> + implements EventSourceRegistry, LifecycleAware { + + private static final Logger log = LoggerFactory.getLogger(EventSourceManager.class); + + private final ReentrantLock lock = new ReentrantLock(); + private final Set eventSources = Collections.synchronizedSet(new HashSet<>()); + private EventProcessor eventProcessor; + private TimerEventSource retryAndRescheduleTimerEventSource; + private CustomResourceEventSource customResourceEventSource; + + EventSourceManager() { + init(); + } + + public EventSourceManager(ConfiguredController controller) { + init(); + customResourceEventSource = new CustomResourceEventSource<>(controller); + registerEventSource(customResourceEventSource); + } + + private void init() { + this.retryAndRescheduleTimerEventSource = new TimerEventSource<>(); + registerEventSource(retryAndRescheduleTimerEventSource); + } + + public EventSourceManager setEventProcessor(EventProcessor eventProcessor) { + this.eventProcessor = eventProcessor; + if (customResourceEventSource != null) { + customResourceEventSource.setEventHandler(eventProcessor); + } + if (retryAndRescheduleTimerEventSource != null) { + retryAndRescheduleTimerEventSource.setEventHandler(eventProcessor); + } + return this; + } + + @Override + public void start() throws OperatorException { + lock.lock(); + try { + log.debug("Closing event sources."); + for (var eventSource : eventSources) { + try { + eventSource.start(); + } catch (Exception e) { + log.warn("Error closing {} -> {}", eventSource, e); + } + } + } finally { + lock.unlock(); + } + } + + @Override + public void stop() { + lock.lock(); + try { + log.debug("Closing event sources."); + for (var eventSource : eventSources) { + try { + eventSource.stop(); + } catch (Exception e) { + log.warn("Error closing {} -> {}", eventSource, e); + } + } + eventSources.clear(); + } finally { + lock.unlock(); + } + } + + @Override + public final void registerEventSource(EventSource eventSource) + throws OperatorException { + Objects.requireNonNull(eventSource, "EventSource must not be null"); + lock.lock(); + try { + eventSources.add(eventSource); + eventSource.setEventHandler(eventProcessor); + } catch (Throwable e) { + if (e instanceof IllegalStateException || e instanceof MissingCRDException) { + // leave untouched + throw e; + } + throw new OperatorException( + "Couldn't register event source: " + eventSource.getClass().getName(), e); + } finally { + lock.unlock(); + } + } -public interface EventSourceManager> { + public void cleanupForCustomResource(CustomResourceID customResourceUid) { + lock.lock(); + try { + for (EventSource eventSource : this.eventSources) { + eventSource.cleanupForCustomResource(customResourceUid); + } + } finally { + lock.unlock(); + } + } - /** - * Add the {@link EventSource} identified by the given name to the event manager. - * - * @param eventSource the {@link EventSource} to register - * @throws IllegalStateException if an {@link EventSource} with the same name is already - * registered. - * @throws OperatorException if an error occurred during the registration process - */ - void registerEventSource(EventSource eventSource) - throws IllegalStateException, OperatorException; + public TimerEventSource getRetryAndRescheduleTimerEventSource() { + return retryAndRescheduleTimerEventSource; + } - Set getRegisteredEventSources(); + @Override + public Set getRegisteredEventSources() { + return Collections.unmodifiableSet(eventSources); + } - CustomResourceEventSource getCustomResourceEventSource(); + @Override + public CustomResourceEventSource getCustomResourceEventSource() { + return customResourceEventSource; + } } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/EventSourceRegistry.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/EventSourceRegistry.java new file mode 100644 index 0000000000..95de04976e --- /dev/null +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/EventSourceRegistry.java @@ -0,0 +1,26 @@ +package io.javaoperatorsdk.operator.processing.event; + +import java.util.Set; + +import io.fabric8.kubernetes.client.CustomResource; +import io.javaoperatorsdk.operator.OperatorException; +import io.javaoperatorsdk.operator.processing.event.internal.CustomResourceEventSource; + +public interface EventSourceRegistry> { + + /** + * Add the {@link EventSource} identified by the given name to the event manager. + * + * @param eventSource the {@link EventSource} to register + * @throws IllegalStateException if an {@link EventSource} with the same name is already + * registered. + * @throws OperatorException if an error occurred during the registration process + */ + void registerEventSource(EventSource eventSource) + throws IllegalStateException, OperatorException; + + Set getRegisteredEventSources(); + + CustomResourceEventSource getCustomResourceEventSource(); + +} diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/ControllerUtilsTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/ControllerUtilsTest.java index 8c60a08f7d..b8db81c2e9 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/ControllerUtilsTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/ControllerUtilsTest.java @@ -12,7 +12,7 @@ class ControllerUtilsTest { void getDefaultResourceControllerName() { assertEquals( "testcustomreconciler", - ControllerUtils.getDefaultResourceReconcilerName( + ControllerUtils.getDefaultReconcilerName( TestCustomReconciler.class.getCanonicalName())); } } diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/EventProcessorTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/EventProcessorTest.java index d3ecc85664..b85f3a2051 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/EventProcessorTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/EventProcessorTest.java @@ -13,8 +13,8 @@ import io.fabric8.kubernetes.client.CustomResource; import io.javaoperatorsdk.operator.processing.event.CustomResourceID; -import io.javaoperatorsdk.operator.processing.event.DefaultEventSourceManager; import io.javaoperatorsdk.operator.processing.event.Event; +import io.javaoperatorsdk.operator.processing.event.EventSourceManager; import io.javaoperatorsdk.operator.processing.event.internal.CustomResourceEvent; import io.javaoperatorsdk.operator.processing.event.internal.CustomResourceEventSource; import io.javaoperatorsdk.operator.processing.event.internal.ResourceAction; @@ -37,8 +37,8 @@ class EventProcessorTest { public static final String TEST_NAMESPACE = "default-event-handler-test"; private EventMarker eventMarker = new EventMarker(); private EventDispatcher eventDispatcherMock = mock(EventDispatcher.class); - private DefaultEventSourceManager defaultEventSourceManagerMock = - mock(DefaultEventSourceManager.class); + private EventSourceManager eventSourceManagerMock = + mock(EventSourceManager.class); private ResourceCache resourceCacheMock = mock(ResourceCache.class); private TimerEventSource retryTimerEventSourceMock = mock(TimerEventSource.class); @@ -52,10 +52,10 @@ class EventProcessorTest { @BeforeEach public void setup() { - when(defaultEventSourceManagerMock.getRetryAndRescheduleTimerEventSource()) + when(eventSourceManagerMock.getRetryAndRescheduleTimerEventSource()) .thenReturn(retryTimerEventSourceMock); - eventProcessor.setEventSourceManager(defaultEventSourceManagerMock); - eventProcessorWithRetry.setEventSourceManager(defaultEventSourceManagerMock); + eventProcessor.setEventSourceManager(eventSourceManagerMock); + eventProcessorWithRetry.setEventSourceManager(eventSourceManagerMock); } @Test @@ -207,7 +207,7 @@ public void cleansUpWhenDeleteEventReceivedAndNoEventPresent() { eventProcessor.handleEvent(deleteEvent); - verify(defaultEventSourceManagerMock, times(1)) + verify(eventSourceManagerMock, times(1)) .cleanupForCustomResource(eq(deleteEvent.getRelatedCustomResourceID())); } @@ -221,7 +221,7 @@ public void cleansUpAfterExecutionIfOnlyDeleteEventMarkLeft() { eventProcessor.eventProcessingFinished(executionScope, PostExecutionControl.defaultDispatch()); - verify(defaultEventSourceManagerMock, times(1)) + verify(eventSourceManagerMock, times(1)) .cleanupForCustomResource(eq(crEvent.getRelatedCustomResourceID())); } @@ -234,7 +234,7 @@ public void whitelistNextEventIfTheCacheIsNotPropagatedAfterAnUpdate() { var mockCREventSource = mock(CustomResourceEventSource.class); eventMarker.markEventReceived(crID); when(resourceCacheMock.getCustomResource(eq(crID))).thenReturn(Optional.of(cr)); - when(defaultEventSourceManagerMock.getCustomResourceEventSource()) + when(eventSourceManagerMock.getCustomResourceEventSource()) .thenReturn(mockCREventSource); eventProcessor.eventProcessingFinished(new ExecutionScope(cr, null), @@ -254,7 +254,7 @@ public void dontWhitelistsEventWhenOtherChangeDuringExecution() { var mockCREventSource = mock(CustomResourceEventSource.class); eventMarker.markEventReceived(crID); when(resourceCacheMock.getCustomResource(eq(crID))).thenReturn(Optional.of(otherChangeCR)); - when(defaultEventSourceManagerMock.getCustomResourceEventSource()) + when(eventSourceManagerMock.getCustomResourceEventSource()) .thenReturn(mockCREventSource); eventProcessor.eventProcessingFinished(new ExecutionScope(cr, null), @@ -270,7 +270,7 @@ public void dontWhitelistsEventIfUpdatedEventInCache() { var mockCREventSource = mock(CustomResourceEventSource.class); eventMarker.markEventReceived(crID); when(resourceCacheMock.getCustomResource(eq(crID))).thenReturn(Optional.of(cr)); - when(defaultEventSourceManagerMock.getCustomResourceEventSource()) + when(eventSourceManagerMock.getCustomResourceEventSource()) .thenReturn(mockCREventSource); eventProcessor.eventProcessingFinished(new ExecutionScope(cr, null), diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/DefaultEventSourceManagerTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/EventSourceManagerTest.java similarity index 62% rename from operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/DefaultEventSourceManagerTest.java rename to operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/EventSourceManagerTest.java index 304d8a7461..76dc7e3411 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/DefaultEventSourceManagerTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/EventSourceManagerTest.java @@ -3,6 +3,7 @@ import java.io.IOException; import java.util.Set; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import io.fabric8.kubernetes.client.CustomResource; @@ -15,46 +16,63 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; -class DefaultEventSourceManagerTest { +class EventSourceManagerTest { private EventProcessor eventProcessorMock = mock(EventProcessor.class); - private DefaultEventSourceManager defaultEventSourceManager = - new DefaultEventSourceManager(eventProcessorMock); + private EventSourceManager eventSourceManager = + new EventSourceManager(); + + @BeforeEach + public void setup() { + eventSourceManager.setEventProcessor(eventProcessorMock); + } @Test public void registersEventSource() { EventSource eventSource = mock(EventSource.class); - defaultEventSourceManager.registerEventSource(eventSource); + eventSourceManager.registerEventSource(eventSource); Set registeredSources = - defaultEventSourceManager.getRegisteredEventSources(); + eventSourceManager.getRegisteredEventSources(); assertThat(registeredSources).hasSize(2); verify(eventSource, times(1)).setEventHandler(eq(eventProcessorMock)); - verify(eventSource, times(1)).start(); } @Test public void closeShouldCascadeToEventSources() throws IOException { EventSource eventSource = mock(EventSource.class); EventSource eventSource2 = mock(EventSource.class); - defaultEventSourceManager.registerEventSource(eventSource); - defaultEventSourceManager.registerEventSource(eventSource2); + eventSourceManager.registerEventSource(eventSource); + eventSourceManager.registerEventSource(eventSource2); - defaultEventSourceManager.stop(); + eventSourceManager.stop(); verify(eventSource, times(1)).stop(); verify(eventSource2, times(1)).stop(); } + @Test + public void startCascadesToEventSources() { + EventSource eventSource = mock(EventSource.class); + EventSource eventSource2 = mock(EventSource.class); + eventSourceManager.registerEventSource(eventSource); + eventSourceManager.registerEventSource(eventSource2); + + eventSourceManager.start(); + + verify(eventSource, times(1)).start(); + verify(eventSource2, times(1)).start(); + } + @Test public void deRegistersEventSources() { CustomResource customResource = TestUtils.testCustomResource(); EventSource eventSource = mock(EventSource.class); - defaultEventSourceManager.registerEventSource(eventSource); + eventSourceManager.registerEventSource(eventSource); - defaultEventSourceManager + eventSourceManager .cleanupForCustomResource(CustomResourceID.fromResource(customResource)); verify(eventSource, times(1)) diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceSelectorTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceSelectorTest.java index e72b07959e..144f43572a 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceSelectorTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceSelectorTest.java @@ -121,7 +121,7 @@ void resourceWatchedByLabel() { NAMESPACE)); await() - .atMost(325, TimeUnit.SECONDS) + .atMost(5, TimeUnit.SECONDS) .pollInterval(100, TimeUnit.MILLISECONDS) .until(() -> c1.get() == 1 && c1err.get() == 0); await() diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/event/EventSourceTestCustomReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/event/EventSourceTestCustomReconciler.java index e75500636f..8f7bc61314 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/event/EventSourceTestCustomReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/event/EventSourceTestCustomReconciler.java @@ -12,7 +12,7 @@ import io.javaoperatorsdk.operator.api.reconciler.EventSourceInitializer; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; -import io.javaoperatorsdk.operator.processing.event.EventSourceManager; +import io.javaoperatorsdk.operator.processing.event.EventSourceRegistry; import io.javaoperatorsdk.operator.processing.event.internal.TimerEventSource; import io.javaoperatorsdk.operator.support.TestExecutionInfoProvider; @@ -33,8 +33,8 @@ public class EventSourceTestCustomReconciler new TimerEventSource<>(); @Override - public void prepareEventSources(EventSourceManager eventSourceManager) { - eventSourceManager.registerEventSource(timerEventSource); + public void prepareEventSources(EventSourceRegistry eventSourceRegistry) { + eventSourceRegistry.registerEventSource(timerEventSource); } @Override diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/informereventsource/InformerEventSourceTestCustomReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/informereventsource/InformerEventSourceTestCustomReconciler.java index 74dd74a541..7821221a3a 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/informereventsource/InformerEventSourceTestCustomReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/informereventsource/InformerEventSourceTestCustomReconciler.java @@ -11,7 +11,7 @@ import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; import io.javaoperatorsdk.operator.junit.KubernetesClientAware; -import io.javaoperatorsdk.operator.processing.event.EventSourceManager; +import io.javaoperatorsdk.operator.processing.event.EventSourceRegistry; import io.javaoperatorsdk.operator.processing.event.internal.InformerEventSource; import io.javaoperatorsdk.operator.processing.event.internal.Mappers; @@ -36,10 +36,10 @@ public class InformerEventSourceTestCustomReconciler implements private InformerEventSource eventSource; @Override - public void prepareEventSources(EventSourceManager eventSourceManager) { + public void prepareEventSources(EventSourceRegistry eventSourceRegistry) { eventSource = new InformerEventSource<>(kubernetesClient, ConfigMap.class, Mappers.fromAnnotation(RELATED_RESOURCE_UID)); - eventSourceManager.registerEventSource(eventSource); + eventSourceRegistry.registerEventSource(eventSource); } @Override From fb586854d4bb45ddd67cd0490646dceecae733c7 Mon Sep 17 00:00:00 2001 From: csviri Date: Thu, 4 Nov 2021 15:02:42 +0100 Subject: [PATCH 05/24] refactor!: renamed ConfiguredController to Controller --- .../io/javaoperatorsdk/operator/Operator.java | 22 +++++++++---------- ...figuredController.java => Controller.java} | 6 ++--- .../operator/processing/EventDispatcher.java | 6 ++--- .../operator/processing/EventProcessor.java | 2 +- .../processing/event/EventSourceManager.java | 4 ++-- .../internal/CustomResourceEventSource.java | 6 ++--- .../operator/ControllerManagerTest.java | 6 ++--- .../processing/EventDispatcherTest.java | 14 ++++++------ .../CustomResourceEventFilterTest.java | 20 ++++++++--------- .../CustomResourceEventSourceTest.java | 10 ++++----- .../operator/junit/OperatorExtension.java | 6 ++--- 11 files changed, 51 insertions(+), 51 deletions(-) rename operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/{ConfiguredController.java => Controller.java} (97%) 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 d549fb6ab0..4fd34b9700 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 @@ -18,7 +18,7 @@ import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; import io.javaoperatorsdk.operator.api.config.ExecutorServiceManager; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; -import io.javaoperatorsdk.operator.processing.ConfiguredController; +import io.javaoperatorsdk.operator.processing.Controller; @SuppressWarnings("rawtypes") public class Operator implements AutoCloseable, LifecycleAware { @@ -49,7 +49,7 @@ public ConfigurationService getConfigurationService() { return configurationService; } - public List getControllers() { + public List getControllers() { return new ArrayList<>(controllers.controllers.values()); } @@ -146,9 +146,9 @@ public void close() { if (configuration == null) { configuration = existing; } - final var configuredController = - new ConfiguredController<>(reconciler, configuration, kubernetesClient); - controllers.add(configuredController); + final var controller = + new Controller<>(reconciler, configuration, kubernetesClient); + controllers.add(controller); final var watchedNS = configuration.watchAllNamespaces() @@ -163,7 +163,7 @@ public void close() { } static class ControllerManager implements LifecycleAware { - private final Map controllers = new HashMap<>(); + private final Map controllers = new HashMap<>(); private boolean started = false; public synchronized void shouldStart() { @@ -176,7 +176,7 @@ public synchronized void shouldStart() { } public synchronized void start() { - controllers.values().parallelStream().forEach(ConfiguredController::start); + controllers.values().parallelStream().forEach(Controller::start); started = true; } @@ -193,8 +193,8 @@ public synchronized void stop() { started = false; } - public synchronized void add(ConfiguredController configuredController) { - final var configuration = configuredController.getConfiguration(); + public synchronized void add(Controller controller) { + final var configuration = controller.getConfiguration(); final var crdName = configuration.getCRDName(); final var existing = controllers.get(crdName); if (existing != null) { @@ -202,9 +202,9 @@ public synchronized void add(ConfiguredController configuredController) { + "': another controller named '" + existing.getConfiguration().getName() + "' is already registered for CRD '" + crdName + "'"); } - this.controllers.put(crdName, configuredController); + this.controllers.put(crdName, controller); if (started) { - configuredController.start(); + controller.start(); } } } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/ConfiguredController.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/Controller.java similarity index 97% rename from operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/ConfiguredController.java rename to operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/Controller.java index 9d3f9f5966..88497951da 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/ConfiguredController.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/Controller.java @@ -22,7 +22,7 @@ import io.javaoperatorsdk.operator.processing.event.EventSourceManager; import io.javaoperatorsdk.operator.processing.event.EventSourceRegistry; -public class ConfiguredController> implements Reconciler, +public class Controller> implements Reconciler, LifecycleAware, EventSourceInitializer { private final Reconciler reconciler; private final ControllerConfiguration configuration; @@ -30,7 +30,7 @@ public class ConfiguredController> implements Rec private EventSourceManager eventSourceManager; private EventProcessor eventProcessor; - public ConfiguredController(Reconciler reconciler, + public Controller(Reconciler reconciler, ControllerConfiguration configuration, KubernetesClient kubernetesClient) { this.reconciler = reconciler; @@ -111,7 +111,7 @@ public boolean equals(Object o) { return false; } - ConfiguredController that = (ConfiguredController) o; + Controller that = (Controller) o; return configuration.getName().equals(that.configuration.getName()); } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventDispatcher.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventDispatcher.java index 4ef515c926..e54251abbe 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventDispatcher.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventDispatcher.java @@ -28,16 +28,16 @@ public class EventDispatcher> { private static final Logger log = LoggerFactory.getLogger(EventDispatcher.class); - private final ConfiguredController controller; + private final Controller controller; private final CustomResourceFacade customResourceFacade; - EventDispatcher(ConfiguredController controller, + EventDispatcher(Controller controller, CustomResourceFacade customResourceFacade) { this.controller = controller; this.customResourceFacade = customResourceFacade; } - public EventDispatcher(ConfiguredController controller) { + public EventDispatcher(Controller controller) { this(controller, new CustomResourceFacade<>(controller.getCRClient())); } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventProcessor.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventProcessor.java index 01245ea7b7..49d3846a52 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventProcessor.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventProcessor.java @@ -54,7 +54,7 @@ public class EventProcessor> private EventSourceManager eventSourceManager; private final EventMarker eventMarker; - public EventProcessor(ConfiguredController controller, ResourceCache resourceCache) { + public EventProcessor(Controller controller, ResourceCache resourceCache) { this( resourceCache, ExecutorServiceManager.instance().executorService(), diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/EventSourceManager.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/EventSourceManager.java index 6d6ccb45d5..4bc6da2941 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/EventSourceManager.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/EventSourceManager.java @@ -13,7 +13,7 @@ import io.javaoperatorsdk.operator.MissingCRDException; import io.javaoperatorsdk.operator.OperatorException; import io.javaoperatorsdk.operator.api.LifecycleAware; -import io.javaoperatorsdk.operator.processing.ConfiguredController; +import io.javaoperatorsdk.operator.processing.Controller; import io.javaoperatorsdk.operator.processing.EventProcessor; import io.javaoperatorsdk.operator.processing.event.internal.CustomResourceEventSource; import io.javaoperatorsdk.operator.processing.event.internal.TimerEventSource; @@ -33,7 +33,7 @@ public class EventSourceManager> init(); } - public EventSourceManager(ConfiguredController controller) { + public EventSourceManager(Controller controller) { init(); customResourceEventSource = new CustomResourceEventSource<>(controller); registerEventSource(customResourceEventSource); diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceEventSource.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceEventSource.java index 8845c599c6..0a7684f767 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceEventSource.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceEventSource.java @@ -14,7 +14,7 @@ import io.javaoperatorsdk.operator.MissingCRDException; import io.javaoperatorsdk.operator.api.config.Cloner; import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; -import io.javaoperatorsdk.operator.processing.ConfiguredController; +import io.javaoperatorsdk.operator.processing.Controller; import io.javaoperatorsdk.operator.processing.MDCUtils; import io.javaoperatorsdk.operator.processing.ResourceCache; import io.javaoperatorsdk.operator.processing.event.AbstractEventSource; @@ -35,7 +35,7 @@ public class CustomResourceEventSource> extends A private static final Logger log = LoggerFactory.getLogger(CustomResourceEventSource.class); - private final ConfiguredController controller; + private final Controller controller; private final Map> sharedIndexInformers = new ConcurrentHashMap<>(); @@ -43,7 +43,7 @@ public class CustomResourceEventSource> extends A private final OnceWhitelistEventFilterEventFilter onceWhitelistEventFilterEventFilter; private final Cloner cloner; - public CustomResourceEventSource(ConfiguredController controller) { + public CustomResourceEventSource(Controller controller) { this.controller = controller; this.cloner = controller.getConfiguration().getConfigurationService().getResourceCloner(); diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/ControllerManagerTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/ControllerManagerTest.java index 5f33de65a7..6db84b45e3 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/ControllerManagerTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/ControllerManagerTest.java @@ -6,7 +6,7 @@ import io.javaoperatorsdk.operator.Operator.ControllerManager; import io.javaoperatorsdk.operator.api.config.DefaultControllerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; -import io.javaoperatorsdk.operator.processing.ConfiguredController; +import io.javaoperatorsdk.operator.processing.Controller; import io.javaoperatorsdk.operator.sample.simple.DuplicateCRController; import io.javaoperatorsdk.operator.sample.simple.TestCustomReconciler; import io.javaoperatorsdk.operator.sample.simple.TestCustomReconcilerV2; @@ -44,8 +44,8 @@ public void addingMultipleControllersForCustomResourcesWithDifferentVersionsShou TestControllerConfiguration duplicated) { final var exception = assertThrows(OperatorException.class, () -> { final var controllerManager = new ControllerManager(); - controllerManager.add(new ConfiguredController<>(registered.controller, registered, null)); - controllerManager.add(new ConfiguredController<>(duplicated.controller, duplicated, null)); + controllerManager.add(new Controller<>(registered.controller, registered, null)); + controllerManager.add(new Controller<>(duplicated.controller, duplicated, null)); }); final var msg = exception.getMessage(); assertTrue( diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/EventDispatcherTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/EventDispatcherTest.java index 667d525994..d62c08e894 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/EventDispatcherTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/EventDispatcherTest.java @@ -54,22 +54,22 @@ void setup() { } private > EventDispatcher init(R customResource, - Reconciler controller, ControllerConfiguration configuration, + Reconciler reconciler, ControllerConfiguration configuration, CustomResourceFacade customResourceFacade) { when(configuration.getFinalizer()).thenReturn(DEFAULT_FINALIZER); when(configuration.useFinalizer()).thenCallRealMethod(); when(configuration.getName()).thenReturn("EventDispatcherTestController"); when(configService.getMetrics()).thenReturn(Metrics.NOOP); when(configuration.getConfigurationService()).thenReturn(configService); - when(controller.createOrUpdateResources(eq(customResource), any())) + when(reconciler.createOrUpdateResources(eq(customResource), any())) .thenReturn(UpdateControl.updateCustomResource(customResource)); - when(controller.deleteResources(eq(customResource), any())) + when(reconciler.deleteResources(eq(customResource), any())) .thenReturn(DeleteControl.defaultDelete()); when(customResourceFacade.replaceWithLock(any())).thenReturn(null); - ConfiguredController configuredController = - new ConfiguredController<>(controller, configuration, null); + Controller controller = + new Controller<>(reconciler, configuration, null); - return new EventDispatcher<>(configuredController, customResourceFacade); + return new EventDispatcher<>(controller, customResourceFacade); } @Test @@ -168,7 +168,7 @@ private void configureToNotUseFinalizer() { when(configService.getMetrics()).thenReturn(Metrics.NOOP); when(configuration.getConfigurationService()).thenReturn(configService); when(configuration.useFinalizer()).thenReturn(false); - eventDispatcher = new EventDispatcher(new ConfiguredController(controller, configuration, null), + eventDispatcher = new EventDispatcher(new Controller(controller, configuration, null), customResourceFacade); } diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceEventFilterTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceEventFilterTest.java index 86081e4af1..119d683880 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceEventFilterTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceEventFilterTest.java @@ -15,7 +15,7 @@ import io.javaoperatorsdk.operator.api.config.ConfigurationService; import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; import io.javaoperatorsdk.operator.api.config.DefaultControllerConfiguration; -import io.javaoperatorsdk.operator.processing.ConfiguredController; +import io.javaoperatorsdk.operator.processing.Controller; import io.javaoperatorsdk.operator.processing.event.EventHandler; import io.javaoperatorsdk.operator.sample.observedgeneration.ObservedGenCustomResource; import io.javaoperatorsdk.operator.sample.simple.TestCustomResource; @@ -45,7 +45,7 @@ public void eventFilteredByCustomPredicate() { oldResource.getStatus().getConfigMapStatus(), newResource.getStatus().getConfigMapStatus())); - var controller = new TestConfiguredController(config); + var controller = new TestController(config); var eventSource = new CustomResourceEventSource<>(controller); eventSource.setEventHandler(eventHandler); @@ -73,7 +73,7 @@ public void eventFilteredByCustomPredicateAndGenerationAware() { oldResource.getStatus().getConfigMapStatus(), newResource.getStatus().getConfigMapStatus())); - var controller = new TestConfiguredController(config); + var controller = new TestController(config); var eventSource = new CustomResourceEventSource<>(controller); eventSource.setEventHandler(eventHandler); @@ -103,7 +103,7 @@ public void observedGenerationFiltering() { when(config.getConfigurationService().getResourceCloner()) .thenReturn(ConfigurationService.DEFAULT_CLONER); - var controller = new ObservedGenConfiguredController(config); + var controller = new ObservedGenController(config); var eventSource = new CustomResourceEventSource<>(controller); eventSource.setEventHandler(eventHandler); @@ -134,7 +134,7 @@ public void eventNotFilteredByCustomPredicateIfFinalizerIsRequired() { when(config.getConfigurationService().getResourceCloner()) .thenReturn(ConfigurationService.DEFAULT_CLONER); - var controller = new TestConfiguredController(config); + var controller = new TestController(config); var eventSource = new CustomResourceEventSource<>(controller); eventSource.setEventHandler(eventHandler); @@ -189,9 +189,9 @@ public ControllerConfig(String finalizer, boolean generationAware, } } - private static class TestConfiguredController extends ConfiguredController { + private static class TestController extends Controller { - public TestConfiguredController(ControllerConfiguration configuration) { + public TestController(ControllerConfiguration configuration) { super(null, configuration, null); } @@ -201,10 +201,10 @@ public MixedOperation { + private static class ObservedGenController + extends Controller { - public ObservedGenConfiguredController( + public ObservedGenController( ControllerConfiguration configuration) { super(null, configuration, null); } diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceEventSourceTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceEventSourceTest.java index b8e4381f3b..61a550a652 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceEventSourceTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceEventSourceTest.java @@ -13,7 +13,7 @@ import io.javaoperatorsdk.operator.api.config.ConfigurationService; import io.javaoperatorsdk.operator.api.config.DefaultControllerConfiguration; import io.javaoperatorsdk.operator.api.monitoring.Metrics; -import io.javaoperatorsdk.operator.processing.ConfiguredController; +import io.javaoperatorsdk.operator.processing.Controller; import io.javaoperatorsdk.operator.processing.event.CustomResourceID; import io.javaoperatorsdk.operator.processing.event.EventHandler; import io.javaoperatorsdk.operator.sample.simple.TestCustomResource; @@ -32,7 +32,7 @@ class CustomResourceEventSourceTest { EventHandler eventHandler = mock(EventHandler.class); private CustomResourceEventSource customResourceEventSource = - new CustomResourceEventSource<>(new TestConfiguredController(true)); + new CustomResourceEventSource<>(new TestController(true)); @BeforeEach public void setup() { @@ -89,7 +89,7 @@ public void normalExecutionIfGenerationChanges() { @Test public void handlesAllEventIfNotGenerationAware() { customResourceEventSource = - new CustomResourceEventSource<>(new TestConfiguredController(false)); + new CustomResourceEventSource<>(new TestController(false)); setup(); TestCustomResource customResource1 = TestUtils.testCustomResource(); @@ -136,9 +136,9 @@ public void notHandlesNextEventIfNotWhitelisted() { verify(eventHandler, times(0)).handleEvent(any()); } - private static class TestConfiguredController extends ConfiguredController { + private static class TestController extends Controller { - public TestConfiguredController(boolean generationAware) { + public TestController(boolean generationAware) { super(null, new TestConfiguration(generationAware), null); } diff --git a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java index 0d6e60d0fe..26c9850c48 100644 --- a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java +++ b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java @@ -30,7 +30,7 @@ import io.javaoperatorsdk.operator.api.config.ConfigurationService; import io.javaoperatorsdk.operator.api.config.Version; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; -import io.javaoperatorsdk.operator.processing.ConfiguredController; +import io.javaoperatorsdk.operator.processing.Controller; import io.javaoperatorsdk.operator.processing.retry.Retry; import static io.javaoperatorsdk.operator.api.config.ControllerConfigurationOverrider.override; @@ -108,14 +108,14 @@ public String getNamespace() { @SuppressWarnings({"rawtypes"}) public List getControllers() { return operator.getControllers().stream() - .map(ConfiguredController::getReconciler) + .map(Controller::getReconciler) .collect(Collectors.toUnmodifiableList()); } @SuppressWarnings({"rawtypes"}) public T getControllerOfType(Class type) { return operator.getControllers().stream() - .map(ConfiguredController::getReconciler) + .map(Controller::getReconciler) .filter(type::isInstance) .map(type::cast) .findFirst() From 444f7d10ee3d9e56fec1e45dd489d7984274cc29 Mon Sep 17 00:00:00 2001 From: csviri Date: Thu, 4 Nov 2021 15:36:10 +0100 Subject: [PATCH 06/24] fix: removed unused method --- .../io/javaoperatorsdk/operator/processing/Controller.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/Controller.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/Controller.java index 88497951da..1a9bc05f27 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/Controller.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/Controller.java @@ -219,10 +219,6 @@ private boolean failOnMissingCurrentNS() { return false; } - public EventSourceRegistry getEventSourceManager() { - return eventSourceManager; - } - public void stop() { if (eventSourceManager != null) { eventSourceManager.stop(); From 8b1be2445eb1395364a1b0a27149aaf25ab8b5a0 Mon Sep 17 00:00:00 2001 From: csviri Date: Fri, 5 Nov 2021 08:50:56 +0100 Subject: [PATCH 07/24] refactor: reconcile and cleanup --- .../io/javaoperatorsdk/operator/Operator.java | 6 +-- .../operator/api/reconciler/Reconciler.java | 4 +- .../operator/processing/Controller.java | 8 ++-- .../operator/processing/EventDispatcher.java | 6 +-- .../processing/EventDispatcherTest.java | 38 +++++++++---------- .../internal/CustomResourceSelectorTest.java | 6 +-- .../sample/simple/DuplicateCRController.java | 2 +- .../sample/simple/TestCustomReconciler.java | 4 +- .../sample/simple/TestCustomReconcilerV2.java | 2 +- .../operator/junit/OperatorExtension.java | 2 +- .../DefaultConfigurationServiceTest.java | 6 +-- .../DoubleUpdateTestCustomReconciler.java | 2 +- .../EventSourceTestCustomReconciler.java | 2 +- ...formerEventSourceTestCustomReconciler.java | 2 +- .../retry/RetryTestCustomReconciler.java | 2 +- .../sample/simple/TestReconciler.java | 4 +- .../SubResourceTestCustomReconciler.java | 2 +- .../MultilevelReconciler.java | 4 +- .../ReconcilerImplemented2Interfaces.java | 4 +- ...rImplementedIntermediateAbstractClass.java | 4 +- ...ller.java => CustomServiceReconciler.java} | 12 +++--- .../sample/PureJavaApplicationRunner.java | 2 +- .../operator/sample/Config.java | 6 +-- 23 files changed, 65 insertions(+), 65 deletions(-) rename samples/common/src/main/java/io/javaoperatorsdk/operator/sample/{CustomServiceController.java => CustomServiceReconciler.java} (85%) 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 4fd34b9700..405f4b6927 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 @@ -114,9 +114,9 @@ public void close() { * @param the {@code CustomResource} type associated with the controller * @throws OperatorException if a problem occurred during the registration process */ - public > void registerController(Reconciler controller) + public > void register(Reconciler controller) throws OperatorException { - registerController(controller, null); + register(controller, null); } /** @@ -132,7 +132,7 @@ public void close() { * @param the {@code CustomResource} type associated with the controller * @throws OperatorException if a problem occurred during the registration process */ - public > void registerController( + public > void register( Reconciler reconciler, ControllerConfiguration configuration) throws OperatorException { final var existing = configurationService.getConfigurationFor(reconciler); diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/Reconciler.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/Reconciler.java index 4f9eeef543..937969126f 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/Reconciler.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/Reconciler.java @@ -28,7 +28,7 @@ public interface Reconciler> { * finalizer to indicate that the resource should not be deleted after all, in which case * the controller should restore the resource's state appropriately. */ - default DeleteControl deleteResources(R resource, Context context) { + default DeleteControl cleanup(R resource, Context context) { return DeleteControl.defaultDelete(); } @@ -46,6 +46,6 @@ default DeleteControl deleteResources(R resource, Context context) { * be skipped. However we will always call an update if there is no finalizer on object * and it's not marked for deletion. */ - UpdateControl createOrUpdateResources(R resource, Context context); + UpdateControl reconcile(R resource, Context context); } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/Controller.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/Controller.java index 1a9bc05f27..cb0cef3b90 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/Controller.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/Controller.java @@ -39,7 +39,7 @@ public Controller(Reconciler reconciler, } @Override - public DeleteControl deleteResources(R resource, Context context) { + public DeleteControl cleanup(R resource, Context context) { return configuration.getConfigurationService().getMetrics().timeControllerExecution( new ControllerExecution<>() { @Override @@ -59,13 +59,13 @@ public String successTypeName(DeleteControl deleteControl) { @Override public DeleteControl execute() { - return reconciler.deleteResources(resource, context); + return reconciler.cleanup(resource, context); } }); } @Override - public UpdateControl createOrUpdateResources(R resource, Context context) { + public UpdateControl reconcile(R resource, Context context) { return configuration.getConfigurationService().getMetrics().timeControllerExecution( new ControllerExecution<>() { @Override @@ -92,7 +92,7 @@ public String successTypeName(UpdateControl result) { @Override public UpdateControl execute() { - return reconciler.createOrUpdateResources(resource, context); + return reconciler.reconcile(resource, context); } }); } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventDispatcher.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventDispatcher.java index e54251abbe..ba835bbd39 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventDispatcher.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventDispatcher.java @@ -85,7 +85,7 @@ private ControllerConfiguration configuration() { /** * Determines whether the given resource should be dispatched to the controller's - * {@link Reconciler#deleteResources(CustomResource, Context)} method + * {@link Reconciler#cleanup(CustomResource, Context)} method * * @param resource the resource to be potentially deleted * @return {@code true} if the resource should be handed to the controller's {@code @@ -115,7 +115,7 @@ private PostExecutionControl handleCreateOrUpdate( getVersion(resource), executionScope); - UpdateControl updateControl = controller.createOrUpdateResources(resource, context); + UpdateControl updateControl = controller.reconcile(resource, context); R updatedCustomResource = null; if (updateControl.isUpdateCustomResourceAndStatusSubResource()) { updatedCustomResource = updateCustomResource(updateControl.getCustomResource()); @@ -173,7 +173,7 @@ private PostExecutionControl handleDelete(R resource, Context context) { getName(resource), getVersion(resource)); - DeleteControl deleteControl = controller.deleteResources(resource, context); + DeleteControl deleteControl = controller.cleanup(resource, context); final var useFinalizer = configuration().useFinalizer(); if (useFinalizer) { // note that we don't reschedule here even if instructed. Removing finalizer means that diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/EventDispatcherTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/EventDispatcherTest.java index d62c08e894..54fabb34f4 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/EventDispatcherTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/EventDispatcherTest.java @@ -61,9 +61,9 @@ void setup() { when(configuration.getName()).thenReturn("EventDispatcherTestController"); when(configService.getMetrics()).thenReturn(Metrics.NOOP); when(configuration.getConfigurationService()).thenReturn(configService); - when(reconciler.createOrUpdateResources(eq(customResource), any())) + when(reconciler.reconcile(eq(customResource), any())) .thenReturn(UpdateControl.updateCustomResource(customResource)); - when(reconciler.deleteResources(eq(customResource), any())) + when(reconciler.cleanup(eq(customResource), any())) .thenReturn(DeleteControl.defaultDelete()); when(customResourceFacade.replaceWithLock(any())).thenReturn(null); Controller controller = @@ -77,7 +77,7 @@ void addFinalizerOnNewResource() { assertFalse(testCustomResource.hasFinalizer(DEFAULT_FINALIZER)); eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); verify(controller, never()) - .createOrUpdateResources(ArgumentMatchers.eq(testCustomResource), any()); + .reconcile(ArgumentMatchers.eq(testCustomResource), any()); verify(customResourceFacade, times(1)) .replaceWithLock( argThat(testCustomResource -> testCustomResource.hasFinalizer(DEFAULT_FINALIZER))); @@ -89,14 +89,14 @@ void callCreateOrUpdateOnNewResourceIfFinalizerSet() { testCustomResource.addFinalizer(DEFAULT_FINALIZER); eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); verify(controller, times(1)) - .createOrUpdateResources(ArgumentMatchers.eq(testCustomResource), any()); + .reconcile(ArgumentMatchers.eq(testCustomResource), any()); } @Test void updatesOnlyStatusSubResourceIfFinalizerSet() { testCustomResource.addFinalizer(DEFAULT_FINALIZER); - when(controller.createOrUpdateResources(eq(testCustomResource), any())) + when(controller.reconcile(eq(testCustomResource), any())) .thenReturn(UpdateControl.updateStatusSubResource(testCustomResource)); eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); @@ -109,7 +109,7 @@ void updatesOnlyStatusSubResourceIfFinalizerSet() { void updatesBothResourceAndStatusIfFinalizerSet() { testCustomResource.addFinalizer(DEFAULT_FINALIZER); - when(controller.createOrUpdateResources(eq(testCustomResource), any())) + when(controller.reconcile(eq(testCustomResource), any())) .thenReturn(UpdateControl.updateCustomResourceAndStatus(testCustomResource)); when(customResourceFacade.replaceWithLock(testCustomResource)).thenReturn(testCustomResource); @@ -125,7 +125,7 @@ void callCreateOrUpdateOnModifiedResourceIfFinalizerSet() { eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); verify(controller, times(1)) - .createOrUpdateResources(ArgumentMatchers.eq(testCustomResource), any()); + .reconcile(ArgumentMatchers.eq(testCustomResource), any()); } @Test @@ -136,7 +136,7 @@ void callsDeleteIfObjectHasFinalizerAndMarkedForDelete() { eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); - verify(controller, times(1)).deleteResources(eq(testCustomResource), any()); + verify(controller, times(1)).cleanup(eq(testCustomResource), any()); } /** @@ -149,7 +149,7 @@ void callDeleteOnControllerIfMarkedForDeletionWhenNoFinalizerIsConfigured() { eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); - verify(controller).deleteResources(eq(testCustomResource), any()); + verify(controller).cleanup(eq(testCustomResource), any()); } @Test @@ -158,7 +158,7 @@ void doNotCallDeleteIfMarkedForDeletionWhenFinalizerHasAlreadyBeenRemoved() { eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); - verify(controller, never()).deleteResources(eq(testCustomResource), any()); + verify(controller, never()).cleanup(eq(testCustomResource), any()); } private void configureToNotUseFinalizer() { @@ -196,7 +196,7 @@ void removesDefaultFinalizerOnDeleteIfSet() { void doesNotRemovesTheSetFinalizerIfTheDeleteNotMethodInstructsIt() { testCustomResource.addFinalizer(DEFAULT_FINALIZER); - when(controller.deleteResources(eq(testCustomResource), any())) + when(controller.cleanup(eq(testCustomResource), any())) .thenReturn(DeleteControl.noFinalizerRemoval()); markForDeletion(testCustomResource); @@ -210,7 +210,7 @@ void doesNotRemovesTheSetFinalizerIfTheDeleteNotMethodInstructsIt() { void doesNotUpdateTheResourceIfNoUpdateUpdateControlIfFinalizerSet() { testCustomResource.addFinalizer(DEFAULT_FINALIZER); - when(controller.createOrUpdateResources(eq(testCustomResource), any())) + when(controller.reconcile(eq(testCustomResource), any())) .thenReturn(UpdateControl.noUpdate()); eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); @@ -221,7 +221,7 @@ void doesNotUpdateTheResourceIfNoUpdateUpdateControlIfFinalizerSet() { @Test void addsFinalizerIfNotMarkedForDeletionAndEmptyCustomResourceReturned() { removeFinalizers(testCustomResource); - when(controller.createOrUpdateResources(eq(testCustomResource), any())) + when(controller.reconcile(eq(testCustomResource), any())) .thenReturn(UpdateControl.noUpdate()); eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); @@ -238,7 +238,7 @@ void doesNotCallDeleteIfMarkedForDeletionButNotOurFinalizer() { eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); verify(customResourceFacade, never()).replaceWithLock(any()); - verify(controller, never()).deleteResources(eq(testCustomResource), any()); + verify(controller, never()).cleanup(eq(testCustomResource), any()); } @Test @@ -247,7 +247,7 @@ void executeControllerRegardlessGenerationInNonGenerationAwareModeIfFinalizerSet eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); - verify(controller, times(2)).createOrUpdateResources(eq(testCustomResource), any()); + verify(controller, times(2)).reconcile(eq(testCustomResource), any()); } @Test @@ -272,7 +272,7 @@ public boolean isLastAttempt() { ArgumentCaptor contextArgumentCaptor = ArgumentCaptor.forClass(Context.class); verify(controller, times(1)) - .createOrUpdateResources(eq(testCustomResource), contextArgumentCaptor.capture()); + .reconcile(eq(testCustomResource), contextArgumentCaptor.capture()); Context context = contextArgumentCaptor.getValue(); final var retryInfo = context.getRetryInfo().get(); assertThat(retryInfo.getAttemptCount()).isEqualTo(2); @@ -283,7 +283,7 @@ public boolean isLastAttempt() { void setReScheduleToPostExecutionControlFromUpdateControl() { testCustomResource.addFinalizer(DEFAULT_FINALIZER); - when(controller.createOrUpdateResources(eq(testCustomResource), any())) + when(controller.reconcile(eq(testCustomResource), any())) .thenReturn( UpdateControl.updateStatusSubResource(testCustomResource).rescheduleAfter(1000L)); @@ -298,7 +298,7 @@ void reScheduleOnDeleteWithoutFinalizerRemoval() { testCustomResource.addFinalizer(DEFAULT_FINALIZER); markForDeletion(testCustomResource); - when(controller.deleteResources(eq(testCustomResource), any())) + when(controller.cleanup(eq(testCustomResource), any())) .thenReturn(DeleteControl.noFinalizerRemoval().rescheduleAfter(1000L)); PostExecutionControl control = @@ -318,7 +318,7 @@ void setObservedGenerationForStatusIfNeeded() { var lDispatcher = init(observedGenResource, lController, lConfiguration, lFacade); when(lConfiguration.isGenerationAware()).thenReturn(true); - when(lController.createOrUpdateResources(eq(observedGenResource), any())) + when(lController.reconcile(eq(observedGenResource), any())) .thenReturn(UpdateControl.updateStatusSubResource(observedGenResource)); when(lFacade.updateStatus(observedGenResource)).thenReturn(observedGenResource); diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceSelectorTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceSelectorTest.java index 144f43572a..15a8497fea 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceSelectorTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceSelectorTest.java @@ -90,7 +90,7 @@ void resourceWatchedByLabel() { AtomicInteger c2 = new AtomicInteger(); AtomicInteger c2err = new AtomicInteger(); - o1.registerController( + o1.register( new MyController( resource -> { if ("foo".equals(resource.getMetadata().getName())) { @@ -102,7 +102,7 @@ void resourceWatchedByLabel() { }), new MyConfiguration(configurationService, "app=foo")); o1.start(); - o2.registerController( + o2.register( new MyController( resource -> { if ("bar".equals(resource.getMetadata().getName())) { @@ -186,7 +186,7 @@ public MyController(Consumer consumer) { } @Override - public UpdateControl createOrUpdateResources( + public UpdateControl reconcile( TestCustomResource resource, Context context) { LOGGER.info("Received event on: {}", resource); diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/DuplicateCRController.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/DuplicateCRController.java index 1106fc13ea..4fe7bef465 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/DuplicateCRController.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/DuplicateCRController.java @@ -9,7 +9,7 @@ public class DuplicateCRController implements Reconciler { @Override - public UpdateControl createOrUpdateResources(TestCustomResource resource, + public UpdateControl reconcile(TestCustomResource resource, Context context) { return UpdateControl.noUpdate(); } diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomReconciler.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomReconciler.java index 21b137a2a5..76788d08b7 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomReconciler.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomReconciler.java @@ -38,7 +38,7 @@ public TestCustomReconciler(KubernetesClient kubernetesClient, boolean updateSta } @Override - public DeleteControl deleteResources( + public DeleteControl cleanup( TestCustomResource resource, Context context) { Boolean delete = kubernetesClient @@ -61,7 +61,7 @@ public DeleteControl deleteResources( } @Override - public UpdateControl createOrUpdateResources( + public UpdateControl reconcile( TestCustomResource resource, Context context) { if (!resource.getMetadata().getFinalizers().contains(FINALIZER_NAME)) { throw new IllegalStateException("Finalizer is not present."); diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomReconcilerV2.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomReconcilerV2.java index 12a0df5134..b7c41cfeda 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomReconcilerV2.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomReconcilerV2.java @@ -9,7 +9,7 @@ public class TestCustomReconcilerV2 implements Reconciler { @Override - public UpdateControl createOrUpdateResources(TestCustomResourceV2 resource, + public UpdateControl reconcile(TestCustomResourceV2 resource, Context context) { return UpdateControl.noUpdate(); } diff --git a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java index 26c9850c48..7833f723e1 100644 --- a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java +++ b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java @@ -176,7 +176,7 @@ protected void before(ExtensionContext context) { } - this.operator.registerController(ref.controller, oconfig.build()); + this.operator.register(ref.controller, oconfig.build()); } this.operator.start(); diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationServiceTest.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationServiceTest.java index 07045279ba..cb1c1e248a 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationServiceTest.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationServiceTest.java @@ -109,7 +109,7 @@ static class TestCustomFinalizerReconciler implements Reconciler { @Override - public UpdateControl createOrUpdateResources( + public UpdateControl reconcile( InnerCustomResource resource, Context context) { return null; } @@ -126,7 +126,7 @@ static class NotAutomaticallyCreated implements Reconciler { public static final String NAME = "should-be-logged"; @Override - public UpdateControl createOrUpdateResources( + public UpdateControl reconcile( TestCustomResource resource, Context context) { return null; } @@ -136,7 +136,7 @@ public UpdateControl createOrUpdateResources( static class TestCustomReconciler implements Reconciler { @Override - public UpdateControl createOrUpdateResources( + public UpdateControl reconcile( TestCustomResource resource, Context context) { return null; } diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/doubleupdate/DoubleUpdateTestCustomReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/doubleupdate/DoubleUpdateTestCustomReconciler.java index acecb31e14..f6484463a8 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/doubleupdate/DoubleUpdateTestCustomReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/doubleupdate/DoubleUpdateTestCustomReconciler.java @@ -23,7 +23,7 @@ public class DoubleUpdateTestCustomReconciler private final AtomicInteger numberOfExecutions = new AtomicInteger(0); @Override - public UpdateControl createOrUpdateResources( + public UpdateControl reconcile( DoubleUpdateTestCustomResource resource, Context context) { numberOfExecutions.addAndGet(1); diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/event/EventSourceTestCustomReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/event/EventSourceTestCustomReconciler.java index 5843b957b7..a5141a51f0 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/event/EventSourceTestCustomReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/event/EventSourceTestCustomReconciler.java @@ -32,7 +32,7 @@ public void prepareEventSources(EventSourceRegistry eventSourceRegistry) { } @Override - public UpdateControl createOrUpdateResources( + public UpdateControl reconcile( EventSourceTestCustomResource resource, Context context) { numberOfExecutions.addAndGet(1); diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/informereventsource/InformerEventSourceTestCustomReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/informereventsource/InformerEventSourceTestCustomReconciler.java index 7821221a3a..fb6d954de8 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/informereventsource/InformerEventSourceTestCustomReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/informereventsource/InformerEventSourceTestCustomReconciler.java @@ -43,7 +43,7 @@ public void prepareEventSources(EventSourceRegistry eventSourceRegistry) { } @Override - public UpdateControl createOrUpdateResources( + public UpdateControl reconcile( InformerEventSourceTestCustomResource resource, Context context) { diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/retry/RetryTestCustomReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/retry/RetryTestCustomReconciler.java index 45d23a381b..baa23c610e 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/retry/RetryTestCustomReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/retry/RetryTestCustomReconciler.java @@ -27,7 +27,7 @@ public class RetryTestCustomReconciler private final AtomicInteger numberOfExecutions = new AtomicInteger(0); @Override - public UpdateControl createOrUpdateResources( + public UpdateControl reconcile( RetryTestCustomResource resource, Context context) { numberOfExecutions.addAndGet(1); diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestReconciler.java index 9751ec4dbb..b042ec0291 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestReconciler.java @@ -62,7 +62,7 @@ public void setKubernetesClient(KubernetesClient kubernetesClient) { } @Override - public DeleteControl deleteResources( + public DeleteControl cleanup( TestCustomResource resource, Context context) { Boolean delete = kubernetesClient @@ -85,7 +85,7 @@ public DeleteControl deleteResources( } @Override - public UpdateControl createOrUpdateResources( + public UpdateControl reconcile( TestCustomResource resource, Context context) { numberOfExecutions.addAndGet(1); if (!resource.getMetadata().getFinalizers().contains(FINALIZER_NAME)) { diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/subresource/SubResourceTestCustomReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/subresource/SubResourceTestCustomReconciler.java index 42e0586195..54b21ae1ce 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/subresource/SubResourceTestCustomReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/subresource/SubResourceTestCustomReconciler.java @@ -25,7 +25,7 @@ public class SubResourceTestCustomReconciler private final AtomicInteger numberOfExecutions = new AtomicInteger(0); @Override - public UpdateControl createOrUpdateResources( + public UpdateControl reconcile( SubResourceTestCustomResource resource, Context context) { numberOfExecutions.addAndGet(1); if (!resource.getMetadata().getFinalizers().contains(FINALIZER_NAME)) { diff --git a/operator-framework/src/test/resources/compile-fixtures/MultilevelReconciler.java b/operator-framework/src/test/resources/compile-fixtures/MultilevelReconciler.java index 88e1944dd6..cf1dbcf45a 100644 --- a/operator-framework/src/test/resources/compile-fixtures/MultilevelReconciler.java +++ b/operator-framework/src/test/resources/compile-fixtures/MultilevelReconciler.java @@ -14,13 +14,13 @@ public static class MyCustomResource extends CustomResource { } - public UpdateControl createOrUpdateResources( + public UpdateControl reconcile( MultilevelReconciler.MyCustomResource customResource, Context context) { return UpdateControl.updateCustomResource(null); } - public DeleteControl deleteResources(MultilevelReconciler.MyCustomResource customResource, + public DeleteControl cleanup(MultilevelReconciler.MyCustomResource customResource, Context context) { return DeleteControl.defaultDelete(); } diff --git a/operator-framework/src/test/resources/compile-fixtures/ReconcilerImplemented2Interfaces.java b/operator-framework/src/test/resources/compile-fixtures/ReconcilerImplemented2Interfaces.java index 79dc59bfb8..4282a9dde8 100644 --- a/operator-framework/src/test/resources/compile-fixtures/ReconcilerImplemented2Interfaces.java +++ b/operator-framework/src/test/resources/compile-fixtures/ReconcilerImplemented2Interfaces.java @@ -15,12 +15,12 @@ public static class MyCustomResource extends CustomResource { } @Override - public UpdateControl createOrUpdateResources(MyCustomResource customResource, Context context) { + public UpdateControl reconcile(MyCustomResource customResource, Context context) { return UpdateControl.updateCustomResource(null); } @Override - public DeleteControl deleteResources(MyCustomResource customResource, Context context) { + public DeleteControl cleanup(MyCustomResource customResource, Context context) { return DeleteControl.defaultDelete(); } } diff --git a/operator-framework/src/test/resources/compile-fixtures/ReconcilerImplementedIntermediateAbstractClass.java b/operator-framework/src/test/resources/compile-fixtures/ReconcilerImplementedIntermediateAbstractClass.java index cd01cde2e7..03de32b523 100644 --- a/operator-framework/src/test/resources/compile-fixtures/ReconcilerImplementedIntermediateAbstractClass.java +++ b/operator-framework/src/test/resources/compile-fixtures/ReconcilerImplementedIntermediateAbstractClass.java @@ -10,13 +10,13 @@ public class ReconcilerImplementedIntermediateAbstractClass extends AbstractReconciler implements Serializable { - public UpdateControl createOrUpdateResources( + public UpdateControl reconcile( AbstractReconciler.MyCustomResource customResource, Context context) { return UpdateControl.updateCustomResource(null); } - public DeleteControl deleteResources(AbstractReconciler.MyCustomResource customResource, + public DeleteControl cleanup(AbstractReconciler.MyCustomResource customResource, Context context) { return DeleteControl.defaultDelete(); } diff --git a/samples/common/src/main/java/io/javaoperatorsdk/operator/sample/CustomServiceController.java b/samples/common/src/main/java/io/javaoperatorsdk/operator/sample/CustomServiceReconciler.java similarity index 85% rename from samples/common/src/main/java/io/javaoperatorsdk/operator/sample/CustomServiceController.java rename to samples/common/src/main/java/io/javaoperatorsdk/operator/sample/CustomServiceReconciler.java index fb2a0d5b48..d773e07f11 100644 --- a/samples/common/src/main/java/io/javaoperatorsdk/operator/sample/CustomServiceController.java +++ b/samples/common/src/main/java/io/javaoperatorsdk/operator/sample/CustomServiceReconciler.java @@ -18,29 +18,29 @@ /** A very simple sample controller that creates a service with a label. */ @Controller -public class CustomServiceController implements Reconciler { +public class CustomServiceReconciler implements Reconciler { public static final String KIND = "CustomService"; - private static final Logger log = LoggerFactory.getLogger(CustomServiceController.class); + private static final Logger log = LoggerFactory.getLogger(CustomServiceReconciler.class); private final KubernetesClient kubernetesClient; - public CustomServiceController() { + public CustomServiceReconciler() { this(new DefaultKubernetesClient()); } - public CustomServiceController(KubernetesClient kubernetesClient) { + public CustomServiceReconciler(KubernetesClient kubernetesClient) { this.kubernetesClient = kubernetesClient; } @Override - public DeleteControl deleteResources(CustomService resource, Context context) { + public DeleteControl cleanup(CustomService resource, Context context) { log.info("Execution deleteResource for: {}", resource.getMetadata().getName()); return DeleteControl.defaultDelete(); } @Override - public UpdateControl createOrUpdateResources( + public UpdateControl reconcile( CustomService resource, Context context) { log.info("Execution createOrUpdateResource for: {}", resource.getMetadata().getName()); 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 4c7ca515bd..2cc212340b 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 @@ -11,7 +11,7 @@ public static void main(String[] args) { new Operator(ConfigurationServiceOverrider.override(DefaultConfigurationService.instance()) .withConcurrentReconciliationThreads(2) .build()); - operator.registerController(new CustomServiceController()); + operator.register(new CustomServiceReconciler()); operator.start(); } } 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 f7102f69b8..07dd4b50c0 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 @@ -13,15 +13,15 @@ public class Config { @Bean - public CustomServiceController customServiceController() { - return new CustomServiceController(); + public CustomServiceReconciler customServiceController() { + return new CustomServiceReconciler(); } // Register all controller beans @Bean(initMethod = "start", destroyMethod = "stop") public Operator operator(List controllers) { Operator operator = new Operator(DefaultConfigurationService.instance()); - controllers.forEach(operator::registerController); + controllers.forEach(operator::register); return operator; } } From 424f80028a49b95600c1b05a2042dd419b83d8f4 Mon Sep 17 00:00:00 2001 From: csviri Date: Fri, 5 Nov 2021 09:11:00 +0100 Subject: [PATCH 08/24] refactor: EventDispatcher to ReconciliationDispatcher --- .../operator/processing/EventProcessor.java | 16 ++--- ...her.java => ReconciliationDispatcher.java} | 10 ++-- .../processing/EventProcessorTest.java | 34 ++++++----- ...java => ReconciliationDispatcherTest.java} | 58 ++++++++++--------- 4 files changed, 62 insertions(+), 56 deletions(-) rename operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/{EventDispatcher.java => ReconciliationDispatcher.java} (96%) rename operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/{EventDispatcherTest.java => ReconciliationDispatcherTest.java} (83%) diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventProcessor.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventProcessor.java index 49d3846a52..1fd8952ebf 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventProcessor.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventProcessor.java @@ -42,7 +42,7 @@ public class EventProcessor> private static final Logger log = LoggerFactory.getLogger(EventProcessor.class); private final Set underProcessing = new HashSet<>(); - private final EventDispatcher eventDispatcher; + private final ReconciliationDispatcher reconciliationDispatcher; private final Retry retry; private final Map retryState = new HashMap<>(); private final ExecutorService executor; @@ -59,21 +59,23 @@ public EventProcessor(Controller controller, ResourceCache resourceCache) resourceCache, ExecutorServiceManager.instance().executorService(), controller.getConfiguration().getName(), - new EventDispatcher<>(controller), + new ReconciliationDispatcher<>(controller), GenericRetry.fromConfiguration(controller.getConfiguration().getRetryConfiguration()), controller.getConfiguration().getConfigurationService().getMetrics(), new EventMarker()); } - EventProcessor(EventDispatcher eventDispatcher, ResourceCache resourceCache, + EventProcessor(ReconciliationDispatcher reconciliationDispatcher, + ResourceCache resourceCache, String relatedControllerName, Retry retry, EventMarker eventMarker) { - this(resourceCache, null, relatedControllerName, eventDispatcher, retry, null, eventMarker); + this(resourceCache, null, relatedControllerName, reconciliationDispatcher, retry, null, + eventMarker); } private EventProcessor(ResourceCache resourceCache, ExecutorService executor, String relatedControllerName, - EventDispatcher eventDispatcher, Retry retry, Metrics metrics, + ReconciliationDispatcher reconciliationDispatcher, Retry retry, Metrics metrics, EventMarker eventMarker) { this.running = true; this.executor = @@ -82,7 +84,7 @@ private EventProcessor(ResourceCache resourceCache, ExecutorService executor, ConfigurationService.DEFAULT_RECONCILIATION_THREADS_NUMBER) : executor; this.controllerName = relatedControllerName; - this.eventDispatcher = eventDispatcher; + this.reconciliationDispatcher = reconciliationDispatcher; this.retry = retry; this.resourceCache = resourceCache; this.metrics = metrics != null ? metrics : Metrics.NOOP; @@ -359,7 +361,7 @@ public void run() { MDCUtils.addCustomResourceInfo(executionScope.getCustomResource()); thread.setName("EventHandler-" + controllerName); PostExecutionControl postExecutionControl = - eventDispatcher.handleExecution(executionScope); + reconciliationDispatcher.handleExecution(executionScope); eventProcessingFinished(executionScope, postExecutionControl); } finally { // restore original name diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventDispatcher.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/ReconciliationDispatcher.java similarity index 96% rename from operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventDispatcher.java rename to operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/ReconciliationDispatcher.java index ba835bbd39..fa01bce577 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/EventDispatcher.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/ReconciliationDispatcher.java @@ -22,22 +22,22 @@ import static io.javaoperatorsdk.operator.processing.KubernetesResourceUtils.getVersion; /** - * Dispatches events to the Controller and handles Finalizers for a single type of Custom Resource. + * Handles calls and results of a Reconciler and finalizer related logic */ -public class EventDispatcher> { +public class ReconciliationDispatcher> { - private static final Logger log = LoggerFactory.getLogger(EventDispatcher.class); + private static final Logger log = LoggerFactory.getLogger(ReconciliationDispatcher.class); private final Controller controller; private final CustomResourceFacade customResourceFacade; - EventDispatcher(Controller controller, + ReconciliationDispatcher(Controller controller, CustomResourceFacade customResourceFacade) { this.controller = controller; this.customResourceFacade = customResourceFacade; } - public EventDispatcher(Controller controller) { + public ReconciliationDispatcher(Controller controller) { this(controller, new CustomResourceFacade<>(controller.getCRClient())); } diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/EventProcessorTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/EventProcessorTest.java index b85f3a2051..2c10a37ddc 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/EventProcessorTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/EventProcessorTest.java @@ -36,7 +36,8 @@ class EventProcessorTest { public static final int SEPARATE_EXECUTION_TIMEOUT = 450; public static final String TEST_NAMESPACE = "default-event-handler-test"; private EventMarker eventMarker = new EventMarker(); - private EventDispatcher eventDispatcherMock = mock(EventDispatcher.class); + private ReconciliationDispatcher reconciliationDispatcherMock = + mock(ReconciliationDispatcher.class); private EventSourceManager eventSourceManagerMock = mock(EventSourceManager.class); private ResourceCache resourceCacheMock = mock(ResourceCache.class); @@ -44,10 +45,11 @@ class EventProcessorTest { private TimerEventSource retryTimerEventSourceMock = mock(TimerEventSource.class); private EventProcessor eventProcessor = - new EventProcessor(eventDispatcherMock, resourceCacheMock, "Test", null, eventMarker); + new EventProcessor(reconciliationDispatcherMock, resourceCacheMock, "Test", null, + eventMarker); private EventProcessor eventProcessorWithRetry = - new EventProcessor(eventDispatcherMock, resourceCacheMock, "Test", + new EventProcessor(reconciliationDispatcherMock, resourceCacheMock, "Test", GenericRetry.defaultLimitedExponentialRetry(), eventMarker); @BeforeEach @@ -62,7 +64,7 @@ public void setup() { public void dispatchesEventsIfNoExecutionInProgress() { eventProcessor.handleEvent(prepareCREvent()); - verify(eventDispatcherMock, timeout(50).times(1)).handleExecution(any()); + verify(reconciliationDispatcherMock, timeout(50).times(1)).handleExecution(any()); } @Test @@ -73,7 +75,7 @@ public void skipProcessingIfLatestCustomResourceNotInCache() { eventProcessor.handleEvent(event); - verify(eventDispatcherMock, timeout(50).times(0)).handleExecution(any()); + verify(reconciliationDispatcherMock, timeout(50).times(0)).handleExecution(any()); } @Test @@ -82,7 +84,7 @@ public void ifExecutionInProgressWaitsUntilItsFinished() throws InterruptedExcep eventProcessor.handleEvent(nonCREvent(resourceUid)); - verify(eventDispatcherMock, timeout(SEPARATE_EXECUTION_TIMEOUT).times(1)) + verify(reconciliationDispatcherMock, timeout(SEPARATE_EXECUTION_TIMEOUT).times(1)) .handleExecution(any()); } @@ -108,7 +110,7 @@ public void executesTheControllerInstantlyAfterErrorIfNewEventsReceived() { PostExecutionControl postExecutionControl = PostExecutionControl.exceptionDuringExecution(new RuntimeException("test")); - when(eventDispatcherMock.handleExecution(any())) + when(reconciliationDispatcherMock.handleExecution(any())) .thenReturn(postExecutionControl) .thenReturn(PostExecutionControl.defaultDispatch()); @@ -119,7 +121,7 @@ public void executesTheControllerInstantlyAfterErrorIfNewEventsReceived() { ArgumentCaptor executionScopeArgumentCaptor = ArgumentCaptor.forClass(ExecutionScope.class); - verify(eventDispatcherMock, timeout(SEPARATE_EXECUTION_TIMEOUT).times(2)) + verify(reconciliationDispatcherMock, timeout(SEPARATE_EXECUTION_TIMEOUT).times(2)) .handleExecution(executionScopeArgumentCaptor.capture()); List allValues = executionScopeArgumentCaptor.getAllValues(); assertThat(allValues).hasSize(2); @@ -138,7 +140,7 @@ public void successfulExecutionResetsTheRetry() { PostExecutionControl.exceptionDuringExecution(new RuntimeException("test")); PostExecutionControl defaultDispatchControl = PostExecutionControl.defaultDispatch(); - when(eventDispatcherMock.handleExecution(any())) + when(reconciliationDispatcherMock.handleExecution(any())) .thenReturn(postExecutionControlWithException) .thenReturn(defaultDispatchControl); @@ -146,15 +148,15 @@ public void successfulExecutionResetsTheRetry() { ArgumentCaptor.forClass(ExecutionScope.class); eventProcessorWithRetry.handleEvent(event); - verify(eventDispatcherMock, timeout(SEPARATE_EXECUTION_TIMEOUT).times(1)) + verify(reconciliationDispatcherMock, timeout(SEPARATE_EXECUTION_TIMEOUT).times(1)) .handleExecution(any()); eventProcessorWithRetry.handleEvent(event); - verify(eventDispatcherMock, timeout(SEPARATE_EXECUTION_TIMEOUT).times(2)) + verify(reconciliationDispatcherMock, timeout(SEPARATE_EXECUTION_TIMEOUT).times(2)) .handleExecution(any()); eventProcessorWithRetry.handleEvent(event); - verify(eventDispatcherMock, timeout(SEPARATE_EXECUTION_TIMEOUT).times(3)) + verify(reconciliationDispatcherMock, timeout(SEPARATE_EXECUTION_TIMEOUT).times(3)) .handleExecution(executionScopeArgumentCaptor.capture()); log.info("Finished successfulExecutionResetsTheRetry"); @@ -170,7 +172,7 @@ public void successfulExecutionResetsTheRetry() { @Test public void scheduleTimedEventIfInstructedByPostExecutionControl() { var testDelay = 10000L; - when(eventDispatcherMock.handleExecution(any())) + when(reconciliationDispatcherMock.handleExecution(any())) .thenReturn(PostExecutionControl.defaultDispatch().withReSchedule(testDelay)); eventProcessor.handleEvent(prepareCREvent()); @@ -182,7 +184,7 @@ public void scheduleTimedEventIfInstructedByPostExecutionControl() { @Test public void reScheduleOnlyIfNotExecutedEventsReceivedMeanwhile() { var testDelay = 10000L; - when(eventDispatcherMock.handleExecution(any())) + when(reconciliationDispatcherMock.handleExecution(any())) .thenReturn(PostExecutionControl.defaultDispatch().withReSchedule(testDelay)); eventProcessor.handleEvent(prepareCREvent()); @@ -197,7 +199,7 @@ public void doNotFireEventsIfClosing() { eventProcessor.stop(); eventProcessor.handleEvent(prepareCREvent()); - verify(eventDispatcherMock, timeout(50).times(0)).handleExecution(any()); + verify(reconciliationDispatcherMock, timeout(50).times(0)).handleExecution(any()); } @Test @@ -291,7 +293,7 @@ public void cancelScheduleOnceEventsOnSuccessfulExecution() { } private CustomResourceID eventAlreadyUnderProcessing() { - when(eventDispatcherMock.handleExecution(any())) + when(reconciliationDispatcherMock.handleExecution(any())) .then( (Answer) invocationOnMock -> { Thread.sleep(FAKE_CONTROLLER_EXECUTION_DURATION); diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/EventDispatcherTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/ReconciliationDispatcherTest.java similarity index 83% rename from operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/EventDispatcherTest.java rename to operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/ReconciliationDispatcherTest.java index 54fabb34f4..05b4b68ff4 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/EventDispatcherTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/ReconciliationDispatcherTest.java @@ -18,7 +18,7 @@ import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.reconciler.RetryInfo; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; -import io.javaoperatorsdk.operator.processing.EventDispatcher.CustomResourceFacade; +import io.javaoperatorsdk.operator.processing.ReconciliationDispatcher.CustomResourceFacade; import io.javaoperatorsdk.operator.sample.observedgeneration.ObservedGenCustomResource; import io.javaoperatorsdk.operator.sample.simple.TestCustomResource; @@ -35,25 +35,26 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -class EventDispatcherTest { +class ReconciliationDispatcherTest { private static final String DEFAULT_FINALIZER = "javaoperatorsdk.io/finalizer"; private TestCustomResource testCustomResource; - private EventDispatcher eventDispatcher; + private ReconciliationDispatcher reconciliationDispatcher; private final Reconciler controller = mock(Reconciler.class); private final ControllerConfiguration configuration = mock(ControllerConfiguration.class); private final ConfigurationService configService = mock(ConfigurationService.class); private final CustomResourceFacade customResourceFacade = - mock(EventDispatcher.CustomResourceFacade.class); + mock(ReconciliationDispatcher.CustomResourceFacade.class); @BeforeEach void setup() { testCustomResource = TestUtils.testCustomResource(); - eventDispatcher = init(testCustomResource, controller, configuration, customResourceFacade); + reconciliationDispatcher = + init(testCustomResource, controller, configuration, customResourceFacade); } - private > EventDispatcher init(R customResource, + private > ReconciliationDispatcher init(R customResource, Reconciler reconciler, ControllerConfiguration configuration, CustomResourceFacade customResourceFacade) { when(configuration.getFinalizer()).thenReturn(DEFAULT_FINALIZER); @@ -69,13 +70,13 @@ void setup() { Controller controller = new Controller<>(reconciler, configuration, null); - return new EventDispatcher<>(controller, customResourceFacade); + return new ReconciliationDispatcher<>(controller, customResourceFacade); } @Test void addFinalizerOnNewResource() { assertFalse(testCustomResource.hasFinalizer(DEFAULT_FINALIZER)); - eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); + reconciliationDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); verify(controller, never()) .reconcile(ArgumentMatchers.eq(testCustomResource), any()); verify(customResourceFacade, times(1)) @@ -87,7 +88,7 @@ void addFinalizerOnNewResource() { @Test void callCreateOrUpdateOnNewResourceIfFinalizerSet() { testCustomResource.addFinalizer(DEFAULT_FINALIZER); - eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); + reconciliationDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); verify(controller, times(1)) .reconcile(ArgumentMatchers.eq(testCustomResource), any()); } @@ -99,7 +100,7 @@ void updatesOnlyStatusSubResourceIfFinalizerSet() { when(controller.reconcile(eq(testCustomResource), any())) .thenReturn(UpdateControl.updateStatusSubResource(testCustomResource)); - eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); + reconciliationDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); verify(customResourceFacade, times(1)).updateStatus(testCustomResource); verify(customResourceFacade, never()).replaceWithLock(any()); @@ -113,7 +114,7 @@ void updatesBothResourceAndStatusIfFinalizerSet() { .thenReturn(UpdateControl.updateCustomResourceAndStatus(testCustomResource)); when(customResourceFacade.replaceWithLock(testCustomResource)).thenReturn(testCustomResource); - eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); + reconciliationDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); verify(customResourceFacade, times(1)).replaceWithLock(testCustomResource); verify(customResourceFacade, times(1)).updateStatus(testCustomResource); @@ -123,7 +124,7 @@ void updatesBothResourceAndStatusIfFinalizerSet() { void callCreateOrUpdateOnModifiedResourceIfFinalizerSet() { testCustomResource.addFinalizer(DEFAULT_FINALIZER); - eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); + reconciliationDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); verify(controller, times(1)) .reconcile(ArgumentMatchers.eq(testCustomResource), any()); } @@ -134,7 +135,7 @@ void callsDeleteIfObjectHasFinalizerAndMarkedForDelete() { assertTrue(testCustomResource.addFinalizer(DEFAULT_FINALIZER)); markForDeletion(testCustomResource); - eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); + reconciliationDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); verify(controller, times(1)).cleanup(eq(testCustomResource), any()); } @@ -147,7 +148,7 @@ void callDeleteOnControllerIfMarkedForDeletionWhenNoFinalizerIsConfigured() { configureToNotUseFinalizer(); markForDeletion(testCustomResource); - eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); + reconciliationDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); verify(controller).cleanup(eq(testCustomResource), any()); } @@ -156,7 +157,7 @@ void callDeleteOnControllerIfMarkedForDeletionWhenNoFinalizerIsConfigured() { void doNotCallDeleteIfMarkedForDeletionWhenFinalizerHasAlreadyBeenRemoved() { markForDeletion(testCustomResource); - eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); + reconciliationDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); verify(controller, never()).cleanup(eq(testCustomResource), any()); } @@ -168,15 +169,16 @@ private void configureToNotUseFinalizer() { when(configService.getMetrics()).thenReturn(Metrics.NOOP); when(configuration.getConfigurationService()).thenReturn(configService); when(configuration.useFinalizer()).thenReturn(false); - eventDispatcher = new EventDispatcher(new Controller(controller, configuration, null), - customResourceFacade); + reconciliationDispatcher = + new ReconciliationDispatcher(new Controller(controller, configuration, null), + customResourceFacade); } @Test void doesNotAddFinalizerIfConfiguredNotTo() { configureToNotUseFinalizer(); - eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); + reconciliationDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); assertEquals(0, testCustomResource.getMetadata().getFinalizers().size()); } @@ -186,7 +188,7 @@ void removesDefaultFinalizerOnDeleteIfSet() { testCustomResource.addFinalizer(DEFAULT_FINALIZER); markForDeletion(testCustomResource); - eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); + reconciliationDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); assertEquals(0, testCustomResource.getMetadata().getFinalizers().size()); verify(customResourceFacade, times(1)).replaceWithLock(any()); @@ -200,7 +202,7 @@ void doesNotRemovesTheSetFinalizerIfTheDeleteNotMethodInstructsIt() { .thenReturn(DeleteControl.noFinalizerRemoval()); markForDeletion(testCustomResource); - eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); + reconciliationDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); assertEquals(1, testCustomResource.getMetadata().getFinalizers().size()); verify(customResourceFacade, never()).replaceWithLock(any()); @@ -213,7 +215,7 @@ void doesNotUpdateTheResourceIfNoUpdateUpdateControlIfFinalizerSet() { when(controller.reconcile(eq(testCustomResource), any())) .thenReturn(UpdateControl.noUpdate()); - eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); + reconciliationDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); verify(customResourceFacade, never()).replaceWithLock(any()); verify(customResourceFacade, never()).updateStatus(testCustomResource); } @@ -224,7 +226,7 @@ void addsFinalizerIfNotMarkedForDeletionAndEmptyCustomResourceReturned() { when(controller.reconcile(eq(testCustomResource), any())) .thenReturn(UpdateControl.noUpdate()); - eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); + reconciliationDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); assertEquals(1, testCustomResource.getMetadata().getFinalizers().size()); verify(customResourceFacade, times(1)).replaceWithLock(any()); @@ -235,7 +237,7 @@ void doesNotCallDeleteIfMarkedForDeletionButNotOurFinalizer() { removeFinalizers(testCustomResource); markForDeletion(testCustomResource); - eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); + reconciliationDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); verify(customResourceFacade, never()).replaceWithLock(any()); verify(controller, never()).cleanup(eq(testCustomResource), any()); @@ -244,8 +246,8 @@ void doesNotCallDeleteIfMarkedForDeletionButNotOurFinalizer() { @Test void executeControllerRegardlessGenerationInNonGenerationAwareModeIfFinalizerSet() { testCustomResource.addFinalizer(DEFAULT_FINALIZER); - eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); - eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); + reconciliationDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); + reconciliationDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); verify(controller, times(2)).reconcile(eq(testCustomResource), any()); } @@ -254,7 +256,7 @@ void executeControllerRegardlessGenerationInNonGenerationAwareModeIfFinalizerSet void propagatesRetryInfoToContextIfFinalizerSet() { testCustomResource.addFinalizer(DEFAULT_FINALIZER); - eventDispatcher.handleExecution( + reconciliationDispatcher.handleExecution( new ExecutionScope( testCustomResource, new RetryInfo() { @@ -288,7 +290,7 @@ void setReScheduleToPostExecutionControlFromUpdateControl() { UpdateControl.updateStatusSubResource(testCustomResource).rescheduleAfter(1000L)); PostExecutionControl control = - eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); + reconciliationDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); assertThat(control.getReScheduleDelay().get()).isEqualTo(1000L); } @@ -302,7 +304,7 @@ void reScheduleOnDeleteWithoutFinalizerRemoval() { .thenReturn(DeleteControl.noFinalizerRemoval().rescheduleAfter(1000L)); PostExecutionControl control = - eventDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); + reconciliationDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); assertThat(control.getReScheduleDelay().get()).isEqualTo(1000L); } From adc543a3c9cde519a824682ab6bfd88d559a0dfb Mon Sep 17 00:00:00 2001 From: csviri Date: Fri, 5 Nov 2021 10:00:41 +0100 Subject: [PATCH 09/24] refactor: associated controller to reconciler --- docs/etc/v1_model.drawio.svg | 4 ++++ docs/etc/v2_model.svg | 4 ++++ .../operator/api/config/AbstractConfigurationService.java | 4 ++-- .../operator/api/config/ControllerConfiguration.java | 4 ++-- .../operator/api/config/ControllerConfigurationOverrider.java | 2 +- .../operator/api/config/DefaultControllerConfiguration.java | 2 +- .../operator/api/config/ControllerConfigurationTest.java | 2 +- .../processing/event/internal/CustomResourceSelectorTest.java | 2 +- .../operator/config/runtime/AnnotationConfiguration.java | 2 +- .../operator/config/runtime/DefaultConfigurationService.java | 2 +- .../config/runtime/DefaultConfigurationServiceTest.java | 2 +- 11 files changed, 19 insertions(+), 11 deletions(-) create mode 100644 docs/etc/v1_model.drawio.svg create mode 100644 docs/etc/v2_model.svg diff --git a/docs/etc/v1_model.drawio.svg b/docs/etc/v1_model.drawio.svg new file mode 100644 index 0000000000..ad777770b9 --- /dev/null +++ b/docs/etc/v1_model.drawio.svg @@ -0,0 +1,4 @@ + + + +
Operator
Operator
ConfiguredController
ConfiguredController
DefaultEventSourceManager
DefaultEventSourceManager
DefaultEventHandler
DefaultEventHandler
EventDispatcher
EventDispatcher
ResourceController
ResourceController
EventSource
EventSource
EventHandler
EventHandler
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/docs/etc/v2_model.svg b/docs/etc/v2_model.svg new file mode 100644 index 0000000000..9670b7d747 --- /dev/null +++ b/docs/etc/v2_model.svg @@ -0,0 +1,4 @@ + + + +
Operator
Operator
Controller
Controller
EventSourceManager
EventSourceManager
EventProcessor
EventProcessor
EventSource
EventSource
ReconcilationDispatcher
ReconcilationDispatcher
Reconciler
Reconciler
1
1
1..*
1..*
1..*
1..*
Label
Label
1
1
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/AbstractConfigurationService.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/AbstractConfigurationService.java index 4424937d6e..b2eae5bbc2 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/AbstractConfigurationService.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/AbstractConfigurationService.java @@ -32,7 +32,7 @@ public AbstractConfigurationService(Version version) { if (failIfExisting) { final var existing = configurations.get(name); if (existing != null) { - throwExceptionOnNameCollision(config.getAssociatedControllerClassName(), existing); + throwExceptionOnNameCollision(config.getAssociatedReconcilerClassName(), existing); } } configurations.put(name, config); @@ -45,7 +45,7 @@ public AbstractConfigurationService(Version version) { "Controller name '" + existing.getName() + "' is used by both " - + existing.getAssociatedControllerClassName() + + existing.getAssociatedReconcilerClassName() + " and " + newControllerClassName); } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ControllerConfiguration.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ControllerConfiguration.java index 29560e5a63..852d9313ee 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ControllerConfiguration.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ControllerConfiguration.java @@ -13,7 +13,7 @@ public interface ControllerConfiguration> { default String getName() { - return ControllerUtils.getDefaultReconcilerName(getAssociatedControllerClassName()); + return ControllerUtils.getDefaultReconcilerName(getAssociatedReconcilerClassName()); } default String getCRDName() { @@ -45,7 +45,7 @@ default Class getCustomResourceClass() { return (Class) type.getActualTypeArguments()[0]; } - String getAssociatedControllerClassName(); + String getAssociatedReconcilerClassName(); default Set getNamespaces() { return Collections.emptySet(); diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ControllerConfigurationOverrider.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ControllerConfigurationOverrider.java index b9e4f9b7e6..006d707803 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ControllerConfigurationOverrider.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ControllerConfigurationOverrider.java @@ -76,7 +76,7 @@ public ControllerConfigurationOverrider withCustomResourcePredicate( public ControllerConfiguration build() { return new DefaultControllerConfiguration<>( - original.getAssociatedControllerClassName(), + original.getAssociatedReconcilerClassName(), original.getName(), original.getCRDName(), finalizer, diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/DefaultControllerConfiguration.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/DefaultControllerConfiguration.java index 672704f3c4..a0336eb92c 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/DefaultControllerConfiguration.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/DefaultControllerConfiguration.java @@ -75,7 +75,7 @@ public boolean isGenerationAware() { } @Override - public String getAssociatedControllerClassName() { + public String getAssociatedReconcilerClassName() { return associatedControllerClassName; } diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/api/config/ControllerConfigurationTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/api/config/ControllerConfigurationTest.java index 7e404e0223..7f8698d81b 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/api/config/ControllerConfigurationTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/api/config/ControllerConfigurationTest.java @@ -12,7 +12,7 @@ class ControllerConfigurationTest { void getCustomResourceClass() { final ControllerConfiguration conf = new ControllerConfiguration<>() { @Override - public String getAssociatedControllerClassName() { + public String getAssociatedReconcilerClassName() { return null; } diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceSelectorTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceSelectorTest.java index 15a8497fea..9d7befbabf 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceSelectorTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceSelectorTest.java @@ -161,7 +161,7 @@ public String getLabelSelector() { } @Override - public String getAssociatedControllerClassName() { + public String getAssociatedReconcilerClassName() { return MyController.class.getCanonicalName(); } diff --git a/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/AnnotationConfiguration.java b/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/AnnotationConfiguration.java index 00bbb888a9..8a8e100848 100644 --- a/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/AnnotationConfiguration.java +++ b/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/AnnotationConfiguration.java @@ -69,7 +69,7 @@ public void setConfigurationService(ConfigurationService service) { } @Override - public String getAssociatedControllerClassName() { + public String getAssociatedReconcilerClassName() { return controller.getClass().getCanonicalName(); } diff --git a/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationService.java b/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationService.java index a1e8fb2f01..bcd2ed2f59 100644 --- a/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationService.java +++ b/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationService.java @@ -40,7 +40,7 @@ public static DefaultConfigurationService instance() { } else { // check that we don't have a controller name collision final var newControllerClassName = reconciler.getClass().getCanonicalName(); - if (!config.getAssociatedControllerClassName().equals(newControllerClassName)) { + if (!config.getAssociatedReconcilerClassName().equals(newControllerClassName)) { throwExceptionOnNameCollision(newControllerClassName, config); } } diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationServiceTest.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationServiceTest.java index cb1c1e248a..e7314dbefc 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationServiceTest.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationServiceTest.java @@ -100,7 +100,7 @@ public void supportsInnerClassCustomResources() { () -> { DefaultConfigurationService.instance() .getConfigurationFor(controller) - .getAssociatedControllerClassName(); + .getAssociatedReconcilerClassName(); }); } From 1d148aca282ce25ac0acc6a38493eb2fae414bbd Mon Sep 17 00:00:00 2001 From: csviri Date: Mon, 8 Nov 2021 09:06:59 +0100 Subject: [PATCH 10/24] fix: drawio pic --- docs/etc/v1_model.drawio.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/etc/v1_model.drawio.svg b/docs/etc/v1_model.drawio.svg index ad777770b9..162e573db2 100644 --- a/docs/etc/v1_model.drawio.svg +++ b/docs/etc/v1_model.drawio.svg @@ -1,4 +1,4 @@ -
Operator
Operator
ConfiguredController
ConfiguredController
DefaultEventSourceManager
DefaultEventSourceManager
DefaultEventHandler
DefaultEventHandler
EventDispatcher
EventDispatcher
ResourceController
ResourceController
EventSource
EventSource
EventHandler
EventHandler
Viewer does not support full SVG 1.1
\ No newline at end of file +
Operator
Operator
ConfiguredController
ConfiguredController
DefaultEventSourceManager
DefaultEventSourceManager
DefaultEventHandler
DefaultEventHandler
EventDispatcher
EventDispatcher
ResourceController
ResourceController
EventSource
EventSource
EventHandler
EventHandler
1
1
1..*
1..*
1
1
1..*
1..*
Viewer does not support full SVG 1.1
\ No newline at end of file From 9ec347194970a1bb7cb093dd9d7c57bc5af55d86 Mon Sep 17 00:00:00 2001 From: csviri Date: Mon, 8 Nov 2021 10:12:16 +0100 Subject: [PATCH 11/24] refactor!: renaming @Controller to @ControllerAnnotation --- DECISION_LOG.md | 4 +- README.md | 4 +- docs/documentation/features.md | 10 ++--- docs/documentation/getting-started.md | 2 +- docs/documentation/use-samples.md | 2 +- .../operator/ControllerUtils.java | 6 +-- .../api/config/ControllerConfiguration.java | 7 ++-- ...ller.java => ControllerConfiguration.java} | 2 +- .../internal/CustomResourceSelectorTest.java | 9 +++-- .../sample/simple/DuplicateCRController.java | 4 +- .../sample/simple/TestCustomReconciler.java | 9 ++--- .../sample/simple/TestCustomReconcilerV2.java | 4 +- .../runtime/AnnotationConfiguration.java | 38 ++++++++++--------- .../ControllerAnnotationProcessor.java | 2 +- .../DefaultConfigurationServiceTest.java | 11 +++--- .../DoubleUpdateTestCustomReconciler.java | 4 +- .../EventSourceTestCustomReconciler.java | 9 ++--- ...formerEventSourceTestCustomReconciler.java | 6 +-- .../retry/RetryTestCustomReconciler.java | 4 +- .../sample/simple/TestReconciler.java | 9 ++--- .../SubResourceTestCustomReconciler.java | 4 +- .../MultilevelReconciler.java | 4 +- .../ReconcilerImplemented2Interfaces.java | 4 +- ...rImplementedIntermediateAbstractClass.java | 4 +- .../sample/CustomServiceReconciler.java | 9 ++--- 25 files changed, 82 insertions(+), 89 deletions(-) rename operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/{Controller.java => ControllerConfiguration.java} (98%) diff --git a/DECISION_LOG.md b/DECISION_LOG.md index a81ad81d3b..84a7341657 100644 --- a/DECISION_LOG.md +++ b/DECISION_LOG.md @@ -7,6 +7,6 @@ The original idea was to explicitly support retry in the scheduler. However, this turned out to complicate the algorithm in case of event sources. Mostly it would be harder to manage the buffer, and the other event sources, thus what -does it mean for other event sources that there was a failed controller execution? Probably it would be better to -manage this in an abstract controller, and just use the "reprocess event-source" source in case of an error. +does it mean for other event sources that there was a failed controllerConfiguration execution? Probably it would be better to +manage this in an abstract controllerConfiguration, and just use the "reprocess event-source" source in case of an error. diff --git a/README.md b/README.md index d42c45b7a0..62f78ec9f3 100644 --- a/README.md +++ b/README.md @@ -130,7 +130,7 @@ dependencies { ``` Once you've added the dependency, define a main method initializing the Operator and registering a -controller. +controllerConfiguration. ```java public class Runner { @@ -146,7 +146,7 @@ The Controller implements the business logic and describes all the classes neede ```java -@Controller +@ControllerConfiguration public class WebServerController implements ResourceController { // Return the changed resource, so it gets updated. See javadoc for details. diff --git a/docs/documentation/features.md b/docs/documentation/features.md index 9913529c58..8c9bbd2792 100644 --- a/docs/documentation/features.md +++ b/docs/documentation/features.md @@ -14,7 +14,7 @@ other configuration options are provided to fine tune or turn off these features ## Controller Execution in a Nutshell Controller execution is always triggered by an event. Events typically come from the custom resource -(i.e. custom resource is created, updated or deleted) that the controller is watching, but also from different sources +(i.e. custom resource is created, updated or deleted) that the controllerConfiguration is watching, but also from different sources (see event sources). When an event is received reconciliation is executed, unless there is already a reconciliation happening for a particular custom resource. In other words it is guaranteed by the framework that no concurrent reconciliation happens for a custom resource. @@ -24,7 +24,7 @@ i.e. [ResourceController](https://github.com/java-operator-sdk/java-operator-sdk called, a post-processing phase follows, where typically framework checks if: - an exception was thrown during execution, if yes schedules a retry. -- there are new events received during the controller execution, if yes schedule the execution again. +- there are new events received during the controllerConfiguration execution, if yes schedule the execution again. - there is an instruction to re-schedule the execution for the future, if yes schedule a timer event with the specified delay. - if none above, the reconciliation is finished. @@ -45,14 +45,14 @@ Finalizers are automatically added by the framework as the first step, thus when before the first reconciliation, the custom resource is updated via a Kubernetes API call. As a result of this update, the finalizer will be present. The subsequent event will be received, which will trigger the first reconciliation. -The finalizer that is automatically added will be also removed after the `deleteResource` is executed on the controller. +The finalizer that is automatically added will be also removed after the `deleteResource` is executed on the controllerConfiguration. However, the removal behavior can be further customized, and can be instructed to "not remove yet" - this is useful just in some specific corner cases, when there would be a long waiting period for some dependent resource cleanup. The name of the finalizers can be specified, in case it is not, a name will be generated. This behavior can be turned off, so when configured no finalizer will be added or removed. -See [`@Controller`](https://github.com/java-operator-sdk/java-operator-sdk/blob/master/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/Controller.java) +See [`@ControllerConfiguration`](https://github.com/java-operator-sdk/java-operator-sdk/blob/master/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/ControllerConfiguration.java) annotation for more details. ### When not to Use Finalizers? @@ -90,7 +90,7 @@ time. ## Contextual Info for Logging with MDC Logging is enhanced with additional contextual information using [MDC](http://www.slf4j.org/manual.html#mdc). -This following attributes are available in most parts of reconciliation logic and during the execution of the controller: +This following attributes are available in most parts of reconciliation logic and during the execution of the controllerConfiguration: | MDC Key | Value added from Custom Resource | | :--- | :--- | diff --git a/docs/documentation/getting-started.md b/docs/documentation/getting-started.md index 3ca64df871..2419670607 100644 --- a/docs/documentation/getting-started.md +++ b/docs/documentation/getting-started.md @@ -73,7 +73,7 @@ if the operator just gets restarted after it went down. ### At Least Once -To implement controller logic, we have to override two methods: `createOrUpdateResource` and `deleteResource`. +To implement controllerConfiguration logic, we have to override two methods: `createOrUpdateResource` and `deleteResource`. These methods are called if a resource is created/changed or marked for deletion. In most cases these methods will be called just once, but in some rare cases, it can happen that they are called more then once. In practice this means that the implementation needs to be **idempotent**. diff --git a/docs/documentation/use-samples.md b/docs/documentation/use-samples.md index a736aabe49..9db800a2df 100644 --- a/docs/documentation/use-samples.md +++ b/docs/documentation/use-samples.md @@ -44,7 +44,7 @@ dependencies { ``` Once you've added the dependency, define a main method initializing the Operator and registering a -controller. +controllerConfiguration. ```java public class Runner { diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/ControllerUtils.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/ControllerUtils.java index 6a92ddd755..cd3ca8f916 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/ControllerUtils.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/ControllerUtils.java @@ -2,7 +2,7 @@ import java.util.Locale; -import io.javaoperatorsdk.operator.api.reconciler.Controller; +import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; @SuppressWarnings("rawtypes") @@ -16,10 +16,10 @@ public static String getDefaultFinalizerName(String crdName) { public static String getNameFor(Class controllerClass) { // if the controller annotation has a name attribute, use it - final var annotation = controllerClass.getAnnotation(Controller.class); + final var annotation = controllerClass.getAnnotation(ControllerConfiguration.class); if (annotation != null) { final var name = annotation.name(); - if (!Controller.EMPTY_STRING.equals(name)) { + if (!ControllerConfiguration.EMPTY_STRING.equals(name)) { return name; } } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ControllerConfiguration.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ControllerConfiguration.java index 852d9313ee..70187b104c 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ControllerConfiguration.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ControllerConfiguration.java @@ -6,7 +6,6 @@ import io.fabric8.kubernetes.client.CustomResource; import io.javaoperatorsdk.operator.ControllerUtils; -import io.javaoperatorsdk.operator.api.reconciler.Controller; import io.javaoperatorsdk.operator.processing.event.internal.CustomResourceEventFilter; import io.javaoperatorsdk.operator.processing.event.internal.CustomResourceEventFilters; @@ -66,7 +65,8 @@ default boolean watchCurrentNamespace() { static boolean currentNamespaceWatched(Set namespaces) { return namespaces != null && namespaces.size() == 1 - && namespaces.contains(Controller.WATCH_CURRENT_NAMESPACE); + && namespaces.contains( + io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration.WATCH_CURRENT_NAMESPACE); } /** @@ -98,7 +98,8 @@ default RetryConfiguration getRetryConfiguration() { default void setConfigurationService(ConfigurationService service) {} default boolean useFinalizer() { - return !Controller.NO_FINALIZER.equals(getFinalizer()); + return !io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration.NO_FINALIZER + .equals(getFinalizer()); } /** diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/Controller.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/ControllerConfiguration.java similarity index 98% rename from operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/Controller.java rename to operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/ControllerConfiguration.java index 169e45d5bc..199a4985f8 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/Controller.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/ControllerConfiguration.java @@ -9,7 +9,7 @@ @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE}) -public @interface Controller { +public @interface ControllerConfiguration { String EMPTY_STRING = ""; String WATCH_CURRENT_NAMESPACE = "JOSDK_WATCH_CURRENT"; diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceSelectorTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceSelectorTest.java index 9d7befbabf..6a1e5144e0 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceSelectorTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceSelectorTest.java @@ -23,10 +23,9 @@ import io.fabric8.kubernetes.client.server.mock.KubernetesMockServer; import io.javaoperatorsdk.operator.Operator; import io.javaoperatorsdk.operator.api.config.ConfigurationService; -import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; import io.javaoperatorsdk.operator.api.config.Version; import io.javaoperatorsdk.operator.api.reconciler.Context; -import io.javaoperatorsdk.operator.api.reconciler.Controller; +import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; import io.javaoperatorsdk.operator.sample.simple.TestCustomResource; @@ -145,7 +144,9 @@ public TestCustomResource newMyResource(String app, String namespace) { return resource; } - public static class MyConfiguration implements ControllerConfiguration { + public static class MyConfiguration + implements + io.javaoperatorsdk.operator.api.config.ControllerConfiguration { private final String labelSelector; private final ConfigurationService service; @@ -176,7 +177,7 @@ public ConfigurationService getConfigurationService() { } } - @Controller(namespaces = NAMESPACE) + @ControllerConfiguration(namespaces = NAMESPACE) public static class MyController implements Reconciler { private final Consumer consumer; diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/DuplicateCRController.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/DuplicateCRController.java index 4fe7bef465..86f0c36261 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/DuplicateCRController.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/DuplicateCRController.java @@ -1,11 +1,11 @@ package io.javaoperatorsdk.operator.sample.simple; import io.javaoperatorsdk.operator.api.reconciler.Context; -import io.javaoperatorsdk.operator.api.reconciler.Controller; +import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; -@Controller +@ControllerConfiguration public class DuplicateCRController implements Reconciler { @Override diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomReconciler.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomReconciler.java index 76788d08b7..10b76b8cdc 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomReconciler.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomReconciler.java @@ -11,13 +11,10 @@ import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; import io.fabric8.kubernetes.client.CustomResource; import io.fabric8.kubernetes.client.KubernetesClient; -import io.javaoperatorsdk.operator.api.reconciler.Context; -import io.javaoperatorsdk.operator.api.reconciler.Controller; -import io.javaoperatorsdk.operator.api.reconciler.DeleteControl; -import io.javaoperatorsdk.operator.api.reconciler.Reconciler; -import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; +import io.javaoperatorsdk.operator.api.reconciler.*; +import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; -@Controller(generationAwareEventProcessing = false) +@ControllerConfiguration(generationAwareEventProcessing = false) public class TestCustomReconciler implements Reconciler { private static final Logger log = LoggerFactory.getLogger(TestCustomReconciler.class); diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomReconcilerV2.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomReconcilerV2.java index b7c41cfeda..bab22f309a 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomReconcilerV2.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomReconcilerV2.java @@ -1,11 +1,11 @@ package io.javaoperatorsdk.operator.sample.simple; import io.javaoperatorsdk.operator.api.reconciler.Context; -import io.javaoperatorsdk.operator.api.reconciler.Controller; +import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; -@Controller +@ControllerConfiguration public class TestCustomReconcilerV2 implements Reconciler { @Override diff --git a/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/AnnotationConfiguration.java b/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/AnnotationConfiguration.java index 8a8e100848..4539873955 100644 --- a/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/AnnotationConfiguration.java +++ b/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/AnnotationConfiguration.java @@ -6,27 +6,26 @@ import io.fabric8.kubernetes.client.CustomResource; import io.javaoperatorsdk.operator.ControllerUtils; import io.javaoperatorsdk.operator.api.config.ConfigurationService; -import io.javaoperatorsdk.operator.api.config.ControllerConfiguration; -import io.javaoperatorsdk.operator.api.reconciler.Controller; +import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.processing.event.internal.CustomResourceEventFilter; import io.javaoperatorsdk.operator.processing.event.internal.CustomResourceEventFilters; public class AnnotationConfiguration> - implements ControllerConfiguration { + implements io.javaoperatorsdk.operator.api.config.ControllerConfiguration { - private final Reconciler controller; - private final Controller annotation; + private final Reconciler reconciler; + private final ControllerConfiguration annotation; private ConfigurationService service; - public AnnotationConfiguration(Reconciler controller) { - this.controller = controller; - this.annotation = controller.getClass().getAnnotation(Controller.class); + public AnnotationConfiguration(Reconciler reconciler) { + this.reconciler = reconciler; + this.annotation = reconciler.getClass().getAnnotation(ControllerConfiguration.class); } @Override public String getName() { - return ControllerUtils.getNameFor(controller); + return ControllerUtils.getNameFor(reconciler); } @Override @@ -40,22 +39,23 @@ public String getFinalizer() { @Override public boolean isGenerationAware() { - return valueOrDefault(annotation, Controller::generationAwareEventProcessing, true); + return valueOrDefault(annotation, ControllerConfiguration::generationAwareEventProcessing, + true); } @Override public Class getCustomResourceClass() { - return RuntimeControllerMetadata.getCustomResourceClass(controller); + return RuntimeControllerMetadata.getCustomResourceClass(reconciler); } @Override public Set getNamespaces() { - return Set.of(valueOrDefault(annotation, Controller::namespaces, new String[] {})); + return Set.of(valueOrDefault(annotation, ControllerConfiguration::namespaces, new String[] {})); } @Override public String getLabelSelector() { - return valueOrDefault(annotation, Controller::labelSelector, ""); + return valueOrDefault(annotation, ControllerConfiguration::labelSelector, ""); } @Override @@ -70,7 +70,7 @@ public void setConfigurationService(ConfigurationService service) { @Override public String getAssociatedReconcilerClassName() { - return controller.getClass().getCanonicalName(); + return reconciler.getClass().getCanonicalName(); } @SuppressWarnings("unchecked") @@ -79,7 +79,8 @@ public CustomResourceEventFilter getEventFilter() { CustomResourceEventFilter answer = null; Class>[] filterTypes = - (Class>[]) valueOrDefault(annotation, Controller::eventFilters, + (Class>[]) valueOrDefault(annotation, + ControllerConfiguration::eventFilters, new Object[] {}); if (filterTypes.length > 0) { for (var filterType : filterTypes) { @@ -101,12 +102,13 @@ public CustomResourceEventFilter getEventFilter() { : CustomResourceEventFilters.passthrough(); } - public static T valueOrDefault(Controller controller, Function mapper, + public static T valueOrDefault(ControllerConfiguration controllerConfiguration, + Function mapper, T defaultValue) { - if (controller == null) { + if (controllerConfiguration == null) { return defaultValue; } else { - return mapper.apply(controller); + return mapper.apply(controllerConfiguration); } } } diff --git a/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/ControllerAnnotationProcessor.java b/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/ControllerAnnotationProcessor.java index 58ca6381fe..2ae51f8bc7 100644 --- a/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/ControllerAnnotationProcessor.java +++ b/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/ControllerAnnotationProcessor.java @@ -23,7 +23,7 @@ import static io.javaoperatorsdk.operator.config.runtime.RuntimeControllerMetadata.RECONCILERS_RESOURCE_PATH; -@SupportedAnnotationTypes("io.javaoperatorsdk.operator.api.reconciler.Controller") +@SupportedAnnotationTypes("io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration") @SupportedSourceVersion(SourceVersion.RELEASE_11) @AutoService(Processor.class) public class ControllerAnnotationProcessor extends AbstractProcessor { diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationServiceTest.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationServiceTest.java index e7314dbefc..425f822ddc 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationServiceTest.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationServiceTest.java @@ -13,7 +13,7 @@ import io.fabric8.kubernetes.model.annotation.Version; import io.javaoperatorsdk.operator.ControllerUtils; import io.javaoperatorsdk.operator.api.reconciler.Context; -import io.javaoperatorsdk.operator.api.reconciler.Controller; +import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; @@ -77,7 +77,8 @@ public void returnsValuesFromControllerAnnotationFinalizer() { final var reconciler = new TestCustomReconciler(); final var configuration = DefaultConfigurationService.instance().getConfigurationFor(reconciler); - assertEquals(CustomResource.getCRDName(TestCustomResource.class), configuration.getCRDName()); + assertEquals(CustomResource.getCRDName(TestCustomResource.class), + configuration.getCRDName()); assertEquals( ControllerUtils.getDefaultFinalizerName(configuration.getCRDName()), configuration.getFinalizer()); @@ -104,7 +105,7 @@ public void supportsInnerClassCustomResources() { }); } - @Controller(finalizerName = CUSTOM_FINALIZER_NAME) + @ControllerConfiguration(finalizerName = CUSTOM_FINALIZER_NAME) static class TestCustomFinalizerReconciler implements Reconciler { @@ -120,7 +121,7 @@ public static class InnerCustomResource extends CustomResource { } } - @Controller(name = NotAutomaticallyCreated.NAME) + @ControllerConfiguration(name = NotAutomaticallyCreated.NAME) static class NotAutomaticallyCreated implements Reconciler { public static final String NAME = "should-be-logged"; @@ -132,7 +133,7 @@ public UpdateControl reconcile( } } - @Controller(generationAwareEventProcessing = false, name = "test") + @ControllerConfiguration(generationAwareEventProcessing = false, name = "test") static class TestCustomReconciler implements Reconciler { @Override diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/doubleupdate/DoubleUpdateTestCustomReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/doubleupdate/DoubleUpdateTestCustomReconciler.java index f6484463a8..2f65be15a6 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/doubleupdate/DoubleUpdateTestCustomReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/doubleupdate/DoubleUpdateTestCustomReconciler.java @@ -7,12 +7,12 @@ import org.slf4j.LoggerFactory; import io.javaoperatorsdk.operator.api.reconciler.Context; -import io.javaoperatorsdk.operator.api.reconciler.Controller; +import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; import io.javaoperatorsdk.operator.support.TestExecutionInfoProvider; -@Controller +@ControllerConfiguration public class DoubleUpdateTestCustomReconciler implements Reconciler, TestExecutionInfoProvider { diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/event/EventSourceTestCustomReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/event/EventSourceTestCustomReconciler.java index a5141a51f0..fc389be228 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/event/EventSourceTestCustomReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/event/EventSourceTestCustomReconciler.java @@ -4,16 +4,13 @@ import io.fabric8.kubernetes.client.CustomResource; import io.javaoperatorsdk.operator.ControllerUtils; -import io.javaoperatorsdk.operator.api.reconciler.Context; -import io.javaoperatorsdk.operator.api.reconciler.Controller; -import io.javaoperatorsdk.operator.api.reconciler.EventSourceInitializer; -import io.javaoperatorsdk.operator.api.reconciler.Reconciler; -import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; +import io.javaoperatorsdk.operator.api.reconciler.*; +import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.javaoperatorsdk.operator.processing.event.EventSourceRegistry; import io.javaoperatorsdk.operator.processing.event.internal.TimerEventSource; import io.javaoperatorsdk.operator.support.TestExecutionInfoProvider; -@Controller +@ControllerConfiguration public class EventSourceTestCustomReconciler implements Reconciler, EventSourceInitializer, TestExecutionInfoProvider { diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/informereventsource/InformerEventSourceTestCustomReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/informereventsource/InformerEventSourceTestCustomReconciler.java index fb6d954de8..a0b7805ccf 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/informereventsource/InformerEventSourceTestCustomReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/informereventsource/InformerEventSourceTestCustomReconciler.java @@ -6,7 +6,7 @@ import io.fabric8.kubernetes.api.model.ConfigMap; import io.fabric8.kubernetes.client.KubernetesClient; import io.javaoperatorsdk.operator.api.reconciler.Context; -import io.javaoperatorsdk.operator.api.reconciler.Controller; +import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.EventSourceInitializer; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; @@ -15,13 +15,13 @@ import io.javaoperatorsdk.operator.processing.event.internal.InformerEventSource; import io.javaoperatorsdk.operator.processing.event.internal.Mappers; -import static io.javaoperatorsdk.operator.api.reconciler.Controller.NO_FINALIZER; +import static io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration.NO_FINALIZER; /** * Copies the config map value from spec into status. The main purpose is to test and demonstrate * sample usage of InformerEventSource */ -@Controller(finalizerName = NO_FINALIZER) +@ControllerConfiguration(finalizerName = NO_FINALIZER) public class InformerEventSourceTestCustomReconciler implements Reconciler, KubernetesClientAware, EventSourceInitializer { diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/retry/RetryTestCustomReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/retry/RetryTestCustomReconciler.java index baa23c610e..5ae059342e 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/retry/RetryTestCustomReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/retry/RetryTestCustomReconciler.java @@ -8,12 +8,12 @@ import io.fabric8.kubernetes.client.CustomResource; import io.javaoperatorsdk.operator.ControllerUtils; import io.javaoperatorsdk.operator.api.reconciler.Context; -import io.javaoperatorsdk.operator.api.reconciler.Controller; +import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; import io.javaoperatorsdk.operator.support.TestExecutionInfoProvider; -@Controller +@ControllerConfiguration public class RetryTestCustomReconciler implements Reconciler, TestExecutionInfoProvider { diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestReconciler.java index b042ec0291..30f57fd8c6 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestReconciler.java @@ -13,15 +13,12 @@ import io.fabric8.kubernetes.client.CustomResource; import io.fabric8.kubernetes.client.KubernetesClient; import io.javaoperatorsdk.operator.ControllerUtils; -import io.javaoperatorsdk.operator.api.reconciler.Context; -import io.javaoperatorsdk.operator.api.reconciler.Controller; -import io.javaoperatorsdk.operator.api.reconciler.DeleteControl; -import io.javaoperatorsdk.operator.api.reconciler.Reconciler; -import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; +import io.javaoperatorsdk.operator.api.reconciler.*; +import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.javaoperatorsdk.operator.junit.KubernetesClientAware; import io.javaoperatorsdk.operator.support.TestExecutionInfoProvider; -@Controller(generationAwareEventProcessing = false) +@ControllerConfiguration(generationAwareEventProcessing = false) public class TestReconciler implements Reconciler, TestExecutionInfoProvider, KubernetesClientAware { diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/subresource/SubResourceTestCustomReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/subresource/SubResourceTestCustomReconciler.java index 54b21ae1ce..9eefc7568d 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/subresource/SubResourceTestCustomReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/subresource/SubResourceTestCustomReconciler.java @@ -8,12 +8,12 @@ import io.fabric8.kubernetes.client.CustomResource; import io.javaoperatorsdk.operator.ControllerUtils; import io.javaoperatorsdk.operator.api.reconciler.Context; -import io.javaoperatorsdk.operator.api.reconciler.Controller; +import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; import io.javaoperatorsdk.operator.support.TestExecutionInfoProvider; -@Controller(generationAwareEventProcessing = false) +@ControllerConfiguration(generationAwareEventProcessing = false) public class SubResourceTestCustomReconciler implements Reconciler, TestExecutionInfoProvider { diff --git a/operator-framework/src/test/resources/compile-fixtures/MultilevelReconciler.java b/operator-framework/src/test/resources/compile-fixtures/MultilevelReconciler.java index cf1dbcf45a..fe15e54a6c 100644 --- a/operator-framework/src/test/resources/compile-fixtures/MultilevelReconciler.java +++ b/operator-framework/src/test/resources/compile-fixtures/MultilevelReconciler.java @@ -2,11 +2,11 @@ import io.fabric8.kubernetes.client.CustomResource; import io.javaoperatorsdk.operator.api.reconciler.Context; -import io.javaoperatorsdk.operator.api.reconciler.Controller; +import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.DeleteControl; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; -@Controller +@ControllerConfiguration public class MultilevelReconciler extends MultilevelAbstractReconciler { diff --git a/operator-framework/src/test/resources/compile-fixtures/ReconcilerImplemented2Interfaces.java b/operator-framework/src/test/resources/compile-fixtures/ReconcilerImplemented2Interfaces.java index 4282a9dde8..6331c54d2c 100644 --- a/operator-framework/src/test/resources/compile-fixtures/ReconcilerImplemented2Interfaces.java +++ b/operator-framework/src/test/resources/compile-fixtures/ReconcilerImplemented2Interfaces.java @@ -2,13 +2,13 @@ import io.fabric8.kubernetes.client.CustomResource; import io.javaoperatorsdk.operator.api.reconciler.Context; -import io.javaoperatorsdk.operator.api.reconciler.Controller; +import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.DeleteControl; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; import java.io.Serializable; -@Controller +@ControllerConfiguration public class ReconcilerImplemented2Interfaces implements Serializable, Reconciler { public static class MyCustomResource extends CustomResource { diff --git a/operator-framework/src/test/resources/compile-fixtures/ReconcilerImplementedIntermediateAbstractClass.java b/operator-framework/src/test/resources/compile-fixtures/ReconcilerImplementedIntermediateAbstractClass.java index 03de32b523..17280051a2 100644 --- a/operator-framework/src/test/resources/compile-fixtures/ReconcilerImplementedIntermediateAbstractClass.java +++ b/operator-framework/src/test/resources/compile-fixtures/ReconcilerImplementedIntermediateAbstractClass.java @@ -1,12 +1,12 @@ package io; import io.javaoperatorsdk.operator.api.reconciler.Context; -import io.javaoperatorsdk.operator.api.reconciler.Controller; +import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.DeleteControl; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; import java.io.Serializable; -@Controller +@ControllerConfiguration public class ReconcilerImplementedIntermediateAbstractClass extends AbstractReconciler implements Serializable { diff --git a/samples/common/src/main/java/io/javaoperatorsdk/operator/sample/CustomServiceReconciler.java b/samples/common/src/main/java/io/javaoperatorsdk/operator/sample/CustomServiceReconciler.java index d773e07f11..5400a8bef3 100644 --- a/samples/common/src/main/java/io/javaoperatorsdk/operator/sample/CustomServiceReconciler.java +++ b/samples/common/src/main/java/io/javaoperatorsdk/operator/sample/CustomServiceReconciler.java @@ -10,14 +10,11 @@ import io.fabric8.kubernetes.api.model.ServiceSpec; import io.fabric8.kubernetes.client.DefaultKubernetesClient; import io.fabric8.kubernetes.client.KubernetesClient; -import io.javaoperatorsdk.operator.api.reconciler.Context; -import io.javaoperatorsdk.operator.api.reconciler.Controller; -import io.javaoperatorsdk.operator.api.reconciler.DeleteControl; -import io.javaoperatorsdk.operator.api.reconciler.Reconciler; -import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; +import io.javaoperatorsdk.operator.api.reconciler.*; +import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; /** A very simple sample controller that creates a service with a label. */ -@Controller +@ControllerConfiguration public class CustomServiceReconciler implements Reconciler { public static final String KIND = "CustomService"; From 910293a0488cbd458572420f0305614bcf03bb8d Mon Sep 17 00:00:00 2001 From: csviri Date: Mon, 8 Nov 2021 10:21:35 +0100 Subject: [PATCH 12/24] fix: controllerConfiguration refactor issues in docs --- DECISION_LOG.md | 12 ------------ README.md | 2 +- docs/documentation/features.md | 6 +++--- docs/documentation/getting-started.md | 2 +- docs/documentation/use-samples.md | 2 +- 5 files changed, 6 insertions(+), 18 deletions(-) delete mode 100644 DECISION_LOG.md diff --git a/DECISION_LOG.md b/DECISION_LOG.md deleted file mode 100644 index 84a7341657..0000000000 --- a/DECISION_LOG.md +++ /dev/null @@ -1,12 +0,0 @@ -# Decision Log - - -## Event Sources - -### 1. Move Retries to an Abstract Controller. - -The original idea was to explicitly support retry in the scheduler. However, this turned out to complicate the algorithm -in case of event sources. Mostly it would be harder to manage the buffer, and the other event sources, thus what -does it mean for other event sources that there was a failed controllerConfiguration execution? Probably it would be better to -manage this in an abstract controllerConfiguration, and just use the "reprocess event-source" source in case of an error. - diff --git a/README.md b/README.md index 62f78ec9f3..790169d036 100644 --- a/README.md +++ b/README.md @@ -130,7 +130,7 @@ dependencies { ``` Once you've added the dependency, define a main method initializing the Operator and registering a -controllerConfiguration. +controller. ```java public class Runner { diff --git a/docs/documentation/features.md b/docs/documentation/features.md index 8c9bbd2792..e89b5a5a0f 100644 --- a/docs/documentation/features.md +++ b/docs/documentation/features.md @@ -14,7 +14,7 @@ other configuration options are provided to fine tune or turn off these features ## Controller Execution in a Nutshell Controller execution is always triggered by an event. Events typically come from the custom resource -(i.e. custom resource is created, updated or deleted) that the controllerConfiguration is watching, but also from different sources +(i.e. custom resource is created, updated or deleted) that the controller is watching, but also from different sources (see event sources). When an event is received reconciliation is executed, unless there is already a reconciliation happening for a particular custom resource. In other words it is guaranteed by the framework that no concurrent reconciliation happens for a custom resource. @@ -24,7 +24,7 @@ i.e. [ResourceController](https://github.com/java-operator-sdk/java-operator-sdk called, a post-processing phase follows, where typically framework checks if: - an exception was thrown during execution, if yes schedules a retry. -- there are new events received during the controllerConfiguration execution, if yes schedule the execution again. +- there are new events received during the controller execution, if yes schedule the execution again. - there is an instruction to re-schedule the execution for the future, if yes schedule a timer event with the specified delay. - if none above, the reconciliation is finished. @@ -90,7 +90,7 @@ time. ## Contextual Info for Logging with MDC Logging is enhanced with additional contextual information using [MDC](http://www.slf4j.org/manual.html#mdc). -This following attributes are available in most parts of reconciliation logic and during the execution of the controllerConfiguration: +This following attributes are available in most parts of reconciliation logic and during the execution of the controller: | MDC Key | Value added from Custom Resource | | :--- | :--- | diff --git a/docs/documentation/getting-started.md b/docs/documentation/getting-started.md index 2419670607..3ca64df871 100644 --- a/docs/documentation/getting-started.md +++ b/docs/documentation/getting-started.md @@ -73,7 +73,7 @@ if the operator just gets restarted after it went down. ### At Least Once -To implement controllerConfiguration logic, we have to override two methods: `createOrUpdateResource` and `deleteResource`. +To implement controller logic, we have to override two methods: `createOrUpdateResource` and `deleteResource`. These methods are called if a resource is created/changed or marked for deletion. In most cases these methods will be called just once, but in some rare cases, it can happen that they are called more then once. In practice this means that the implementation needs to be **idempotent**. diff --git a/docs/documentation/use-samples.md b/docs/documentation/use-samples.md index 9db800a2df..a736aabe49 100644 --- a/docs/documentation/use-samples.md +++ b/docs/documentation/use-samples.md @@ -44,7 +44,7 @@ dependencies { ``` Once you've added the dependency, define a main method initializing the Operator and registering a -controllerConfiguration. +controller. ```java public class Runner { From 349fc118d4cd8fd7be21c88a0c3ad5bb0c32ae7f Mon Sep 17 00:00:00 2001 From: csviri Date: Mon, 8 Nov 2021 10:39:47 +0100 Subject: [PATCH 13/24] refactor: image consistent naming --- docs/etc/{v2_model.svg => v2_model.drawio.svg} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/etc/{v2_model.svg => v2_model.drawio.svg} (100%) diff --git a/docs/etc/v2_model.svg b/docs/etc/v2_model.drawio.svg similarity index 100% rename from docs/etc/v2_model.svg rename to docs/etc/v2_model.drawio.svg From 2e0ec8b423cfea8e57f5ca28d6fddc6ab9dcf37c Mon Sep 17 00:00:00 2001 From: csviri Date: Tue, 9 Nov 2021 13:28:45 +0100 Subject: [PATCH 14/24] fix: cleanup IT --- .../sample/event/EventSourceTestCustomReconciler.java | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/event/EventSourceTestCustomReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/event/EventSourceTestCustomReconciler.java index fc389be228..62da62a4e2 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/event/EventSourceTestCustomReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/event/EventSourceTestCustomReconciler.java @@ -12,7 +12,7 @@ @ControllerConfiguration public class EventSourceTestCustomReconciler - implements Reconciler, EventSourceInitializer, + implements Reconciler, TestExecutionInfoProvider { public static final String FINALIZER_NAME = @@ -20,13 +20,6 @@ public class EventSourceTestCustomReconciler CustomResource.getCRDName(EventSourceTestCustomResource.class)); public static final int TIMER_PERIOD = 500; private final AtomicInteger numberOfExecutions = new AtomicInteger(0); - private final TimerEventSource timerEventSource = - new TimerEventSource<>(); - - @Override - public void prepareEventSources(EventSourceRegistry eventSourceRegistry) { - eventSourceRegistry.registerEventSource(timerEventSource); - } @Override public UpdateControl reconcile( From 75b8e0e1cc1d08e5ef021bcdc28e07dd44045342 Mon Sep 17 00:00:00 2001 From: csviri Date: Tue, 9 Nov 2021 13:39:51 +0100 Subject: [PATCH 15/24] fix: fix imports --- .../operator/sample/event/EventSourceTestCustomReconciler.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/event/EventSourceTestCustomReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/event/EventSourceTestCustomReconciler.java index 62da62a4e2..c8a5c673c0 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/event/EventSourceTestCustomReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/event/EventSourceTestCustomReconciler.java @@ -6,8 +6,6 @@ import io.javaoperatorsdk.operator.ControllerUtils; import io.javaoperatorsdk.operator.api.reconciler.*; import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; -import io.javaoperatorsdk.operator.processing.event.EventSourceRegistry; -import io.javaoperatorsdk.operator.processing.event.internal.TimerEventSource; import io.javaoperatorsdk.operator.support.TestExecutionInfoProvider; @ControllerConfiguration From 8811dc37c3b3a0169eecb3c8396f83d87da39c0e Mon Sep 17 00:00:00 2001 From: csviri Date: Tue, 9 Nov 2021 14:11:31 +0100 Subject: [PATCH 16/24] fix: improvements --- .../operator/processing/event/EventSourceManager.java | 2 +- .../io/javaoperatorsdk/operator/UpdatingResAndSubResIT.java | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/EventSourceManager.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/EventSourceManager.java index 4bc6da2941..b1d941d4e4 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/EventSourceManager.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/EventSourceManager.java @@ -59,7 +59,7 @@ public EventSourceManager setEventProcessor(EventProcessor eventProcessor) public void start() throws OperatorException { lock.lock(); try { - log.debug("Closing event sources."); + log.debug("Starting event sources."); for (var eventSource : eventSources) { try { eventSource.start(); diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/UpdatingResAndSubResIT.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/UpdatingResAndSubResIT.java index 11542247a8..57299906cc 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/UpdatingResAndSubResIT.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/UpdatingResAndSubResIT.java @@ -73,7 +73,6 @@ void awaitStatusUpdated(String name) { public DoubleUpdateTestCustomResource createTestCustomResource(String id) { DoubleUpdateTestCustomResource resource = new DoubleUpdateTestCustomResource(); resource.setMetadata(new ObjectMetaBuilder().withName("doubleupdateresource-" + id).build()); - resource.setKind("DoubleUpdateSample"); resource.setSpec(new DoubleUpdateTestCustomResourceSpec()); resource.getSpec().setValue(id); return resource; From 224bcdf0d942a1546ed35cf072b1435e10e32cde Mon Sep 17 00:00:00 2001 From: csviri Date: Tue, 9 Nov 2021 15:20:53 +0100 Subject: [PATCH 17/24] fix: log message for crd apply in IT --- .../processing/event/internal/CustomResourceEventSource.java | 1 - .../io/javaoperatorsdk/operator/junit/OperatorExtension.java | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceEventSource.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceEventSource.java index 0a7684f767..b48bf9c0e0 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceEventSource.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceEventSource.java @@ -89,7 +89,6 @@ public void start() { }); } } catch (Exception e) { - // todo double check this if still applies for informers if (e instanceof KubernetesClientException) { KubernetesClientException ke = (KubernetesClientException) e; if (404 == ke.getCode()) { diff --git a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java index 7833f723e1..f8668475fe 100644 --- a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java +++ b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java @@ -167,6 +167,7 @@ protected void before(ExtensionContext context) { try (InputStream is = getClass().getResourceAsStream(path)) { kubernetesClient.load(is).createOrReplace(); + LOGGER.debug("Applied CRD with name: {}", config.getCRDName()); } catch (Exception ex) { throw new IllegalStateException("Cannot apply CRD yaml: " + path, ex); } From 94980eea1e0a68e7aba5b45adacb152468df912f Mon Sep 17 00:00:00 2001 From: csviri Date: Tue, 9 Nov 2021 15:23:18 +0100 Subject: [PATCH 18/24] fix: propagate cause to MissingCRD exception --- .../processing/event/internal/CustomResourceEventSource.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceEventSource.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceEventSource.java index b48bf9c0e0..c1391b92c7 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceEventSource.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceEventSource.java @@ -95,7 +95,7 @@ public void start() { // only throw MissingCRDException if the 404 error occurs on the target CRD final var targetCRDName = controller.getConfiguration().getCRDName(); if (targetCRDName.equals(ke.getFullResourceName())) { - throw new MissingCRDException(targetCRDName, null); + throw new MissingCRDException(targetCRDName, null, e.getMessage(), e); } } } From cadbc8afe957bf5e91dba99270bf3c541f7655a0 Mon Sep 17 00:00:00 2001 From: csviri Date: Tue, 9 Nov 2021 16:55:24 +0100 Subject: [PATCH 19/24] fix: naming --- .../javaoperatorsdk/operator/junit/OperatorExtension.java | 6 +++--- .../java/io/javaoperatorsdk/operator/ConcurrencyIT.java | 2 +- .../io/javaoperatorsdk/operator/ControllerExecutionIT.java | 2 +- .../java/io/javaoperatorsdk/operator/EventSourceIT.java | 2 +- .../io/javaoperatorsdk/operator/InformerEventSourceIT.java | 2 +- .../src/test/java/io/javaoperatorsdk/operator/RetryIT.java | 2 +- .../io/javaoperatorsdk/operator/SubResourceUpdateIT.java | 2 +- .../io/javaoperatorsdk/operator/UpdatingResAndSubResIT.java | 2 +- 8 files changed, 10 insertions(+), 10 deletions(-) diff --git a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java index f8668475fe..06c0d4f148 100644 --- a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java +++ b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java @@ -243,19 +243,19 @@ public Builder withConfigurationService(ConfigurationService value) { } @SuppressWarnings("rawtypes") - public Builder withController(Reconciler value) { + public Builder withReconciler(Reconciler value) { controllers.add(new ControllerSpec(value, null)); return this; } @SuppressWarnings("rawtypes") - public Builder withController(Reconciler value, Retry retry) { + public Builder withReconciler(Reconciler value, Retry retry) { controllers.add(new ControllerSpec(value, retry)); return this; } @SuppressWarnings("rawtypes") - public Builder withController(Class value) { + public Builder withReconciler(Class value) { try { controllers.add(new ControllerSpec(value.getConstructor().newInstance(), null)); } catch (Exception e) { diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/ConcurrencyIT.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/ConcurrencyIT.java index 391faa75d4..458e2d12eb 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/ConcurrencyIT.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/ConcurrencyIT.java @@ -30,7 +30,7 @@ public class ConcurrencyIT { OperatorExtension operator = OperatorExtension.builder() .withConfigurationService(DefaultConfigurationService.instance()) - .withController(new TestReconciler(true)) + .withReconciler(new TestReconciler(true)) .build(); @Test 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 a26dfc884c..b1f783b958 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/ControllerExecutionIT.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/ControllerExecutionIT.java @@ -20,7 +20,7 @@ public class ControllerExecutionIT { OperatorExtension operator = OperatorExtension.builder() .withConfigurationService(DefaultConfigurationService.instance()) - .withController(new TestReconciler(true)) + .withReconciler(new TestReconciler(true)) .build(); @Test diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/EventSourceIT.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/EventSourceIT.java index 66fa2036c4..509cb74d42 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/EventSourceIT.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/EventSourceIT.java @@ -21,7 +21,7 @@ public class EventSourceIT { OperatorExtension operator = OperatorExtension.builder() .withConfigurationService(DefaultConfigurationService.instance()) - .withController(EventSourceTestCustomReconciler.class) + .withReconciler(EventSourceTestCustomReconciler.class) .build(); @Test diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/InformerEventSourceIT.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/InformerEventSourceIT.java index d501fc5b22..d290d06ecd 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/InformerEventSourceIT.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/InformerEventSourceIT.java @@ -28,7 +28,7 @@ public class InformerEventSourceIT { OperatorExtension operator = OperatorExtension.builder() .withConfigurationService(DefaultConfigurationService.instance()) - .withController(new InformerEventSourceTestCustomReconciler()) + .withReconciler(new InformerEventSourceTestCustomReconciler()) .build(); @Test 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 32c2bfc840..cb7109f8cf 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/RetryIT.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/RetryIT.java @@ -25,7 +25,7 @@ public class RetryIT { OperatorExtension operator = OperatorExtension.builder() .withConfigurationService(DefaultConfigurationService.instance()) - .withController( + .withReconciler( new RetryTestCustomReconciler(), new GenericRetry().setInitialInterval(RETRY_INTERVAL).withLinearRetry() .setMaxAttempts(5)) diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/SubResourceUpdateIT.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/SubResourceUpdateIT.java index 9a22af416f..5998502f32 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/SubResourceUpdateIT.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/SubResourceUpdateIT.java @@ -24,7 +24,7 @@ public class SubResourceUpdateIT { OperatorExtension operator = OperatorExtension.builder() .withConfigurationService(DefaultConfigurationService.instance()) - .withController(SubResourceTestCustomReconciler.class) + .withReconciler(SubResourceTestCustomReconciler.class) .build(); @Test diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/UpdatingResAndSubResIT.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/UpdatingResAndSubResIT.java index 57299906cc..2a479d47df 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/UpdatingResAndSubResIT.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/UpdatingResAndSubResIT.java @@ -22,7 +22,7 @@ public class UpdatingResAndSubResIT { OperatorExtension operator = OperatorExtension.builder() .withConfigurationService(DefaultConfigurationService.instance()) - .withController(DoubleUpdateTestCustomReconciler.class) + .withReconciler(DoubleUpdateTestCustomReconciler.class) .build(); @Test From 0f9eabaff786506a83354a0a6849d701b5bd2d7c Mon Sep 17 00:00:00 2001 From: csviri Date: Wed, 10 Nov 2021 12:44:32 +0100 Subject: [PATCH 20/24] fix: increased minikube version --- .github/workflows/pr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index a1ee4de399..936c95fb10 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -35,7 +35,7 @@ jobs: - name: Set up Minikube uses: manusa/actions-setup-minikube@v2.4.2 with: - minikube version: 'v1.22.0' + minikube version: 'v1.24.0' kubernetes version: ${{ matrix.kubernetes }} driver: 'docker' - name: Run integration tests From 725fb06819fe1c6307160ca10becc0daecaf255d Mon Sep 17 00:00:00 2001 From: csviri Date: Wed, 10 Nov 2021 12:54:16 +0100 Subject: [PATCH 21/24] fix: experiment with CR IT issue --- .../io/javaoperatorsdk/operator/junit/OperatorExtension.java | 1 + 1 file changed, 1 insertion(+) diff --git a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java index 06c0d4f148..21081ff370 100644 --- a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java +++ b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java @@ -167,6 +167,7 @@ protected void before(ExtensionContext context) { try (InputStream is = getClass().getResourceAsStream(path)) { kubernetesClient.load(is).createOrReplace(); + Thread.sleep(2000); LOGGER.debug("Applied CRD with name: {}", config.getCRDName()); } catch (Exception ex) { throw new IllegalStateException("Cannot apply CRD yaml: " + path, ex); From b51e69b314a9a57edab98b5d4f1429434d30a443 Mon Sep 17 00:00:00 2001 From: csviri Date: Wed, 10 Nov 2021 13:50:27 +0100 Subject: [PATCH 22/24] docs: comment on sleep --- .../io/javaoperatorsdk/operator/junit/OperatorExtension.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java index 21081ff370..b79d05e9ac 100644 --- a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java +++ b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java @@ -167,6 +167,8 @@ protected void before(ExtensionContext context) { try (InputStream is = getClass().getResourceAsStream(path)) { kubernetesClient.load(is).createOrReplace(); + // this fixes an issue with CRD registration, integration tests were failing, since the CRD was not found yet + // when the operator started. This seems to be fixing this issue (maybe a problem with minikube?) Thread.sleep(2000); LOGGER.debug("Applied CRD with name: {}", config.getCRDName()); } catch (Exception ex) { From 0521f8e86ba9ba70d64800be86def7a1925d4d45 Mon Sep 17 00:00:00 2001 From: csviri Date: Wed, 10 Nov 2021 13:52:32 +0100 Subject: [PATCH 23/24] fix: formatting --- .../javaoperatorsdk/operator/junit/OperatorExtension.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java index b79d05e9ac..5fed85dc67 100644 --- a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java +++ b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/OperatorExtension.java @@ -167,8 +167,10 @@ protected void before(ExtensionContext context) { try (InputStream is = getClass().getResourceAsStream(path)) { kubernetesClient.load(is).createOrReplace(); - // this fixes an issue with CRD registration, integration tests were failing, since the CRD was not found yet - // when the operator started. This seems to be fixing this issue (maybe a problem with minikube?) + // this fixes an issue with CRD registration, integration tests were failing, since the CRD + // was not found yet + // when the operator started. This seems to be fixing this issue (maybe a problem with + // minikube?) Thread.sleep(2000); LOGGER.debug("Applied CRD with name: {}", config.getCRDName()); } catch (Exception ex) { From 4105defbae4116f4f358e5ed2ec950b3c5dbaf3a Mon Sep 17 00:00:00 2001 From: Chris Laprun Date: Wed, 10 Nov 2021 14:52:00 +0100 Subject: [PATCH 24/24] refactor: rename ControllerAnnotationProcessor to ControllerConfigurationAnnotationProcessor --- ...va => ControllerConfigurationAnnotationProcessor.java} | 2 +- ...> ControllerConfigurationAnnotationProcessorTest.java} | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) rename operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/{ControllerAnnotationProcessor.java => ControllerConfigurationAnnotationProcessor.java} (97%) rename operator-framework/src/test/java/io/javaoperatorsdk/operator/config/runtime/{ControllerAnnotationProcessorTest.java => ControllerConfigurationAnnotationProcessorTest.java} (84%) diff --git a/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/ControllerAnnotationProcessor.java b/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/ControllerConfigurationAnnotationProcessor.java similarity index 97% rename from operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/ControllerAnnotationProcessor.java rename to operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/ControllerConfigurationAnnotationProcessor.java index 2ae51f8bc7..df509f942e 100644 --- a/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/ControllerAnnotationProcessor.java +++ b/operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/ControllerConfigurationAnnotationProcessor.java @@ -26,7 +26,7 @@ @SupportedAnnotationTypes("io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration") @SupportedSourceVersion(SourceVersion.RELEASE_11) @AutoService(Processor.class) -public class ControllerAnnotationProcessor extends AbstractProcessor { +public class ControllerConfigurationAnnotationProcessor extends AbstractProcessor { private AccumulativeMappingWriter controllersResourceWriter; private TypeParameterResolver typeParameterResolver; diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/runtime/ControllerAnnotationProcessorTest.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/runtime/ControllerConfigurationAnnotationProcessorTest.java similarity index 84% rename from operator-framework/src/test/java/io/javaoperatorsdk/operator/config/runtime/ControllerAnnotationProcessorTest.java rename to operator-framework/src/test/java/io/javaoperatorsdk/operator/config/runtime/ControllerConfigurationAnnotationProcessorTest.java index e819723c03..ce9637af9e 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/runtime/ControllerAnnotationProcessorTest.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/runtime/ControllerConfigurationAnnotationProcessorTest.java @@ -7,13 +7,13 @@ import com.google.testing.compile.Compiler; import com.google.testing.compile.JavaFileObjects; -class ControllerAnnotationProcessorTest { +class ControllerConfigurationAnnotationProcessorTest { @Test public void generateCorrectDoneableClassIfInterfaceIsSecond() { Compilation compilation = Compiler.javac() - .withProcessors(new ControllerAnnotationProcessor()) + .withProcessors(new ControllerConfigurationAnnotationProcessor()) .compile( JavaFileObjects.forResource( "compile-fixtures/ReconcilerImplemented2Interfaces.java")); @@ -24,7 +24,7 @@ public void generateCorrectDoneableClassIfInterfaceIsSecond() { public void generateCorrectDoneableClassIfThereIsAbstractBaseController() { Compilation compilation = Compiler.javac() - .withProcessors(new ControllerAnnotationProcessor()) + .withProcessors(new ControllerConfigurationAnnotationProcessor()) .compile( JavaFileObjects.forResource("compile-fixtures/AbstractReconciler.java"), JavaFileObjects.forResource( @@ -36,7 +36,7 @@ public void generateCorrectDoneableClassIfThereIsAbstractBaseController() { public void generateDoneableClasswithMultilevelHierarchy() { Compilation compilation = Compiler.javac() - .withProcessors(new ControllerAnnotationProcessor()) + .withProcessors(new ControllerConfigurationAnnotationProcessor()) .compile( JavaFileObjects.forResource("compile-fixtures/AdditionalReconcilerInterface.java"), JavaFileObjects.forResource("compile-fixtures/MultilevelAbstractReconciler.java"),