@@ -79,8 +79,6 @@ import (
7979 "k8s.io/klog/v2"
8080 "k8s.io/kube-openapi/pkg/spec3"
8181 "k8s.io/kube-openapi/pkg/validation/spec"
82- "k8s.io/kube-openapi/pkg/validation/strfmt"
83- "k8s.io/kube-openapi/pkg/validation/validate"
8482)
8583
8684// crdHandler serves the `/apis` endpoint.
@@ -739,20 +737,22 @@ func (r *crdHandler) getOrCreateServingInfoFor(uid types.UID, name string) (*crd
739737 utilruntime .HandleError (err )
740738 return nil , fmt .Errorf ("the server could not properly serve the CR schema" )
741739 }
740+ var internalSchemaProps * apiextensionsinternal.JSONSchemaProps
742741 var internalValidationSchema * apiextensionsinternal.CustomResourceValidation
743742 if validationSchema != nil {
744743 internalValidationSchema = & apiextensionsinternal.CustomResourceValidation {}
745744 if err := apiextensionsv1 .Convert_v1_CustomResourceValidation_To_apiextensions_CustomResourceValidation (validationSchema , internalValidationSchema , nil ); err != nil {
746745 return nil , fmt .Errorf ("failed to convert CRD validation to internal version: %v" , err )
747746 }
747+ internalSchemaProps = internalValidationSchema .OpenAPIV3Schema
748748 }
749- validator , _ , err := apiservervalidation .NewSchemaValidator (internalValidationSchema )
749+ validator , _ , err := apiservervalidation .NewSchemaValidator (internalSchemaProps )
750750 if err != nil {
751751 return nil , err
752752 }
753753
754754 var statusSpec * apiextensionsinternal.CustomResourceSubresourceStatus
755- var statusValidator * validate .SchemaValidator
755+ var statusValidator apiservervalidation .SchemaValidator
756756 subresources , err := apiextensionshelpers .GetSubresourcesForVersion (crd , v .Name )
757757 if err != nil {
758758 utilruntime .HandleError (err )
@@ -767,11 +767,10 @@ func (r *crdHandler) getOrCreateServingInfoFor(uid types.UID, name string) (*crd
767767 // for the status subresource, validate only against the status schema
768768 if internalValidationSchema != nil && internalValidationSchema .OpenAPIV3Schema != nil && internalValidationSchema .OpenAPIV3Schema .Properties != nil {
769769 if statusSchema , ok := internalValidationSchema .OpenAPIV3Schema .Properties ["status" ]; ok {
770- openapiSchema := & spec. Schema {}
771- if err := apiservervalidation . ConvertJSONSchemaPropsWithPostProcess ( & statusSchema , openapiSchema , apiservervalidation . StripUnsupportedFormatsPostProcess ); err != nil {
770+ statusValidator , _ , err = apiservervalidation . NewSchemaValidator ( & statusSchema )
771+ if err != nil {
772772 return nil , err
773773 }
774- statusValidator = validate .NewSchemaValidator (openapiSchema , nil , "" , strfmt .Default )
775774 }
776775 }
777776 }
0 commit comments