Skip to content

Commit ca52637

Browse files
committed
Finalizer utils
Signed-off-by: Attila Mészáros <[email protected]>
1 parent af50bde commit ca52637

File tree

2 files changed

+51
-4
lines changed
  • operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler
  • operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/alleventmode/onlyreconcile

2 files changed

+51
-4
lines changed
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package io.javaoperatorsdk.operator.api.reconciler;
2+
3+
import org.slf4j.Logger;
4+
import org.slf4j.LoggerFactory;
5+
6+
import io.fabric8.kubernetes.api.model.HasMetadata;
7+
8+
public class FinalizerUtils {
9+
10+
private static final Logger log = LoggerFactory.getLogger(FinalizerUtils.class);
11+
12+
// todo SSA
13+
14+
public static <P extends HasMetadata> P patchFinalizer(
15+
P resource, String finalizer, Context<P> context) {
16+
return PrimaryUpdateAndCacheUtils.updateAndCacheResource(
17+
resource,
18+
context,
19+
r -> r,
20+
r ->
21+
context
22+
.getClient()
23+
.resource(r)
24+
.edit(
25+
res -> {
26+
res.addFinalizer(finalizer);
27+
return res;
28+
}));
29+
}
30+
31+
public static <P extends HasMetadata> P removeFinalizer(
32+
P resource, String finalizer, Context<P> context) {
33+
34+
return PrimaryUpdateAndCacheUtils.updateAndCacheResource(
35+
resource,
36+
context,
37+
r -> r,
38+
r ->
39+
context
40+
.getClient()
41+
.resource(r)
42+
.edit(
43+
res -> {
44+
res.removeFinalizer(finalizer);
45+
return res;
46+
}));
47+
}
48+
}

operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/alleventmode/onlyreconcile/AllEventReconciler.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import io.javaoperatorsdk.operator.api.config.ControllerMode;
44
import io.javaoperatorsdk.operator.api.reconciler.Context;
55
import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration;
6+
import io.javaoperatorsdk.operator.api.reconciler.FinalizerUtils;
67
import io.javaoperatorsdk.operator.api.reconciler.Reconciler;
78
import io.javaoperatorsdk.operator.api.reconciler.UpdateControl;
89
import io.javaoperatorsdk.operator.baseapi.alleventmode.AbstractAllEventReconciler;
@@ -22,16 +23,14 @@ public UpdateControl<AllEventCustomResource> reconcile(
2223
}
2324

2425
if (getUseFinalizer() && !resource.hasFinalizer(FINALIZER)) {
25-
resource.addFinalizer(FINALIZER);
26-
context.getClient().resource(resource).update();
26+
FinalizerUtils.patchFinalizer(resource, FINALIZER, context);
2727
return UpdateControl.noUpdate();
2828
}
2929

3030
if (resource.isMarkedForDeletion() && !context.isDeleteEventPresent()) {
3131
setEventOnMarkedForDeletion(true);
3232
if (getUseFinalizer() && resource.hasFinalizer(FINALIZER)) {
33-
resource.removeFinalizer(FINALIZER);
34-
context.getClient().resource(resource).update();
33+
FinalizerUtils.removeFinalizer(resource, FINALIZER, context);
3534
}
3635
}
3736

0 commit comments

Comments
 (0)