Skip to content

Commit c0732f7

Browse files
committed
work around for owner reference
1 parent 2c0d7f9 commit c0732f7

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/SSABasedGenericKubernetesResourceMatcher.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
import com.fasterxml.jackson.core.type.TypeReference;
1515
import com.fasterxml.jackson.databind.ObjectMapper;
1616

17+
// https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#fieldsv1-v1-meta
18+
// https://github.com/kubernetes-sigs/structured-merge-diff
1719
// todo add migration integration test
1820
public class SSABasedGenericKubernetesResourceMatcher<R extends HasMetadata> {
1921

@@ -60,11 +62,27 @@ public boolean matches(R actual, R desired, Context<?> context) {
6062
managedFieldsEntry.getFieldsV1().getAdditionalProperties(), objectMapper);
6163
removeIrrelevantValues(desiredMap);
6264

65+
// todo, just copy all the fields?
66+
// this is kind strange fix for:
67+
// https://kubernetes.slack.com/archives/C0EG7JC6T/p1685706853248489
68+
removeOwnerRefernces(desiredMap);
69+
removeOwnerRefernces(prunedActual);
70+
6371
log.trace("Pruned actual: \n {} \n desired: \n {} ", prunedActual, desiredMap);
6472

6573
return prunedActual.equals(desiredMap);
6674
}
6775

76+
private void removeOwnerRefernces(HashMap<String, Object> resourceMap) {
77+
var metadata = (Map<String, Object>) resourceMap.get(METADATA_KEY);
78+
if (metadata != null) {
79+
metadata.remove("ownerReferences");
80+
if (metadata.isEmpty()) {
81+
resourceMap.remove(METADATA_KEY);
82+
}
83+
}
84+
}
85+
6886
private void removeIrrelevantValues(HashMap<String, Object> desiredMap) {
6987
var metadata = (Map<String, Object>) desiredMap.get(METADATA_KEY);
7088
metadata.remove("name");
@@ -74,7 +92,6 @@ private void removeIrrelevantValues(HashMap<String, Object> desiredMap) {
7492
}
7593
desiredMap.remove("kind");
7694
desiredMap.remove("apiVersion");
77-
7895
}
7996

8097
private void pruneActualAccordingManagedFields(Map<String, Object> result,

0 commit comments

Comments
 (0)