Skip to content

Commit a96e6ad

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

File tree

2 files changed

+33
-27
lines changed

2 files changed

+33
-27
lines changed

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

Lines changed: 19 additions & 25 deletions
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,25 @@ 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 =
89+
ignoredPaths != null && ignoredPaths.length > 0 ? Arrays.asList(ignoredPaths)
90+
: Collections.emptyList();
9291

9392
if (specEquality && !ignoreList.isEmpty()) {
9493
throw new IllegalArgumentException(
@@ -195,15 +194,18 @@ private static String getPath(JsonNode n) {
195194

196195
private static List<JsonNode> getDiffsImpactingPathsWithPrefixes(JsonNode diffJsonPatch,
197196
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);
197+
if (prefixes != null && prefixes.length > 0) {
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);
204+
}
204205
}
206+
return res;
205207
}
206-
return res;
208+
return Collections.emptyList();
207209
}
208210

209211
/**
@@ -272,19 +274,11 @@ public static <R extends HasMetadata, P extends HasMetadata> Result<R> match(
272274
return match(desired, actualResource, considerMetadata, metadataEquality, ignorePaths);
273275
}
274276

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-
282277
public static <R extends HasMetadata, P extends HasMetadata> Result<R> match(
283278
KubernetesDependentResource<R, P> dependentResource, R actualResource, P primary,
284279
Context<P> context, boolean considerMetadata, boolean metadataEquality,
285280
boolean strongEquality) {
286281
final var desired = dependentResource.desired(primary, context);
287-
return match(desired, actualResource, considerMetadata, metadataEquality, strongEquality,
288-
Collections.emptyList());
282+
return match(desired, actualResource, considerMetadata, metadataEquality, strongEquality);
289283
}
290284
}

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

Lines changed: 14 additions & 2 deletions
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)