Skip to content

Commit 94046bb

Browse files
committed
fix: make sure match can handle ConfigMaps & Secrets
1 parent fb9eff8 commit 94046bb

File tree

1 file changed

+24
-31
lines changed

1 file changed

+24
-31
lines changed

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

+24-31
Original file line numberDiff line numberDiff line change
@@ -23,24 +23,7 @@ private GenericKubernetesResourceMatcher(KubernetesDependentResource<R, P> depen
2323
@SuppressWarnings({"unchecked", "rawtypes"})
2424
static <R extends HasMetadata, P extends HasMetadata> Matcher<R, P> matcherFor(
2525
Class<R> resourceType, KubernetesDependentResource<R, P> dependentResource) {
26-
if (Secret.class.isAssignableFrom(resourceType)) {
27-
return (actualResource, primary, context) -> {
28-
final var desired = dependentResource.desired(primary, context);
29-
return Result.computed(
30-
ResourceComparators.compareSecretData((Secret) desired, (Secret) actualResource),
31-
desired);
32-
};
33-
} else if (ConfigMap.class.isAssignableFrom(resourceType)) {
34-
return (actualResource, primary, context) -> {
35-
final var desired = dependentResource.desired(primary, context);
36-
return Result.computed(
37-
ResourceComparators.compareConfigMapData((ConfigMap) desired,
38-
(ConfigMap) actualResource),
39-
desired);
40-
};
41-
} else {
42-
return new GenericKubernetesResourceMatcher(dependentResource);
43-
}
26+
return new GenericKubernetesResourceMatcher(dependentResource);
4427
}
4528

4629
@Override
@@ -49,8 +32,8 @@ public Result<R> match(R actualResource, P primary, Context<P> context) {
4932
return match(desired, actualResource, false);
5033
}
5134

52-
public static <R extends HasMetadata> Result<R> match(
53-
R desired, R actualResource, boolean considerMetadata) {
35+
public static <R extends HasMetadata> Result<R> match(R desired, R actualResource,
36+
boolean considerMetadata) {
5437
if (considerMetadata) {
5538
final var desiredMetadata = desired.getMetadata();
5639
final var actualMetadata = actualResource.getMetadata();
@@ -62,20 +45,30 @@ public static <R extends HasMetadata> Result<R> match(
6245
}
6346
}
6447

65-
final var objectMapper = ConfigurationServiceProvider.instance().getObjectMapper();
48+
if (desired instanceof ConfigMap) {
49+
return Result.computed(
50+
ResourceComparators.compareConfigMapData((ConfigMap) desired, (ConfigMap) actualResource),
51+
desired);
52+
} else if (desired instanceof Secret) {
53+
return Result.computed(
54+
ResourceComparators.compareSecretData((Secret) desired, (Secret) actualResource),
55+
desired);
56+
} else {
57+
final var objectMapper = ConfigurationServiceProvider.instance().getObjectMapper();
6658

67-
// reflection will be replaced by this:
68-
// https://github.com/fabric8io/kubernetes-client/issues/3816
69-
var desiredSpecNode = objectMapper.valueToTree(ReconcilerUtils.getSpec(desired));
70-
var actualSpecNode = objectMapper.valueToTree(ReconcilerUtils.getSpec(actualResource));
71-
var diffJsonPatch = JsonDiff.asJson(desiredSpecNode, actualSpecNode);
72-
for (int i = 0; i < diffJsonPatch.size(); i++) {
73-
String operation = diffJsonPatch.get(i).get("op").asText();
74-
if (!operation.equals("add")) {
75-
return Result.computed(false, desired);
59+
// reflection will be replaced by this:
60+
// https://github.com/fabric8io/kubernetes-client/issues/3816
61+
var desiredSpecNode = objectMapper.valueToTree(ReconcilerUtils.getSpec(desired));
62+
var actualSpecNode = objectMapper.valueToTree(ReconcilerUtils.getSpec(actualResource));
63+
var diffJsonPatch = JsonDiff.asJson(desiredSpecNode, actualSpecNode);
64+
for (int i = 0; i < diffJsonPatch.size(); i++) {
65+
String operation = diffJsonPatch.get(i).get("op").asText();
66+
if (!operation.equals("add")) {
67+
return Result.computed(false, desired);
68+
}
7669
}
70+
return Result.computed(true, desired);
7771
}
78-
return Result.computed(true, desired);
7972
}
8073

8174
/**

0 commit comments

Comments
 (0)