Skip to content

Commit f431b34

Browse files
committed
refactor: simplify, make sure empty ignored paths are properly handled
1 parent 61c2e0d commit f431b34

File tree

2 files changed

+32
-27
lines changed

2 files changed

+32
-27
lines changed

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

+18-25
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,7 @@ static <R extends HasMetadata, P extends HasMetadata> Matcher<R, P> matcherFor(
3535
@Override
3636
public Result<R> match(R actualResource, P primary, Context<P> context) {
3737
var desired = dependentResource.desired(primary, context);
38-
return match(desired, actualResource, true, false,
39-
false, Collections.emptyList());
38+
return match(desired, actualResource, true, false, false);
4039
}
4140

4241
public static <R extends HasMetadata> Result<R> match(R desired, R actualResource,
@@ -70,25 +69,24 @@ public static <R extends HasMetadata> Result<R> match(R desired, R actualResourc
7069
*/
7170
public static <R extends HasMetadata> Result<R> match(R desired, R actualResource,
7271
boolean considerMetadata, boolean equality) {
73-
return match(desired, actualResource, considerMetadata, false, equality,
74-
Collections.emptyList());
72+
return match(desired, actualResource, considerMetadata, false, equality);
7573
}
7674

7775
public static <R extends HasMetadata> Result<R> match(R desired, R actualResource,
7876
boolean considerMetadata, String... ignoreList) {
79-
return match(desired, actualResource, considerMetadata, false, false,
80-
Arrays.asList(ignoreList));
77+
return match(desired, actualResource, considerMetadata, false, false, ignoreList);
8178
}
8279

8380
public static <R extends HasMetadata> Result<R> match(R desired, R actualResource,
8481
boolean considerMetadata, boolean metadataEquality, String... ignoreList) {
85-
return match(desired, actualResource, considerMetadata, metadataEquality, false,
86-
Arrays.asList(ignoreList));
82+
return match(desired, actualResource, considerMetadata, metadataEquality, false,ignoreList);
8783
}
8884

8985
private static <R extends HasMetadata> Result<R> match(R desired, R actualResource,
9086
boolean considerMetadata, boolean metadataEquality, boolean specEquality,
91-
List<String> ignoreList) {
87+
String... ignoredPaths) {
88+
final List<String> ignoreList = ignoredPaths != null && ignoredPaths.length > 0 ?
89+
Arrays.asList(ignoredPaths) : Collections.emptyList();
9290

9391
if (specEquality && !ignoreList.isEmpty()) {
9492
throw new IllegalArgumentException(
@@ -195,15 +193,18 @@ private static String getPath(JsonNode n) {
195193

196194
private static List<JsonNode> getDiffsImpactingPathsWithPrefixes(JsonNode diffJsonPatch,
197195
String... prefixes) {
198-
var res = new ArrayList<JsonNode>();
199-
var prefixList = Arrays.asList(prefixes);
200-
for (int i = 0; i < diffJsonPatch.size(); i++) {
201-
var node = diffJsonPatch.get(i);
202-
if (nodeIsChildOf(node, prefixList)) {
203-
res.add(node);
196+
if (prefixes != null && prefixes.length > 0) {
197+
var res = new ArrayList<JsonNode>();
198+
var prefixList = Arrays.asList(prefixes);
199+
for (int i = 0; i < diffJsonPatch.size(); i++) {
200+
var node = diffJsonPatch.get(i);
201+
if (nodeIsChildOf(node, prefixList)) {
202+
res.add(node);
203+
}
204204
}
205+
return res;
205206
}
206-
return res;
207+
return Collections.emptyList();
207208
}
208209

209210
/**
@@ -272,19 +273,11 @@ public static <R extends HasMetadata, P extends HasMetadata> Result<R> match(
272273
return match(desired, actualResource, considerMetadata, metadataEquality, ignorePaths);
273274
}
274275

275-
public static <R extends HasMetadata, P extends HasMetadata> Result<R> match(
276-
KubernetesDependentResource<R, P> dependentResource, R actualResource, P primary,
277-
Context<P> context, boolean considerMetadata) {
278-
final var desired = dependentResource.desired(primary, context);
279-
return match(desired, actualResource, considerMetadata, false);
280-
}
281-
282276
public static <R extends HasMetadata, P extends HasMetadata> Result<R> match(
283277
KubernetesDependentResource<R, P> dependentResource, R actualResource, P primary,
284278
Context<P> context, boolean considerMetadata, boolean metadataEquality,
285279
boolean strongEquality) {
286280
final var desired = dependentResource.desired(primary, context);
287-
return match(desired, actualResource, considerMetadata, metadataEquality, strongEquality,
288-
Collections.emptyList());
281+
return match(desired, actualResource, considerMetadata, metadataEquality, strongEquality);
289282
}
290283
}

operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/GenericKubernetesResourceMatcherTest.java

+14-2
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,18 @@ void doesNotMatchChangedValues() {
7676
}
7777

7878
@Test
79-
void doesNotMatchIgnoredPaths() {
79+
void doesNotMatchChangedValuesWhenNoIgnoredPathsAreProvided() {
80+
actual = createDeployment();
81+
actual.getSpec().setReplicas(2);
82+
assertThat(GenericKubernetesResourceMatcher
83+
.match(dependentResource, actual, null, context, true).matched())
84+
.withFailMessage(
85+
"Should not have matched because values have changed and no ignored path is provided")
86+
.isFalse();
87+
}
88+
89+
@Test
90+
void doesNotAttemptToMatchIgnoredPaths() {
8091
actual = createDeployment();
8192
actual.getSpec().setReplicas(2);
8293
assertThat(GenericKubernetesResourceMatcher
@@ -114,7 +125,8 @@ void matchesMetadata() {
114125

115126
assertThat(GenericKubernetesResourceMatcher
116127
.match(dependentResource, actual, null, context, true, false).matched())
117-
.withFailMessage("Should match when strong equality is not considered and only additive changes are made")
128+
.withFailMessage(
129+
"Should match when strong equality is not considered and only additive changes are made")
118130
.isTrue();
119131

120132
}

0 commit comments

Comments
 (0)