Merge pull request #91085 from yue9944882/trim-deletioncollection-openapi-param

Exclude openapi params for DELETECOLLECTION ("watch"/"allowWatchBookmarks")
This commit is contained in:
Kubernetes Prow Robot 2020-05-15 23:02:13 -07:00 committed by GitHub
commit 6b6945bbfc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 1025 deletions

File diff suppressed because it is too large Load Diff

View File

@ -32,6 +32,7 @@ import (
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apiserver/pkg/admission" "k8s.io/apiserver/pkg/admission"
"k8s.io/apiserver/pkg/endpoints/discovery" "k8s.io/apiserver/pkg/endpoints/discovery"
"k8s.io/apiserver/pkg/endpoints/handlers" "k8s.io/apiserver/pkg/endpoints/handlers"
@ -820,7 +821,7 @@ func (a *APIInstaller) registerResourceHandlers(path string, storage rest.Storag
return nil, err return nil, err
} }
} }
if err := AddObjectParams(ws, route, versionedListOptions); err != nil { if err := AddObjectParams(ws, route, versionedListOptions, "watch", "allowWatchBookmarks"); err != nil {
return nil, err return nil, err
} }
addParams(route, action.Params) addParams(route, action.Params)
@ -962,12 +963,13 @@ func addParams(route *restful.RouteBuilder, params []*restful.Parameter) {
// Go JSON behavior for omitting a field) become query parameters. The name of the query parameter is // Go JSON behavior for omitting a field) become query parameters. The name of the query parameter is
// the JSON field name. If a description struct tag is set on the field, that description is used on the // the JSON field name. If a description struct tag is set on the field, that description is used on the
// query parameter. In essence, it converts a standard JSON top level object into a query param schema. // query parameter. In essence, it converts a standard JSON top level object into a query param schema.
func AddObjectParams(ws *restful.WebService, route *restful.RouteBuilder, obj interface{}) error { func AddObjectParams(ws *restful.WebService, route *restful.RouteBuilder, obj interface{}, excludedNames ...string) error {
sv, err := conversion.EnforcePtr(obj) sv, err := conversion.EnforcePtr(obj)
if err != nil { if err != nil {
return err return err
} }
st := sv.Type() st := sv.Type()
excludedNameSet := sets.NewString(excludedNames...)
switch st.Kind() { switch st.Kind() {
case reflect.Struct: case reflect.Struct:
for i := 0; i < st.NumField(); i++ { for i := 0; i < st.NumField(); i++ {
@ -993,7 +995,9 @@ func AddObjectParams(ws *restful.WebService, route *restful.RouteBuilder, obj in
if len(jsonName) == 0 { if len(jsonName) == 0 {
continue continue
} }
if excludedNameSet.Has(jsonName) {
continue
}
var desc string var desc string
if docable, ok := obj.(documentable); ok { if docable, ok := obj.(documentable); ok {
desc = docable.SwaggerDoc()[jsonName] desc = docable.SwaggerDoc()[jsonName]