✨ Add support for k8s:enum tag. #1250
Draft
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR introduces support for a +k8s:enum marker to automatically generate enum validation for Custom Resource Definitions (CRDs). This tag is used by native types to validate enums using declarative Validations.
This change simplifies the process of defining enums in CRDs. Previously, developers had to manually specify all enum values using the +kubebuilder:validation:Enum marker for every field of an enum type. This was repetitive and prone to errors, especially when enum values changed.
With this new +k8s:enum type-level marker, controller-gen automatically discovers all constant values associated with a string-based enum type and generates the corresponding validation in the OpenAPI schema. This makes the process more maintainable and less error-prone.