Merge pull request #116392 from seans3/fallback-verifier

Fallback query param verifier

Kubernetes-commit: f5ddaa152ed8739cf8f4de62687ac3c84ef5e12d
This commit is contained in:
Kubernetes Publisher 2023-03-08 23:06:00 -08:00
commit 681a9d1949
3 changed files with 17 additions and 6 deletions

4
go.mod
View file

@ -32,7 +32,7 @@ require (
gopkg.in/yaml.v2 v2.4.0
k8s.io/api v0.0.0-20230308234233-a4afee70a903
k8s.io/apimachinery v0.0.0-20230303235435-f357b1fa74b7
k8s.io/cli-runtime v0.0.0-20230307162015-1076364b1950
k8s.io/cli-runtime v0.0.0-20230309081917-d1c048aeefc2
k8s.io/client-go v0.0.0-20230309033544-64e2c7ff167c
k8s.io/component-base v0.0.0-20230308075123-cfc68dcaff73
k8s.io/component-helpers v0.0.0-20230304001010-94a6fd9a7905
@ -93,7 +93,7 @@ require (
replace (
k8s.io/api => k8s.io/api v0.0.0-20230308234233-a4afee70a903
k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20230303235435-f357b1fa74b7
k8s.io/cli-runtime => k8s.io/cli-runtime v0.0.0-20230307162015-1076364b1950
k8s.io/cli-runtime => k8s.io/cli-runtime v0.0.0-20230309081917-d1c048aeefc2
k8s.io/client-go => k8s.io/client-go v0.0.0-20230309033544-64e2c7ff167c
k8s.io/code-generator => k8s.io/code-generator v0.0.0-20230303235006-4400d5f574d7
k8s.io/component-base => k8s.io/component-base v0.0.0-20230308075123-cfc68dcaff73

4
go.sum
View file

@ -535,8 +535,8 @@ k8s.io/api v0.0.0-20230308234233-a4afee70a903 h1:TmxUf1tDcGUHE8qZKLRWmn2nr2Fypkw
k8s.io/api v0.0.0-20230308234233-a4afee70a903/go.mod h1:esKbT+6XB9TZUHyxlJVQ3zUM0abhQZ81Ic68eirO+xM=
k8s.io/apimachinery v0.0.0-20230303235435-f357b1fa74b7 h1:YN43Lvs3Pj9iQmuWGojeBiFdz1mkrxe0EZn7Ba3TMpQ=
k8s.io/apimachinery v0.0.0-20230303235435-f357b1fa74b7/go.mod h1:jlJwObMa4oKAEOMnAeEaqeiM+Fwd/CbAwNyQ7OaEwS0=
k8s.io/cli-runtime v0.0.0-20230307162015-1076364b1950 h1:e8AHvyKm96kzxrktgL7dPMY65BA5C2S30X3CPKHKO+E=
k8s.io/cli-runtime v0.0.0-20230307162015-1076364b1950/go.mod h1:OBJKwPnOnWPdaZpa2ULBQaUf0b2p01bWWddPOpIxtyE=
k8s.io/cli-runtime v0.0.0-20230309081917-d1c048aeefc2 h1:6L54uDYqjaj7BCLxTQ9G6lfT7QeT9HAPxMuRQrS5hL8=
k8s.io/cli-runtime v0.0.0-20230309081917-d1c048aeefc2/go.mod h1:JwzILqj3+SE/zX+lpSifrOCsWnn/5poDTKlnPnY2jzk=
k8s.io/client-go v0.0.0-20230309033544-64e2c7ff167c h1:1IXuG9QQvPMR3GbYgBhOKre47MAIq+U41cWOGoAHpd8=
k8s.io/client-go v0.0.0-20230309033544-64e2c7ff167c/go.mod h1:hjEB5iFHr17qVb6wnh6w2LQvO5DfoP6rzLN8NAE8K6U=
k8s.io/component-base v0.0.0-20230308075123-cfc68dcaff73 h1:MEKvhkstqrRFmA9+qQlnkA/jPbZUH/VnMKiEfBeLbf8=

View file

@ -30,6 +30,7 @@ import (
"k8s.io/client-go/discovery"
"k8s.io/client-go/dynamic"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/openapi/cached"
restclient "k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"
"k8s.io/kubectl/pkg/util/openapi"
@ -167,8 +168,18 @@ func (f *factoryImpl) Validator(validationDirective string) (validation.Schema,
return nil, err
}
// Create the FieldValidationVerifier for use in the ParamVerifyingSchema.
verifier := resource.NewQueryParamVerifier(dynamicClient, f.openAPIGetter(), resource.QueryParamFieldValidation)
return validation.NewParamVerifyingSchema(schema, verifier, string(validationDirective)), nil
discoveryClient, err := f.ToDiscoveryClient()
if err != nil {
return nil, err
}
// Memory-cache the OpenAPI V3 responses. The disk cache behavior is determined by
// the discovery client.
oapiV3Client := cached.NewClient(discoveryClient.OpenAPIV3())
queryParam := resource.QueryParamFieldValidation
primary := resource.NewQueryParamVerifierV3(dynamicClient, oapiV3Client, queryParam)
secondary := resource.NewQueryParamVerifier(dynamicClient, f.openAPIGetter(), queryParam)
fallback := resource.NewFallbackQueryParamVerifier(primary, secondary)
return validation.NewParamVerifyingSchema(schema, fallback, string(validationDirective)), nil
}
// OpenAPISchema returns metadata and structural information about