Skip to content

Commit 15a9d66

Browse files
authored
Improved ignored annotations in PvcOperator (#8674)
Signed-off-by: Jakub Scholz <www@scholzj.com>
1 parent 7dde5a6 commit 15a9d66

File tree

2 files changed

+35
-1
lines changed

2 files changed

+35
-1
lines changed

operator-common/src/main/java/io/strimzi/operator/common/operator/resource/PvcOperator.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ public class PvcOperator extends AbstractNamespacedResourceOperator<KubernetesCl
2323
private static final ReconciliationLogger LOGGER = ReconciliationLogger.create(PvcOperator.class);
2424
private static final Pattern IGNORABLE_PATHS = Pattern.compile(
2525
"^(/metadata/managedFields" +
26-
"|/metadata/annotations/pv.kubernetes.io~1bind-completed" +
26+
"|/metadata/annotations/pv.kubernetes.io~1.*" +
27+
"|/metadata/annotations/volume.beta.kubernetes.io~1.*" +
28+
"|/metadata/annotations/volume.kubernetes.io~1.*" +
2729
"|/metadata/finalizers" +
2830
"|/metadata/creationTimestamp" +
2931
"|/metadata/resourceVersion" +

operator-common/src/test/java/io/strimzi/operator/common/operator/resource/PvcOperatorTest.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,12 @@
1212
import io.fabric8.kubernetes.client.KubernetesClient;
1313
import io.fabric8.kubernetes.client.dsl.MixedOperation;
1414
import io.fabric8.kubernetes.client.dsl.Resource;
15+
import io.strimzi.operator.common.Reconciliation;
1516
import io.vertx.core.Vertx;
1617
import org.junit.jupiter.api.Test;
1718

1819
import java.util.Collections;
20+
import java.util.Map;
1921

2022
import static org.hamcrest.CoreMatchers.is;
2123
import static org.hamcrest.MatcherAssert.assertThat;
@@ -103,4 +105,34 @@ public void testRevertingImmutableFields() {
103105
assertThat(current.getSpec().getSelector(), is(desired.getSpec().getSelector()));
104106
assertThat(current.getSpec().getVolumeName(), is(desired.getSpec().getVolumeName()));
105107
}
108+
109+
@Test
110+
public void testIgnoredAnnotationsInDiff() {
111+
PersistentVolumeClaim pvcWithDefaultAnnos = new PersistentVolumeClaimBuilder(resource("my-pvc"))
112+
.editMetadata()
113+
.withAnnotations(Map.of("strimzi.io/delete-claim", "false"))
114+
.endMetadata()
115+
.build();
116+
PersistentVolumeClaim pvcWithOtherAnnos = new PersistentVolumeClaimBuilder(pvcWithDefaultAnnos)
117+
.editMetadata()
118+
.withAnnotations(Map.of("strimzi.io/delete-claim", "false",
119+
"pv.kubernetes.io/bound-by-controller", "my-controller",
120+
"some.annotation.io/key", "value"))
121+
.endMetadata()
122+
.build();
123+
PersistentVolumeClaim pvcWithIgnoredAnnos = new PersistentVolumeClaimBuilder(pvcWithDefaultAnnos)
124+
.editMetadata()
125+
.withAnnotations(Map.of("strimzi.io/delete-claim", "false",
126+
"pv.kubernetes.io/bound-by-controller", "my-controller",
127+
"volume.beta.kubernetes.io/storage-provisioner", "my-provisioner",
128+
"volume.kubernetes.io/storage-resizer", "my-resizer"))
129+
.endMetadata()
130+
.build();
131+
132+
PvcOperator op = createResourceOperations(vertx, mock(KubernetesClient.class));
133+
134+
assertThat(op.diff(Reconciliation.DUMMY_RECONCILIATION, "my-pvc", pvcWithDefaultAnnos, pvcWithDefaultAnnos).isEmpty(), is(true));
135+
assertThat(op.diff(Reconciliation.DUMMY_RECONCILIATION, "my-pvc", pvcWithDefaultAnnos, pvcWithIgnoredAnnos).isEmpty(), is(true));
136+
assertThat(op.diff(Reconciliation.DUMMY_RECONCILIATION, "my-pvc", pvcWithDefaultAnnos, pvcWithOtherAnnos).isEmpty(), is(false));
137+
}
106138
}

0 commit comments

Comments
 (0)