@@ -79,6 +79,8 @@ import (
79
79
"k8s.io/klog/v2"
80
80
"k8s.io/kube-openapi/pkg/spec3"
81
81
"k8s.io/kube-openapi/pkg/validation/spec"
82
+ "k8s.io/kube-openapi/pkg/validation/strfmt"
83
+ "k8s.io/kube-openapi/pkg/validation/validate"
82
84
)
83
85
84
86
// crdHandler serves the `/apis` endpoint.
@@ -737,22 +739,20 @@ func (r *crdHandler) getOrCreateServingInfoFor(uid types.UID, name string) (*crd
737
739
utilruntime .HandleError (err )
738
740
return nil , fmt .Errorf ("the server could not properly serve the CR schema" )
739
741
}
740
- var internalSchemaProps * apiextensionsinternal.JSONSchemaProps
741
742
var internalValidationSchema * apiextensionsinternal.CustomResourceValidation
742
743
if validationSchema != nil {
743
744
internalValidationSchema = & apiextensionsinternal.CustomResourceValidation {}
744
745
if err := apiextensionsv1 .Convert_v1_CustomResourceValidation_To_apiextensions_CustomResourceValidation (validationSchema , internalValidationSchema , nil ); err != nil {
745
746
return nil , fmt .Errorf ("failed to convert CRD validation to internal version: %v" , err )
746
747
}
747
- internalSchemaProps = internalValidationSchema .OpenAPIV3Schema
748
748
}
749
- validator , _ , err := apiservervalidation .NewSchemaValidator (internalSchemaProps )
749
+ validator , _ , err := apiservervalidation .NewSchemaValidator (internalValidationSchema )
750
750
if err != nil {
751
751
return nil , err
752
752
}
753
753
754
754
var statusSpec * apiextensionsinternal.CustomResourceSubresourceStatus
755
- var statusValidator apiservervalidation .SchemaValidator
755
+ var statusValidator * validate .SchemaValidator
756
756
subresources , err := apiextensionshelpers .GetSubresourcesForVersion (crd , v .Name )
757
757
if err != nil {
758
758
utilruntime .HandleError (err )
@@ -767,10 +767,11 @@ func (r *crdHandler) getOrCreateServingInfoFor(uid types.UID, name string) (*crd
767
767
// for the status subresource, validate only against the status schema
768
768
if internalValidationSchema != nil && internalValidationSchema .OpenAPIV3Schema != nil && internalValidationSchema .OpenAPIV3Schema .Properties != nil {
769
769
if statusSchema , ok := internalValidationSchema .OpenAPIV3Schema .Properties ["status" ]; ok {
770
- statusValidator , _ , err = apiservervalidation . NewSchemaValidator ( & statusSchema )
771
- if err != nil {
770
+ openapiSchema := & spec. Schema {}
771
+ if err := apiservervalidation . ConvertJSONSchemaPropsWithPostProcess ( & statusSchema , openapiSchema , apiservervalidation . StripUnsupportedFormatsPostProcess ); err != nil {
772
772
return nil , err
773
773
}
774
+ statusValidator = validate .NewSchemaValidator (openapiSchema , nil , "" , strfmt .Default )
774
775
}
775
776
}
776
777
}
0 commit comments