@@ -30,7 +30,8 @@ static <R extends HasMetadata, P extends HasMetadata> Matcher<R, P> matcherFor(
30
30
@ Override
31
31
public Result <R > match (R actualResource , P primary , Context <P > context ) {
32
32
var desired = dependentResource .desired (primary , context );
33
- return match (desired , actualResource , false , false );
33
+ return match (desired , actualResource , true , false ,
34
+ false , Collections .emptyList ());
34
35
}
35
36
36
37
public static <R extends HasMetadata > Result <R > match (R desired , R actualResource ,
@@ -64,18 +65,27 @@ public static <R extends HasMetadata> Result<R> match(R desired, R actualResourc
64
65
*/
65
66
public static <R extends HasMetadata > Result <R > match (R desired , R actualResource ,
66
67
boolean considerMetadata , boolean equality ) {
67
- return match (desired , actualResource , considerMetadata , equality , Collections .emptyList ());
68
+ return match (desired , actualResource , considerMetadata , false , equality ,
69
+ Collections .emptyList ());
68
70
}
69
71
70
72
public static <R extends HasMetadata > Result <R > match (R desired , R actualResource ,
71
73
boolean considerMetadata , String ... ignoreList ) {
72
- return match (desired , actualResource , considerMetadata , false , Arrays .asList (ignoreList ));
74
+ return match (desired , actualResource , considerMetadata , false , false ,
75
+ Arrays .asList (ignoreList ));
73
76
}
74
77
78
+ public static <R extends HasMetadata > Result <R > match (R desired , R actualResource ,
79
+ boolean considerMetadata , boolean metadataEquality , String ... ignoreList ) {
80
+ return match (desired , actualResource , considerMetadata , metadataEquality , false ,
81
+ Arrays .asList (ignoreList ));
82
+ }
75
83
76
84
private static <R extends HasMetadata > Result <R > match (R desired , R actualResource ,
77
- boolean considerMetadata , boolean equality , List <String > ignoreList ) {
78
- if (equality && !ignoreList .isEmpty ()) {
85
+ boolean considerMetadata , boolean metadataEquality , boolean specEquality ,
86
+ List <String > ignoreList ) {
87
+
88
+ if (specEquality && !ignoreList .isEmpty ()) {
79
89
throw new IllegalArgumentException (
80
90
"Equality should be false in case of ignore list provided" );
81
91
}
@@ -86,10 +96,10 @@ private static <R extends HasMetadata> Result<R> match(R desired, R actualResour
86
96
var actualNode = objectMapper .valueToTree (actualResource );
87
97
var wholeDiffJsonPatch = JsonDiff .asJson (desiredNode , actualNode );
88
98
89
- var considerIgnoreList = !equality && !ignoreList .isEmpty ();
99
+ var considerIgnoreList = !specEquality && !ignoreList .isEmpty ();
90
100
91
101
if (considerMetadata ) {
92
- if (equality ) {
102
+ if (metadataEquality ) {
93
103
final var desiredMetadata = desired .getMetadata ();
94
104
final var actualMetadata = actualResource .getMetadata ();
95
105
@@ -123,7 +133,7 @@ private static <R extends HasMetadata> Result<R> match(R desired, R actualResour
123
133
// In case of equality is set to true, no diffs are allowed, so we return early if diffs exist
124
134
// On contrary (if equality is false), "add" is allowed for cases when for some
125
135
// resources Kubernetes fills-in values into spec.
126
- if (equality && !specDiffJsonPatch .isEmpty ()) {
136
+ if (specEquality && !specDiffJsonPatch .isEmpty ()) {
127
137
return Result .computed (false , desired );
128
138
}
129
139
if (considerIgnoreList ) {
@@ -216,8 +226,11 @@ public static <R extends HasMetadata, P extends HasMetadata> Result<R> match(
216
226
* @param <R> the type of resource we want to determine whether they match or not
217
227
* @param <P> the type of primary resources associated with the secondary resources we want to
218
228
* match
219
- * @param ignorePaths are paths in the resource that are ignored on matching. Anny related change
220
- * on a calculated JSON Patch between actual and desired will be ignored.
229
+ * @param ignorePaths are paths in the resource that are ignored on matching (basically an ignore
230
+ * list). All changes with a target prefix path on a calculated JSON Patch between actual
231
+ * and desired will be ignored. If there are other changes, non-present on ignore list
232
+ * match fails.
233
+ *
221
234
*/
222
235
public static <R extends HasMetadata , P extends HasMetadata > Result <R > match (
223
236
KubernetesDependentResource <R , P > dependentResource , R actualResource , P primary ,
@@ -226,10 +239,27 @@ public static <R extends HasMetadata, P extends HasMetadata> Result<R> match(
226
239
return match (desired , actualResource , considerMetadata , ignorePaths );
227
240
}
228
241
242
+ public static <R extends HasMetadata , P extends HasMetadata > Result <R > match (
243
+ KubernetesDependentResource <R , P > dependentResource , R actualResource , P primary ,
244
+ Context <P > context , boolean considerMetadata , boolean metadataEquality ,
245
+ String ... ignorePaths ) {
246
+ final var desired = dependentResource .desired (primary , context );
247
+ return match (desired , actualResource , considerMetadata , metadataEquality , ignorePaths );
248
+ }
249
+
229
250
public static <R extends HasMetadata , P extends HasMetadata > Result <R > match (
230
251
KubernetesDependentResource <R , P > dependentResource , R actualResource , P primary ,
231
252
Context <P > context , boolean considerMetadata ) {
232
253
final var desired = dependentResource .desired (primary , context );
233
254
return match (desired , actualResource , considerMetadata , false );
234
255
}
256
+
257
+ public static <R extends HasMetadata , P extends HasMetadata > Result <R > match (
258
+ KubernetesDependentResource <R , P > dependentResource , R actualResource , P primary ,
259
+ Context <P > context , boolean considerMetadata , boolean metadataEquality ,
260
+ boolean strongEquality ) {
261
+ final var desired = dependentResource .desired (primary , context );
262
+ return match (desired , actualResource , considerMetadata , metadataEquality , strongEquality ,
263
+ Collections .emptyList ());
264
+ }
235
265
}
0 commit comments