You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: keps/sig-api-machinery/2876-crd-validation-expression-language/README.md
+4-3Lines changed: 4 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -232,12 +232,13 @@ Example Validation Rules:
232
232
| `self.minReplicas <= self.replicas <= self.maxReplicas` | Validate that the three fields defining replicas are ordered appropriately |
233
233
| `'Available' in self.stateCounts` | Validate that an entry with the 'Available' key exists in a map |
234
234
| `(size(self.list1) == 0) != (size(self.list2) == 0)` | Validate that one of two lists is non-empty, but not both |
235
-
| `!('MY_ENV' in self.envars) || self['MY_ENV'].matches('^[a-zA-Z]*$')` | Validate the value of a map for a specific key, if it is in the map |
235
+
| `!('MY_KEY' in self.map1) || self['MY_KEY].matches('^[a-zA-Z]*$')` | Validate the value of a map for a specific key, if it is in the map |
236
+
| `self.envars.filter(e, e.name = 'MY_ENV').all(e, e.value.matches('^[a-zA-Z]*$')` | Validate the 'value' field of a listMap entry where key field 'name' is 'MY_ENV' |
236
237
| `has(self.expired) && self.created + self.ttl < self.expired` | Validate that 'expired' date is after a 'create' date plus a 'ttl' duration |
237
238
| `self.health.startsWith('ok')` | Validate a 'health' string field has the prefix 'ok' |
238
239
| `self.widgets.exists(w, w.key == 'x' && w.foo < 10)` | Validate that the 'foo' property of a listMap item with a key 'x' is less than 10 |
239
-
| `type(self) == string ? self == '100%' : self == 1000` | Validate an int-or-string field for both the the int and string cases |
240
-
| `self.metadata.name == 'singleton'` | Validate that an object's name matches a specific value (making it a singleton) |
240
+
| `type(self) == string ? self == '100%' : self == 1000` | Validate an int-or-string field for both the the int and string cases |
241
+
| `self.metadata.name == 'singleton'` | Validate that an object's name matches a specific value (making it a singleton) |
241
242
| `self.set1.all(e, !(e in self.set2))` | Validate that two listSets are disjoint |
242
243
| `size(self.names) == size(self.details) && self.names.all(n, n in self.details)` | Validate the 'details' map is keyed by the items in the 'names' listSet |
0 commit comments