validation: Use JSON names in paths

This ensures that things that parse paths (e.g. to extract the leaf
part) get API-style names.
This commit is contained in:
Tim Hockin
2025-07-16 14:43:15 -07:00
committed by yongruilin
parent f51d57042e
commit 348d576c9f
5 changed files with 17 additions and 9 deletions

View File

@@ -92,7 +92,7 @@ func Validate_CertificateSigningRequestList(ctx context.Context, op operation.Op
return errs
}
var zeroOrOneOfMembershipFor_k8s_io_api_certificates_v1_CertificateSigningRequestStatus_Conditions_ = validate.NewUnionMembership([2]string{"Conditions[{\"type\": \"Approved\"}]", ""}, [2]string{"Conditions[{\"type\": \"Denied\"}]", ""})
var zeroOrOneOfMembershipFor_k8s_io_api_certificates_v1_CertificateSigningRequestStatus_conditions_ = validate.NewUnionMembership([2]string{"conditions[{\"type\": \"Approved\"}]", ""}, [2]string{"conditions[{\"type\": \"Denied\"}]", ""})
func Validate_CertificateSigningRequestStatus(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *certificatesv1.CertificateSigningRequestStatus) (errs field.ErrorList) {
// field certificatesv1.CertificateSigningRequestStatus.Conditions
@@ -104,7 +104,7 @@ func Validate_CertificateSigningRequestStatus(ctx context.Context, op operation.
if e := validate.OptionalSlice(ctx, op, fldPath, obj, oldObj); len(e) != 0 {
return // do not proceed
}
errs = append(errs, validate.ZeroOrOneOfUnion(ctx, op, fldPath, obj, oldObj, zeroOrOneOfMembershipFor_k8s_io_api_certificates_v1_CertificateSigningRequestStatus_Conditions_, func(list []certificatesv1.CertificateSigningRequestCondition) bool {
errs = append(errs, validate.ZeroOrOneOfUnion(ctx, op, fldPath, obj, oldObj, zeroOrOneOfMembershipFor_k8s_io_api_certificates_v1_CertificateSigningRequestStatus_conditions_, func(list []certificatesv1.CertificateSigningRequestCondition) bool {
for i := range list {
if list[i].Type == "Approved" {
return true

View File

@@ -92,7 +92,7 @@ func Validate_CertificateSigningRequestList(ctx context.Context, op operation.Op
return errs
}
var zeroOrOneOfMembershipFor_k8s_io_api_certificates_v1beta1_CertificateSigningRequestStatus_Conditions_ = validate.NewUnionMembership([2]string{"Conditions[{\"type\": \"Approved\"}]", ""}, [2]string{"Conditions[{\"type\": \"Denied\"}]", ""})
var zeroOrOneOfMembershipFor_k8s_io_api_certificates_v1beta1_CertificateSigningRequestStatus_conditions_ = validate.NewUnionMembership([2]string{"conditions[{\"type\": \"Approved\"}]", ""}, [2]string{"conditions[{\"type\": \"Denied\"}]", ""})
func Validate_CertificateSigningRequestStatus(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *certificatesv1beta1.CertificateSigningRequestStatus) (errs field.ErrorList) {
// field certificatesv1beta1.CertificateSigningRequestStatus.Conditions
@@ -104,7 +104,7 @@ func Validate_CertificateSigningRequestStatus(ctx context.Context, op operation.
if e := validate.OptionalSlice(ctx, op, fldPath, obj, oldObj); len(e) != 0 {
return // do not proceed
}
errs = append(errs, validate.ZeroOrOneOfUnion(ctx, op, fldPath, obj, oldObj, zeroOrOneOfMembershipFor_k8s_io_api_certificates_v1beta1_CertificateSigningRequestStatus_Conditions_, func(list []certificatesv1beta1.CertificateSigningRequestCondition) bool {
errs = append(errs, validate.ZeroOrOneOfUnion(ctx, op, fldPath, obj, oldObj, zeroOrOneOfMembershipFor_k8s_io_api_certificates_v1beta1_CertificateSigningRequestStatus_conditions_, func(list []certificatesv1beta1.CertificateSigningRequestCondition) bool {
for i := range list {
if list[i].Type == "Approved" {
return true

View File

@@ -48,7 +48,7 @@ func RegisterValidations(scheme *testscheme.Scheme) error {
return nil
}
var unionMembershipFor_k8s_io_code_generator_cmd_validation_gen_output_tests_tags_item_union_simple_Struct_Tasks_ = validate.NewUnionMembership([2]string{"Tasks[{\"name\": \"succeeded\"}]", ""}, [2]string{"Tasks[{\"name\": \"failed\"}]", ""})
var unionMembershipFor_k8s_io_code_generator_cmd_validation_gen_output_tests_tags_item_union_simple_Struct_tasks_ = validate.NewUnionMembership([2]string{"tasks[{\"name\": \"succeeded\"}]", ""}, [2]string{"tasks[{\"name\": \"failed\"}]", ""})
func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *Struct) (errs field.ErrorList) {
// field Struct.TypeMeta has no validation
@@ -59,7 +59,8 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field
if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) {
return nil // no changes
}
errs = append(errs, validate.Union(ctx, op, fldPath, obj, oldObj, unionMembershipFor_k8s_io_code_generator_cmd_validation_gen_output_tests_tags_item_union_simple_Struct_Tasks_, func(list []Task) bool {
// call field-attached validations
errs = append(errs, validate.Union(ctx, op, fldPath, obj, oldObj, unionMembershipFor_k8s_io_code_generator_cmd_validation_gen_output_tests_tags_item_union_simple_Struct_tasks_, func(list []Task) bool {
for i := range list {
if list[i].Name == "failed" {
return true

View File

@@ -48,7 +48,7 @@ func RegisterValidations(scheme *testscheme.Scheme) error {
return nil
}
var zeroOrOneOfMembershipFor_k8s_io_code_generator_cmd_validation_gen_output_tests_tags_item_zerorooneof_simple_Struct_Tasks_ = validate.NewUnionMembership([2]string{"Tasks[{\"name\": \"succeeded\"}]", ""}, [2]string{"Tasks[{\"name\": \"failed\"}]", ""})
var zeroOrOneOfMembershipFor_k8s_io_code_generator_cmd_validation_gen_output_tests_tags_item_zerorooneof_simple_Struct_tasks_ = validate.NewUnionMembership([2]string{"tasks[{\"name\": \"succeeded\"}]", ""}, [2]string{"tasks[{\"name\": \"failed\"}]", ""})
func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *Struct) (errs field.ErrorList) {
// field Struct.TypeMeta has no validation
@@ -59,7 +59,8 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field
if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) {
return nil // no changes
}
errs = append(errs, validate.ZeroOrOneOfUnion(ctx, op, fldPath, obj, oldObj, zeroOrOneOfMembershipFor_k8s_io_code_generator_cmd_validation_gen_output_tests_tags_item_zerorooneof_simple_Struct_Tasks_, func(list []Task) bool {
// call field-attached validations
errs = append(errs, validate.ZeroOrOneOfUnion(ctx, op, fldPath, obj, oldObj, zeroOrOneOfMembershipFor_k8s_io_code_generator_cmd_validation_gen_output_tests_tags_item_zerorooneof_simple_Struct_tasks_, func(list []Task) bool {
for i := range list {
if list[i].Name == "failed" {
return true

View File

@@ -607,8 +607,14 @@ func (td *typeDiscoverer) discoverStruct(thisNode *typeNode, fldPath *field.Path
jsonName = commentTags.Name
}
var childPath *field.Path
if jsonName != "" {
childPath = fldPath.Child(jsonName)
} else {
childPath = fldPath.Child(name)
}
// Discover the field type.
childPath := fldPath.Child(name)
klog.V(5).InfoS("field", "name", name, "jsonName", jsonName, "type", memb.Type, "path", childPath)
childType := memb.Type
var child *childNode