diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/PostExecutionControl.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/PostExecutionControl.java index 99bfc824f7..820254f9e3 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/PostExecutionControl.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/PostExecutionControl.java @@ -23,8 +23,9 @@ private PostExecutionControl( this.runtimeException = runtimeException; } - public static PostExecutionControl onlyFinalizerAdded() { - return new PostExecutionControl<>(true, null, false, null); + public static PostExecutionControl onlyFinalizerAdded( + R updatedCustomResource) { + return new PostExecutionControl<>(true, updatedCustomResource, false, null); } public static PostExecutionControl defaultDispatch() { @@ -46,18 +47,10 @@ public static PostExecutionControl exceptionDuringExe return new PostExecutionControl<>(false, null, false, exception); } - public boolean isOnlyFinalizerHandled() { - return onlyFinalizerHandled; - } - public Optional getUpdatedCustomResource() { return Optional.ofNullable(updatedCustomResource); } - public boolean customResourceUpdatedDuringExecution() { - return updatedCustomResource != null; - } - public boolean exceptionDuringExecution() { return runtimeException != null; } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/ReconciliationDispatcher.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/ReconciliationDispatcher.java index 600ebee221..0555a17621 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/ReconciliationDispatcher.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/ReconciliationDispatcher.java @@ -98,8 +98,8 @@ private PostExecutionControl handleReconcile( * finalizer add. This will make sure that the resources are not created before there is a * finalizer. */ - updateCustomResourceWithFinalizer(originalResource); - return PostExecutionControl.onlyFinalizerAdded(); + var updatedResource = updateCustomResourceWithFinalizer(originalResource); + return PostExecutionControl.onlyFinalizerAdded(updatedResource); } else { var resourceForExecution = cloneResource(originalResource); @@ -295,11 +295,11 @@ private PostExecutionControl handleCleanup(R resource, Context context) { return postExecutionControl; } - private void updateCustomResourceWithFinalizer(R resource) { + private R updateCustomResourceWithFinalizer(R resource) { log.debug( "Adding finalizer for resource: {} version: {}", getUID(resource), getVersion(resource)); resource.addFinalizer(configuration().getFinalizerName()); - customResourceFacade.replaceResourceWithLock(resource); + return customResourceFacade.replaceResourceWithLock(resource); } private R updateCustomResource(R resource) { diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/ReconciliationDispatcherTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/ReconciliationDispatcherTest.java index db2b52c295..fabf36b529 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/ReconciliationDispatcherTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/ReconciliationDispatcherTest.java @@ -261,13 +261,16 @@ void doesNotUpdateTheResourceIfNoUpdateUpdateControlIfFinalizerSet() { @Test void addsFinalizerIfNotMarkedForDeletionAndEmptyCustomResourceReturned() { removeFinalizers(testCustomResource); - reconciler.reconcile = (r, c) -> UpdateControl.noUpdate(); + when(customResourceFacade.replaceResourceWithLock(any())).thenReturn(testCustomResource); - reconciliationDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); + var postExecControl = + reconciliationDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource)); assertEquals(1, testCustomResource.getMetadata().getFinalizers().size()); verify(customResourceFacade, times(1)).replaceResourceWithLock(any()); + assertThat(postExecControl.updateIsStatusPatch()).isFalse(); + assertThat(postExecControl.getUpdatedCustomResource()).isPresent(); } @Test