Skip to content

Commit bd242ea

Browse files
authored
fix: ReconcilerUtils.isFinalizerValid should account for NO_FINALIZER (#819)
Also restores ReconcilerUtils.getDefaultReconcilerName(String) Fixes #818
1 parent 52fc813 commit bd242ea

File tree

3 files changed

+12
-4
lines changed

3 files changed

+12
-4
lines changed

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/ReconcilerUtils.java

+5-2
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public void setApiVersion(String s) {
3737
throw new UnsupportedOperationException();
3838
}
3939
};
40-
return validator.isFinalizerValid(finalizer);
40+
return Constants.NO_FINALIZER.equals(finalizer) || validator.isFinalizerValid(finalizer);
4141
}
4242

4343
public static String getResourceTypeName(Class<? extends HasMetadata> resourceClass) {
@@ -49,7 +49,10 @@ public static String getResourceTypeName(Class<? extends HasMetadata> resourceCl
4949
}
5050

5151
public static String getDefaultFinalizerName(Class<? extends HasMetadata> resourceClass) {
52-
var resourceName = getResourceTypeName(resourceClass);
52+
return getDefaultFinalizerName(getResourceTypeName(resourceClass));
53+
}
54+
55+
public static String getDefaultFinalizerName(String resourceName) {
5356
// resource names for historic resources such as Pods are missing periods and therefore do not
5457
// constitute valid domain names as mandated by Kubernetes so generate one that does
5558
if (resourceName.indexOf('.') < 0) {

operator-framework-core/src/test/java/io/javaoperatorsdk/operator/ReconcilerUtilsTest.java

+6
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import org.junit.jupiter.api.Test;
44

55
import io.fabric8.kubernetes.api.model.Pod;
6+
import io.javaoperatorsdk.operator.api.reconciler.Constants;
67
import io.javaoperatorsdk.operator.sample.simple.TestCustomReconciler;
78
import io.javaoperatorsdk.operator.sample.simple.TestCustomResource;
89

@@ -33,4 +34,9 @@ void defaultFinalizerShouldWork() {
3334
assertTrue(isFinalizerValid(getDefaultFinalizerName(Pod.class)));
3435
assertTrue(isFinalizerValid(getDefaultFinalizerName(TestCustomResource.class)));
3536
}
37+
38+
@Test
39+
void noFinalizerMarkerShouldWork() {
40+
assertTrue(isFinalizerValid(Constants.NO_FINALIZER));
41+
}
3642
}

operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/AnnotationConfiguration.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import io.fabric8.kubernetes.api.model.HasMetadata;
77
import io.javaoperatorsdk.operator.ReconcilerUtils;
88
import io.javaoperatorsdk.operator.api.config.ConfigurationService;
9-
import io.javaoperatorsdk.operator.api.reconciler.Constants;
109
import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration;
1110
import io.javaoperatorsdk.operator.api.reconciler.Reconciler;
1211
import io.javaoperatorsdk.operator.processing.event.source.controller.ResourceEventFilter;
@@ -35,7 +34,7 @@ public String getFinalizer() {
3534
return ReconcilerUtils.getDefaultFinalizerName(getResourceClass());
3635
} else {
3736
final var finalizer = annotation.finalizerName();
38-
if (Constants.NO_FINALIZER.equals(finalizer) || ReconcilerUtils.isFinalizerValid(finalizer)) {
37+
if (ReconcilerUtils.isFinalizerValid(finalizer)) {
3938
return finalizer;
4039
} else {
4140
throw new IllegalArgumentException(finalizer

0 commit comments

Comments
 (0)