From 4da418aba7f600f1658868b06bd0715b4bf32b5b Mon Sep 17 00:00:00 2001 From: Alexander Zielenski Date: Thu, 13 Jul 2023 13:58:54 -0700 Subject: [PATCH] refactor: cleanup to NewSchemaValidator takes JSONSchemaProps avoids caller having to unnecessarily wrap --- .../pkg/apis/apiextensions/validation/validation.go | 2 +- .../pkg/apiserver/customresource_handler.go | 7 ++++--- .../pkg/apiserver/validation/validation.go | 4 ++-- .../pkg/apiserver/validation/validation_test.go | 4 ++-- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation/validation.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation/validation.go index 95876883aef..419ea25e84f 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation/validation.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation/validation.go @@ -825,7 +825,7 @@ func validateCustomResourceDefinitionValidation(ctx context.Context, customResou // if validation passed otherwise, make sure we can actually construct a schema validator from this custom resource validation. if len(allErrs) == 0 { - if _, _, err := apiservervalidation.NewSchemaValidator(customResourceValidation); err != nil { + if _, _, err := apiservervalidation.NewSchemaValidator(customResourceValidation.OpenAPIV3Schema); err != nil { allErrs = append(allErrs, field.Invalid(fldPath, "", fmt.Sprintf("error building validator: %v", err))) } } diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/customresource_handler.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/customresource_handler.go index a2e4b7a28c7..a993aa46410 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/customresource_handler.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/customresource_handler.go @@ -739,14 +739,15 @@ func (r *crdHandler) getOrCreateServingInfoFor(uid types.UID, name string) (*crd utilruntime.HandleError(err) return nil, fmt.Errorf("the server could not properly serve the CR schema") } - var internalValidationSchema *apiextensionsinternal.CustomResourceValidation + var internalSchemaProps *apiextensionsinternal.JSONSchemaProps if validationSchema != nil { - internalValidationSchema = &apiextensionsinternal.CustomResourceValidation{} + internalValidationSchema := &apiextensionsinternal.CustomResourceValidation{} if err := apiextensionsv1.Convert_v1_CustomResourceValidation_To_apiextensions_CustomResourceValidation(validationSchema, internalValidationSchema, nil); err != nil { return nil, fmt.Errorf("failed to convert CRD validation to internal version: %v", err) } + internalSchemaProps = internalValidationSchema.OpenAPIV3Schema } - validator, _, err := apiservervalidation.NewSchemaValidator(internalValidationSchema) + validator, _, err := apiservervalidation.NewSchemaValidator(internalSchemaProps) if err != nil { return nil, err } diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/validation/validation.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/validation/validation.go index fad044d1c6b..13e7d7739c8 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/validation/validation.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/validation/validation.go @@ -30,12 +30,12 @@ import ( ) // NewSchemaValidator creates an openapi schema validator for the given CRD validation. -func NewSchemaValidator(customResourceValidation *apiextensions.CustomResourceValidation) (*validate.SchemaValidator, *spec.Schema, error) { +func NewSchemaValidator(customResourceValidation *apiextensions.JSONSchemaProps) (*validate.SchemaValidator, *spec.Schema, error) { // Convert CRD schema to openapi schema openapiSchema := &spec.Schema{} if customResourceValidation != nil { // TODO: replace with NewStructural(...).ToGoOpenAPI - if err := ConvertJSONSchemaPropsWithPostProcess(customResourceValidation.OpenAPIV3Schema, openapiSchema, StripUnsupportedFormatsPostProcess); err != nil { + if err := ConvertJSONSchemaPropsWithPostProcess(customResourceValidation, openapiSchema, StripUnsupportedFormatsPostProcess); err != nil { return nil, nil, err } } diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/validation/validation_test.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/validation/validation_test.go index 7bbeba3eae5..c6776ebf6a9 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/validation/validation_test.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/validation/validation_test.go @@ -601,7 +601,7 @@ func TestValidateCustomResource(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - validator, _, err := NewSchemaValidator(&apiextensions.CustomResourceValidation{OpenAPIV3Schema: &tt.schema}) + validator, _, err := NewSchemaValidator(&tt.schema) if err != nil { t.Fatal(err) } @@ -689,7 +689,7 @@ func TestItemsProperty(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - validator, _, err := NewSchemaValidator(&apiextensions.CustomResourceValidation{OpenAPIV3Schema: &tt.args.schema}) + validator, _, err := NewSchemaValidator(&tt.args.schema) if err != nil { t.Fatal(err) }