-
Notifications
You must be signed in to change notification settings - Fork 20
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix: add name validation for custom resource templates
This further propagates the label constraints of Linode resources to their associated CustomResourceDefinition templates via the Kubernetes Validation Rules feature.
- Loading branch information
1 parent
d76d945
commit f53293a
Showing
3 changed files
with
51 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
12 changes: 12 additions & 0 deletions
12
config/crd/patches/validation_in_linodeclustertemplates.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
# The following patch adds additional constraints after the built-in name validation for the CRD | ||
- op: add | ||
path: /spec/versions/0/schema/openAPIV3Schema/properties/metadata/properties | ||
value: | ||
name: | ||
type: string | ||
x-kubernetes-validations: | ||
- rule: 3 <= size(self) && size(self) <= 26 | ||
message: >- | ||
custom validation: | ||
template: must be between 3..26 characters, | ||
linode nodebalancer: labels must be between 3..32 characters |
27 changes: 27 additions & 0 deletions
27
config/crd/patches/validation_in_linodemachinetemplates.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
# The following patch adds additional constraints after the built-in name validation for the CRD | ||
- op: add | ||
path: /spec/versions/0/schema/openAPIV3Schema/properties/metadata/properties | ||
value: | ||
name: | ||
type: string | ||
x-kubernetes-validations: | ||
- rule: 3 <= size(self) && size(self) <= 58 | ||
message: >- | ||
custom validation: | ||
template: must be between 3..58 characters, | ||
linode instance: labels must be between 3..64 characters | ||
- rule: self.matches('^[[:alnum:]]([-_.[:alnum:]]+[[:alnum:]])*$') | ||
message: >- | ||
custom validation: | ||
linode instance: labels: | ||
must begin and end with an alphanumeric character, | ||
may only consist of alphanumeric characters, hyphens (-), underscores (_) or periods (.), | ||
cannot have two hyphens (--), underscores (__) or periods (..) in a row, | ||
regex used for validation is: '^[[:alnum:]]([-_.[:alnum:]]+[[:alnum:]])*$', | ||
see: https://www.linode.com/docs/api/linode-instances/#linode-create | ||
# TODO: Consider combining this into the regex above to minimize time complexity | ||
# See: https://github.com/google/cel-spec/blob/master/doc/langdef.md#time-complexity | ||
- rule: "!(self.contains('--') || self.contains('__') || self.contains('..'))" | ||
message: >- | ||
custom validation: | ||
linode instance: labels cannot have two hyphens (--), underscores (__) or periods (..) in a row |