From 603cc5b4ea930b3efe220c5c715d3322f5cd07aa Mon Sep 17 00:00:00 2001 From: Lalit Chauhan Date: Fri, 26 Dec 2025 18:27:13 +0000 Subject: [PATCH] Promote validation-gen tags to Stable Promote the stability of the following tags defined in validation-gen/validator directory to Stable. These tags were introduced in the API types (staging/src/k8s.io/api) in the following commits: - k8s:enum (2025-10-15): 9020a177318 https://github.com/kubernetes/kubernetes/commit/9020a177318 - k8s:format (2025-09-16): 8606fa03dc7 https://github.com/kubernetes/kubernetes/commit/8606fa03dc7 - k8s:listMapKey (2025-07-16): 6a2d5a1e644 https://github.com/kubernetes/kubernetes/commit/6a2d5a1e644 - k8s:listType (2025-07-16): 6a2d5a1e644 https://github.com/kubernetes/kubernetes/commit/6a2d5a1e644 - k8s:maxItems (2025-09-18): 11df50453fc https://github.com/kubernetes/kubernetes/commit/11df50453fc - k8s:maxLength (2025-10-22): 6fa8cb4a993 https://github.com/kubernetes/kubernetes/commit/6fa8cb4a993 - k8s:minimum (2024-11-30): e08bbf254c4 https://github.com/kubernetes/kubernetes/commit/e08bbf254c4 - k8s:optional (2024-12-19): 0f4786536f7 https://github.com/kubernetes/kubernetes/commit/0f4786536f7 - k8s:required (2025-09-16): 8606fa03dc7 https://github.com/kubernetes/kubernetes/commit/8606fa03dc7 - k8s:subfield (2025-04-14): 229c6b13ca7 https://github.com/kubernetes/kubernetes/commit/229c6b13ca7 - k8s:unionMember (2025-10-23): 8a6b3caaa0d https://github.com/kubernetes/kubernetes/commit/8a6b3caaa0d - k8s:zeroOrOneOfMember (2025-07-16): 6a2d5a1e644 https://github.com/kubernetes/kubernetes/commit/6a2d5a1e644 - k8s:item (2025-07-16): 6a2d5a1e644 https://github.com/kubernetes/kubernetes/commit/6a2d5a1e644 --- .../code-generator/cmd/validation-gen/validators/enum.go | 2 +- .../code-generator/cmd/validation-gen/validators/format.go | 2 +- .../code-generator/cmd/validation-gen/validators/item.go | 2 +- .../code-generator/cmd/validation-gen/validators/limits.go | 6 +++--- .../code-generator/cmd/validation-gen/validators/list.go | 4 ++-- .../cmd/validation-gen/validators/required.go | 4 ++-- .../cmd/validation-gen/validators/subfield.go | 5 ++--- .../code-generator/cmd/validation-gen/validators/union.go | 2 +- .../cmd/validation-gen/validators/zeroorone.go | 2 +- 9 files changed, 14 insertions(+), 15 deletions(-) diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/enum.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/enum.go index ffc7ff27d10..2c109ccd753 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/enum.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/enum.go @@ -194,7 +194,7 @@ func (etv *enumTagValidator) GetValidations(context Context, _ codetags.Tag) (Va func (etv *enumTagValidator) Docs() TagDoc { return TagDoc{ Tag: etv.TagName(), - StabilityLevel: Beta, + StabilityLevel: Stable, Scopes: etv.ValidScopes().UnsortedList(), Description: "Indicates that a string type is an enum. All constant values of this type are considered values in the enum unless excluded using +k8s:enumExclude.", } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/format.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/format.go index 54322e05626..05f7ee87943 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/format.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/format.go @@ -120,7 +120,7 @@ func getFormatValidationFunction(format string) (FunctionGen, error) { func (ftv formatTagValidator) Docs() TagDoc { return TagDoc{ Tag: ftv.TagName(), - StabilityLevel: Beta, + StabilityLevel: Stable, Scopes: ftv.ValidScopes().UnsortedList(), Description: "Indicates that a string field has a particular format.", Payloads: []TagPayloadDoc{{ // Keep this list alphabetized. diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/item.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/item.go index 8fc98e33f90..6f570597f4c 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/item.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/item.go @@ -249,7 +249,7 @@ func parseTypedValue(value string, argType codetags.ArgType) (any, codetags.Valu func (itv itemTagValidator) Docs() TagDoc { doc := TagDoc{ Tag: itv.TagName(), - StabilityLevel: Alpha, + StabilityLevel: Stable, Scopes: itv.ValidScopes().UnsortedList(), Description: "Declares a validation for an item of a slice declared as a +k8s:listType=map. " + "The item to match is declared by providing field-value pair arguments. All key fields must be specified.", diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/limits.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/limits.go index 84ccc179464..bab98acf943 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/limits.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/limits.go @@ -79,7 +79,7 @@ func (maxLengthTagValidator) GetValidations(context Context, tag codetags.Tag) ( func (mltv maxLengthTagValidator) Docs() TagDoc { return TagDoc{ Tag: mltv.TagName(), - StabilityLevel: Beta, + StabilityLevel: Stable, Scopes: mltv.ValidScopes().UnsortedList(), Description: "Indicates that a string field has a limit on its length.", Payloads: []TagPayloadDoc{{ @@ -137,7 +137,7 @@ func (maxItemsTagValidator) GetValidations(context Context, tag codetags.Tag) (V func (mitv maxItemsTagValidator) Docs() TagDoc { return TagDoc{ Tag: mitv.TagName(), - StabilityLevel: Beta, + StabilityLevel: Stable, Scopes: mitv.ValidScopes().UnsortedList(), Description: "Indicates that a list has a limit on its size.", Payloads: []TagPayloadDoc{{ @@ -187,7 +187,7 @@ func (minimumTagValidator) GetValidations(context Context, tag codetags.Tag) (Va func (mtv minimumTagValidator) Docs() TagDoc { return TagDoc{ Tag: mtv.TagName(), - StabilityLevel: Beta, + StabilityLevel: Stable, Scopes: mtv.ValidScopes().UnsortedList(), Description: "Indicates that a numeric field has a minimum value.", Payloads: []TagPayloadDoc{{ diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/list.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/list.go index 1cf86a60999..d5a80b056de 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/list.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/list.go @@ -182,7 +182,7 @@ func (lttv listTypeTagValidator) GetValidations(context Context, tag codetags.Ta func (lttv listTypeTagValidator) Docs() TagDoc { doc := TagDoc{ Tag: lttv.TagName(), - StabilityLevel: Beta, + StabilityLevel: Stable, Scopes: lttv.ValidScopes().UnsortedList(), Description: "Declares a list field's semantic type and ownership behavior. atomic: single ownership, set: shared ownership with uniqueness, map: shared ownership with key-based uniqueness.", Payloads: []TagPayloadDoc{{ @@ -250,7 +250,7 @@ func (lmktv listMapKeyTagValidator) GetValidations(context Context, tag codetags func (lmktv listMapKeyTagValidator) Docs() TagDoc { doc := TagDoc{ Tag: lmktv.TagName(), - StabilityLevel: Beta, + StabilityLevel: Stable, Scopes: lmktv.ValidScopes().UnsortedList(), Description: "Declares a named sub-field of a list's value-type to be part of the list-map key.", Payloads: []TagPayloadDoc{{ diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/required.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/required.go index a6546c46b17..b20835adbff 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/required.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/required.go @@ -309,10 +309,10 @@ func (rtv requirednessTagValidator) Docs() TagDoc { switch rtv.mode { case requirednessRequired: - doc.StabilityLevel = Beta + doc.StabilityLevel = Stable doc.Description = "Indicates that a field must be specified by clients." case requirednessOptional: - doc.StabilityLevel = Beta + doc.StabilityLevel = Stable doc.Description = "Indicates that a field is optional to clients." case requirednessForbidden: doc.StabilityLevel = Alpha diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/subfield.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/subfield.go index cfee2361709..8fc275d2474 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/subfield.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/subfield.go @@ -132,9 +132,9 @@ func (stv subfieldTagValidator) GetValidations(context Context, tag codetags.Tag } func (stv subfieldTagValidator) Docs() TagDoc { - doc := TagDoc{ + return TagDoc{ Tag: stv.TagName(), - StabilityLevel: Beta, + StabilityLevel: Stable, Scopes: stv.ValidScopes().UnsortedList(), Description: "Declares a validation for a subfield of a struct.", Args: []TagArgDoc{{ @@ -150,5 +150,4 @@ func (stv subfieldTagValidator) Docs() TagDoc { PayloadsType: codetags.ValueTypeTag, PayloadsRequired: true, } - return doc } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/union.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/union.go index 49e7aa5d60a..16efda6c310 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/union.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/union.go @@ -156,7 +156,7 @@ func (umtv unionMemberTagValidator) GetValidations(context Context, tag codetags func (umtv unionMemberTagValidator) Docs() TagDoc { return TagDoc{ Tag: umtv.TagName(), - StabilityLevel: Beta, + StabilityLevel: Stable, Scopes: umtv.ValidScopes().UnsortedList(), Description: "Indicates that this field is a member of a union.", Args: []TagArgDoc{{ diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/zeroorone.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/zeroorone.go index 3b66ca6a0ac..5b0e643cef4 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/zeroorone.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/validators/zeroorone.go @@ -101,7 +101,7 @@ func (zmtv zeroOrOneOfMemberTagValidator) Docs() TagDoc { return TagDoc{ Tag: zmtv.TagName(), Scopes: zmtv.ValidScopes().UnsortedList(), - StabilityLevel: Beta, + StabilityLevel: Stable, Description: "Indicates that this field is a member of a zero-or-one-of union.", Docs: "A zero-or-one-of union allows at most one member to be set. Unlike regular unions, having no members set is valid.", Warning: "This tag should only be used on sets of list items, and never on struct fields directly.",