Skip to content

Commit 66b82ab

Browse files
committed
fix: patchResourceAndStatus on status patch should generate diff only from status
Signed-off-by: Attila Mészáros <[email protected]>
1 parent 0644eca commit 66b82ab

File tree

3 files changed

+9
-9
lines changed

3 files changed

+9
-9
lines changed

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/ReconciliationDispatcher.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import io.fabric8.kubernetes.api.model.KubernetesResourceList;
1111
import io.fabric8.kubernetes.api.model.Namespaced;
1212
import io.fabric8.kubernetes.api.model.ObjectMeta;
13+
import io.fabric8.kubernetes.client.CustomResource;
1314
import io.fabric8.kubernetes.client.KubernetesClientException;
1415
import io.fabric8.kubernetes.client.dsl.MixedOperation;
1516
import io.fabric8.kubernetes.client.dsl.Resource;
@@ -477,6 +478,7 @@ public R patchStatus(R resource, R originalResource) {
477478
}
478479
}
479480

481+
@SuppressWarnings("unchecked")
480482
private R editStatus(R resource, R originalResource) {
481483
String resourceVersion = resource.getMetadata().getResourceVersion();
482484
// the cached resource should not be changed in any circumstances
@@ -486,7 +488,11 @@ private R editStatus(R resource, R originalResource) {
486488
clonedOriginal.getMetadata().setResourceVersion(null);
487489
resource.getMetadata().setResourceVersion(null);
488490
var res = resource(clonedOriginal);
489-
return res.editStatus(r -> resource);
491+
return res.editStatus(
492+
r -> {
493+
((CustomResource) r).setStatus(((CustomResource) resource).getStatus());
494+
return r;
495+
});
490496
} finally {
491497
// restore initial resource version
492498
clonedOriginal.getMetadata().setResourceVersion(resourceVersion);

operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/patchresourceandstatusnossa/PatchResourceAndStatusNoSSAIT.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,7 @@ void updatesSubResourceStatus() {
3939
assertThat(TestUtils.getNumberOfExecutions(operator)).isEqualTo(1);
4040
assertThat(customResource.getStatus().getState())
4141
.isEqualTo(PatchResourceAndStatusNoSSAStatus.State.SUCCESS);
42-
assertThat(
43-
customResource
44-
.getMetadata()
45-
.getAnnotations()
46-
.get(TEST_ANNOTATION))
47-
.isNotNull();
42+
assertThat(customResource.getMetadata().getAnnotations().get(TEST_ANNOTATION)).isNotNull();
4843
}
4944

5045
void awaitStatusUpdated(String name) {
@@ -65,7 +60,7 @@ public PatchResourceAndStatusNoSSACustomResource createTestCustomResource(String
6560
PatchResourceAndStatusNoSSACustomResource resource =
6661
new PatchResourceAndStatusNoSSACustomResource();
6762
resource.setMetadata(new ObjectMetaBuilder().withName("doubleupdateresource-" + id).build());
68-
resource.getMetadata().setAnnotations(Map.of(TEST_ANNOTATION,TEST_ANNOTATION_VALUE));
63+
resource.getMetadata().setAnnotations(Map.of(TEST_ANNOTATION, TEST_ANNOTATION_VALUE));
6964
resource.setSpec(new PatchResourceAndStatusNoSSASpec());
7065
resource.getSpec().setValue(id);
7166
return resource;

operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/patchresourceandstatusnossa/PatchResourceAndStatusNoSSAReconciler.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package io.javaoperatorsdk.operator.baseapi.patchresourceandstatusnossa;
22

3-
import java.util.HashMap;
43
import java.util.concurrent.atomic.AtomicInteger;
54

65
import org.slf4j.Logger;

0 commit comments

Comments
 (0)