Skip to content

Commit 6c047f9

Browse files
committed
wip
Signed-off-by: Attila Mészáros <[email protected]>
1 parent 00b00cd commit 6c047f9

File tree

2 files changed

+25
-9
lines changed

2 files changed

+25
-9
lines changed

operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/ssaissue/finalizer/SSAFinalizerIssueIT.java

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
package io.javaoperatorsdk.operator.baseapi.ssaissue.finalizer;
22

3+
import java.util.List;
4+
35
import org.junit.jupiter.api.Test;
46
import org.junit.jupiter.api.extension.RegisterExtension;
57

68
import io.fabric8.kubernetes.api.model.ObjectMetaBuilder;
9+
import io.fabric8.kubernetes.client.dsl.base.PatchContext;
10+
import io.fabric8.kubernetes.client.dsl.base.PatchType;
711
import io.javaoperatorsdk.operator.junit.LocallyRunOperatorExtension;
812

913
import static org.assertj.core.api.Assertions.assertThat;
@@ -20,20 +24,34 @@ class SSAFinalizerIssueIT {
2024
.build();
2125

2226
/**
23-
* Showcases the problem when we add a finalizer and in the spec a list is initialized with an
24-
* empty list by default. This at the end results in a change that when adding the finalizer, the
25-
* SSA patch deletes the initial values in the spec.
27+
* Showcases possibly a case with SSA: When the resource is created with the same field manager
28+
* that used by the controller, when adding a finalizer, it deletes other parts of the spec.
2629
*/
2730
@Test
2831
void addingFinalizerRemoveListValues() {
29-
operator.create(testResource());
32+
var fieldManager =
33+
operator
34+
.getRegisteredControllerForReconcile(SSAFinalizerIssueReconciler.class)
35+
.getConfiguration()
36+
.fieldManager();
37+
38+
operator
39+
.getKubernetesClient()
40+
.resource(testResource())
41+
.inNamespace(operator.getNamespace())
42+
.patch(
43+
new PatchContext.Builder()
44+
.withFieldManager(fieldManager)
45+
.withForce(true)
46+
.withPatchType(PatchType.SERVER_SIDE_APPLY)
47+
.build());
3048

3149
await()
3250
.untilAsserted(
3351
() -> {
3452
var actual = operator.get(SSAFinalizerIssueCustomResource.class, TEST_1);
3553
assertThat(actual.getFinalizers()).hasSize(1);
36-
assertThat(actual.getSpec().getList()).isEmpty();
54+
assertThat(actual.getSpec()).isNull();
3755
});
3856
}
3957

@@ -42,6 +60,7 @@ SSAFinalizerIssueCustomResource testResource() {
4260
res.setMetadata(new ObjectMetaBuilder().withName(TEST_1).build());
4361
res.setSpec(new SSAFinalizerIssueSpec());
4462
res.getSpec().setValue("val");
63+
res.getSpec().setList(List.of("val1", "val2"));
4564
return res;
4665
}
4766
}

operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/ssaissue/finalizer/SSAFinalizerIssueSpec.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,12 @@
11
package io.javaoperatorsdk.operator.baseapi.ssaissue.finalizer;
22

3-
import java.util.ArrayList;
43
import java.util.List;
54

65
public class SSAFinalizerIssueSpec {
76

87
private String value;
98

10-
// List is initialized, that at the end becomes problematic when adding the finalizer
11-
// If the list is not initialized like this (this its null) it works fine
12-
private List<String> list = new ArrayList<>();
9+
private List<String> list = null;
1310

1411
public String getValue() {
1512
return value;

0 commit comments

Comments
 (0)