From 95c42b99515f1a4e393cc0b2a9d75eca2cfec583 Mon Sep 17 00:00:00 2001 From: Lalit Chauhan Date: Thu, 2 Oct 2025 19:00:38 +0000 Subject: [PATCH] Fix rebase issues --- .../resource/v1beta1/zz_generated.validations.go | 3 +++ pkg/apis/resource/validation/validation.go | 4 +++- pkg/registry/resource/deviceclass/strategy.go | 2 -- .../src/k8s.io/api/resource/v1/generated.proto | 2 +- staging/src/k8s.io/api/resource/v1/types.go | 2 +- .../k8s.io/api/resource/v1beta1/generated.proto | 1 + staging/src/k8s.io/api/resource/v1beta1/types.go | 1 + .../k8s.io/api/resource/v1beta2/generated.proto | 2 +- staging/src/k8s.io/api/resource/v1beta2/types.go | 2 +- .../format/k8s-extended-resource-name/doc.go | 4 ++-- .../zz_generated.validations.go | 6 ++++++ .../output_tests/tags/format/k8s-uuid/doc.go | 4 ++-- .../format/k8s-uuid/zz_generated.validations.go | 6 ++++++ .../cmd/validation-gen/validators/format.go | 16 ++++++++-------- 14 files changed, 36 insertions(+), 19 deletions(-) diff --git a/pkg/apis/resource/v1beta1/zz_generated.validations.go b/pkg/apis/resource/v1beta1/zz_generated.validations.go index f48d288af5d..e3a2e396ca5 100644 --- a/pkg/apis/resource/v1beta1/zz_generated.validations.go +++ b/pkg/apis/resource/v1beta1/zz_generated.validations.go @@ -502,6 +502,9 @@ func Validate_DeviceClassSpec(ctx context.Context, op operation.Operation, fldPa return nil } // call field-attached validations + if e := validate.OptionalPointer(ctx, op, fldPath, obj, oldObj); len(e) != 0 { + return // do not proceed + } errs = append(errs, validate.ExtendedResourceName(ctx, op, fldPath, obj, oldObj)...) return }(fldPath.Child("extendedResourceName"), obj.ExtendedResourceName, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceClassSpec) *string { return oldObj.ExtendedResourceName }))...) diff --git a/pkg/apis/resource/validation/validation.go b/pkg/apis/resource/validation/validation.go index cfb17470377..273a0a2d577 100644 --- a/pkg/apis/resource/validation/validation.go +++ b/pkg/apis/resource/validation/validation.go @@ -542,7 +542,9 @@ func ValidateDeviceClass(class *resource.DeviceClass) field.ErrorList { // ValidateDeviceClassUpdate tests if an update to DeviceClass is valid. func ValidateDeviceClassUpdate(class, oldClass *resource.DeviceClass) field.ErrorList { - allErrs := corevalidation.ValidateObjectMetaUpdate(&class.ObjectMeta, &oldClass.ObjectMeta, field.NewPath("metadata")) + // TODO(lalitc375): Remove this if decided in https://github.com/kubernetes/kubernetes/issues/134444. + allErrs := corevalidation.ValidateObjectMeta(&class.ObjectMeta, false, corevalidation.ValidateClassName, field.NewPath("metadata")) + allErrs = append(allErrs, corevalidation.ValidateObjectMetaUpdate(&class.ObjectMeta, &oldClass.ObjectMeta, field.NewPath("metadata"))...) allErrs = append(allErrs, validateDeviceClassSpec(&class.Spec, &oldClass.Spec, field.NewPath("spec"))...) return allErrs } diff --git a/pkg/registry/resource/deviceclass/strategy.go b/pkg/registry/resource/deviceclass/strategy.go index 3854b37d081..5815dfae0c1 100644 --- a/pkg/registry/resource/deviceclass/strategy.go +++ b/pkg/registry/resource/deviceclass/strategy.go @@ -83,9 +83,7 @@ func (deviceClassStrategy) PrepareForUpdate(ctx context.Context, obj, old runtim func (deviceClassStrategy) ValidateUpdate(ctx context.Context, obj, old runtime.Object) field.ErrorList { newClass := obj.(*resource.DeviceClass) oldClass := old.(*resource.DeviceClass) - errorList := validation.ValidateDeviceClassUpdate(newClass, oldClass) - return rest.ValidateDeclarativelyWithMigrationChecks(ctx, legacyscheme.Scheme, newClass, oldClass, errorList, operation.Update) } diff --git a/staging/src/k8s.io/api/resource/v1/generated.proto b/staging/src/k8s.io/api/resource/v1/generated.proto index b24853cd18f..eb44a4a6c63 100644 --- a/staging/src/k8s.io/api/resource/v1/generated.proto +++ b/staging/src/k8s.io/api/resource/v1/generated.proto @@ -680,8 +680,8 @@ message DeviceClassSpec { // // This is an alpha field. // +optional - // +k8s:optional // +featureGate=DRAExtendedResource + // +k8s:optional // +k8s:format=k8s-extended-resource-name optional string extendedResourceName = 4; } diff --git a/staging/src/k8s.io/api/resource/v1/types.go b/staging/src/k8s.io/api/resource/v1/types.go index 36d6170de04..d67c0a10495 100644 --- a/staging/src/k8s.io/api/resource/v1/types.go +++ b/staging/src/k8s.io/api/resource/v1/types.go @@ -1750,8 +1750,8 @@ type DeviceClassSpec struct { // // This is an alpha field. // +optional - // +k8s:optional // +featureGate=DRAExtendedResource + // +k8s:optional // +k8s:format=k8s-extended-resource-name ExtendedResourceName *string `json:"extendedResourceName,omitempty" protobuf:"bytes,4,opt,name=extendedResourceName"` } diff --git a/staging/src/k8s.io/api/resource/v1beta1/generated.proto b/staging/src/k8s.io/api/resource/v1beta1/generated.proto index d2fad045810..3c59c5d5fd9 100644 --- a/staging/src/k8s.io/api/resource/v1beta1/generated.proto +++ b/staging/src/k8s.io/api/resource/v1beta1/generated.proto @@ -689,6 +689,7 @@ message DeviceClassSpec { // This is an alpha field. // +optional // +featureGate=DRAExtendedResource + // +k8s:optional // +k8s:format=k8s-extended-resource-name optional string extendedResourceName = 4; } diff --git a/staging/src/k8s.io/api/resource/v1beta1/types.go b/staging/src/k8s.io/api/resource/v1beta1/types.go index e3e81d09624..b77759d223d 100644 --- a/staging/src/k8s.io/api/resource/v1beta1/types.go +++ b/staging/src/k8s.io/api/resource/v1beta1/types.go @@ -1759,6 +1759,7 @@ type DeviceClassSpec struct { // This is an alpha field. // +optional // +featureGate=DRAExtendedResource + // +k8s:optional // +k8s:format=k8s-extended-resource-name ExtendedResourceName *string `json:"extendedResourceName,omitempty" protobuf:"bytes,4,opt,name=extendedResourceName"` } diff --git a/staging/src/k8s.io/api/resource/v1beta2/generated.proto b/staging/src/k8s.io/api/resource/v1beta2/generated.proto index 00195222f0f..e7d9eeb3f4f 100644 --- a/staging/src/k8s.io/api/resource/v1beta2/generated.proto +++ b/staging/src/k8s.io/api/resource/v1beta2/generated.proto @@ -680,8 +680,8 @@ message DeviceClassSpec { // // This is an alpha field. // +optional - // +k8s:optional // +featureGate=DRAExtendedResource + // +k8s:optional // +k8s:format=k8s-extended-resource-name optional string extendedResourceName = 4; } diff --git a/staging/src/k8s.io/api/resource/v1beta2/types.go b/staging/src/k8s.io/api/resource/v1beta2/types.go index 7f5602d05e3..e03fba13229 100644 --- a/staging/src/k8s.io/api/resource/v1beta2/types.go +++ b/staging/src/k8s.io/api/resource/v1beta2/types.go @@ -1750,8 +1750,8 @@ type DeviceClassSpec struct { // // This is an alpha field. // +optional - // +k8s:optional // +featureGate=DRAExtendedResource + // +k8s:optional // +k8s:format=k8s-extended-resource-name ExtendedResourceName *string `json:"extendedResourceName,omitempty" protobuf:"bytes,4,opt,name=extendedResourceName"` } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-extended-resource-name/doc.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-extended-resource-name/doc.go index 4bada027b88..4858b146332 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-extended-resource-name/doc.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-extended-resource-name/doc.go @@ -28,10 +28,10 @@ var localSchemeBuilder = testscheme.New() // +k8s:validation:Required type MyType struct { TypeMeta int - // +k8s:Optional + // +k8s:optional // +k8s:format=k8s-extended-resource-name NameField string `json:"nameField"` - // +k8s:Optional + // +k8s:optional // +k8s:format=k8s-extended-resource-name NamePtrField *string `json:"namePtrField"` // Note: no validation here diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-extended-resource-name/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-extended-resource-name/zz_generated.validations.go index 5dcf63191a3..80ffe1cc090 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-extended-resource-name/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-extended-resource-name/zz_generated.validations.go @@ -61,6 +61,9 @@ func Validate_MyType(ctx context.Context, op operation.Operation, fldPath *field return nil } // call field-attached validations + if e := validate.OptionalValue(ctx, op, fldPath, obj, oldObj); len(e) != 0 { + return // do not proceed + } errs = append(errs, validate.ExtendedResourceName(ctx, op, fldPath, obj, oldObj)...) return }(fldPath.Child("nameField"), &obj.NameField, safe.Field(oldObj, func(oldObj *MyType) *string { return &oldObj.NameField }))...) @@ -73,6 +76,9 @@ func Validate_MyType(ctx context.Context, op operation.Operation, fldPath *field return nil } // call field-attached validations + if e := validate.OptionalPointer(ctx, op, fldPath, obj, oldObj); len(e) != 0 { + return // do not proceed + } errs = append(errs, validate.ExtendedResourceName(ctx, op, fldPath, obj, oldObj)...) return }(fldPath.Child("namePtrField"), obj.NamePtrField, safe.Field(oldObj, func(oldObj *MyType) *string { return oldObj.NamePtrField }))...) diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-uuid/doc.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-uuid/doc.go index 4adfcfc617b..82076569187 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-uuid/doc.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-uuid/doc.go @@ -28,10 +28,10 @@ var localSchemeBuilder = testscheme.New() // +k8s:validation:Required type MyType struct { TypeMeta int - // +k8s:Optional + // +k8s:optional // +k8s:format=k8s-uuid UUIDField string `json:"uuidField"` - // +k8s:Optional + // +k8s:optional // +k8s:format=k8s-uuid UUIDPtrField *string `json:"uuidPtrField"` // Note: no validation here diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-uuid/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-uuid/zz_generated.validations.go index b1de2e4cd0e..eedc93c4de8 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-uuid/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-uuid/zz_generated.validations.go @@ -61,6 +61,9 @@ func Validate_MyType(ctx context.Context, op operation.Operation, fldPath *field return nil } // call field-attached validations + if e := validate.OptionalValue(ctx, op, fldPath, obj, oldObj); len(e) != 0 { + return // do not proceed + } errs = append(errs, validate.UUID(ctx, op, fldPath, obj, oldObj)...) return }(fldPath.Child("uuidField"), &obj.UUIDField, safe.Field(oldObj, func(oldObj *MyType) *string { return &oldObj.UUIDField }))...) @@ -73,6 +76,9 @@ func Validate_MyType(ctx context.Context, op operation.Operation, fldPath *field return nil } // call field-attached validations + if e := validate.OptionalPointer(ctx, op, fldPath, obj, oldObj); len(e) != 0 { + return // do not proceed + } errs = append(errs, validate.UUID(ctx, op, fldPath, obj, oldObj)...) return }(fldPath.Child("uuidPtrField"), obj.UUIDPtrField, safe.Field(oldObj, func(oldObj *MyType) *string { return oldObj.UUIDPtrField }))...) 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 e920b936da7..0d005e50ab7 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 @@ -5,7 +5,7 @@ Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-20.0 + http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, @@ -53,13 +53,13 @@ var ( // to be sure it works the current state of IP manual-ratcheting // ipSloppyValidator = types.Name{Package: libValidationPkg, Name: "IPSloppy"} extendedResourceNameValidator = types.Name{Package: libValidationPkg, Name: "ExtendedResourceName"} - labelKeyValidator = types.Name{Package: libValidationPkg, Name: "LabelKey"} - labelValueValidator = types.Name{Package: libValidationPkg, Name: "LabelValue"} - longNameCaselessValidator = types.Name{Package: libValidationPkg, Name: "LongNameCaseless"} - longNameValidator = types.Name{Package: libValidationPkg, Name: "LongName"} - resourcePoolNameValidator = types.Name{Package: libValidationPkg, Name: "ResourcePoolName"} - shortNameValidator = types.Name{Package: libValidationPkg, Name: "ShortName"} - uuidValidator = types.Name{Package: libValidationPkg, Name: "UUID"} + labelKeyValidator = types.Name{Package: libValidationPkg, Name: "LabelKey"} + labelValueValidator = types.Name{Package: libValidationPkg, Name: "LabelValue"} + longNameCaselessValidator = types.Name{Package: libValidationPkg, Name: "LongNameCaseless"} + longNameValidator = types.Name{Package: libValidationPkg, Name: "LongName"} + resourcePoolNameValidator = types.Name{Package: libValidationPkg, Name: "ResourcePoolName"} + shortNameValidator = types.Name{Package: libValidationPkg, Name: "ShortName"} + uuidValidator = types.Name{Package: libValidationPkg, Name: "UUID"} ) func (formatTagValidator) GetValidations(context Context, tag codetags.Tag) (Validations, error) {