apiserver: make endpoint webservice builder helpers public

Kubernetes-commit: 5a971f045364ae12608b2acef1e69acef0805d18
This commit is contained in:
Haowei Cai 2019-03-04 08:14:41 -08:00 committed by Kubernetes Publisher
parent 089a1f5e17
commit ac8e3dd3bb
2 changed files with 18 additions and 18 deletions

View File

@ -611,12 +611,12 @@ func (a *APIInstaller) registerResourceHandlers(path string, storage rest.Storag
Returns(http.StatusOK, "OK", producedObject). Returns(http.StatusOK, "OK", producedObject).
Writes(producedObject) Writes(producedObject)
if isGetterWithOptions { if isGetterWithOptions {
if err := addObjectParams(ws, route, versionedGetOptions); err != nil { if err := AddObjectParams(ws, route, versionedGetOptions); err != nil {
return nil, err return nil, err
} }
} }
if isExporter { if isExporter {
if err := addObjectParams(ws, route, versionedExportOptions); err != nil { if err := AddObjectParams(ws, route, versionedExportOptions); err != nil {
return nil, err return nil, err
} }
} }
@ -638,7 +638,7 @@ func (a *APIInstaller) registerResourceHandlers(path string, storage rest.Storag
Produces(append(storageMeta.ProducesMIMETypes(action.Verb), allMediaTypes...)...). Produces(append(storageMeta.ProducesMIMETypes(action.Verb), allMediaTypes...)...).
Returns(http.StatusOK, "OK", versionedList). Returns(http.StatusOK, "OK", versionedList).
Writes(versionedList) Writes(versionedList)
if err := addObjectParams(ws, route, versionedListOptions); err != nil { if err := AddObjectParams(ws, route, versionedListOptions); err != nil {
return nil, err return nil, err
} }
switch { switch {
@ -674,7 +674,7 @@ func (a *APIInstaller) registerResourceHandlers(path string, storage rest.Storag
Returns(http.StatusCreated, "Created", producedObject). Returns(http.StatusCreated, "Created", producedObject).
Reads(defaultVersionedObject). Reads(defaultVersionedObject).
Writes(producedObject) Writes(producedObject)
if err := addObjectParams(ws, route, versionedUpdateOptions); err != nil { if err := AddObjectParams(ws, route, versionedUpdateOptions); err != nil {
return nil, err return nil, err
} }
addParams(route, action.Params) addParams(route, action.Params)
@ -702,7 +702,7 @@ func (a *APIInstaller) registerResourceHandlers(path string, storage rest.Storag
Returns(http.StatusOK, "OK", producedObject). Returns(http.StatusOK, "OK", producedObject).
Reads(metav1.Patch{}). Reads(metav1.Patch{}).
Writes(producedObject) Writes(producedObject)
if err := addObjectParams(ws, route, versionedPatchOptions); err != nil { if err := AddObjectParams(ws, route, versionedPatchOptions); err != nil {
return nil, err return nil, err
} }
addParams(route, action.Params) addParams(route, action.Params)
@ -715,7 +715,7 @@ func (a *APIInstaller) registerResourceHandlers(path string, storage rest.Storag
handler = restfulCreateResource(creater, reqScope, admit) handler = restfulCreateResource(creater, reqScope, admit)
} }
handler = metrics.InstrumentRouteFunc(action.Verb, group, version, resource, subresource, requestScope, metrics.APIServerComponent, handler) handler = metrics.InstrumentRouteFunc(action.Verb, group, version, resource, subresource, requestScope, metrics.APIServerComponent, handler)
article := getArticleForNoun(kind, " ") article := GetArticleForNoun(kind, " ")
doc := "create" + article + kind doc := "create" + article + kind
if isSubresource { if isSubresource {
doc = "create " + subresource + " of" + article + kind doc = "create " + subresource + " of" + article + kind
@ -732,13 +732,13 @@ func (a *APIInstaller) registerResourceHandlers(path string, storage rest.Storag
Returns(http.StatusAccepted, "Accepted", producedObject). Returns(http.StatusAccepted, "Accepted", producedObject).
Reads(defaultVersionedObject). Reads(defaultVersionedObject).
Writes(producedObject) Writes(producedObject)
if err := addObjectParams(ws, route, versionedCreateOptions); err != nil { if err := AddObjectParams(ws, route, versionedCreateOptions); err != nil {
return nil, err return nil, err
} }
addParams(route, action.Params) addParams(route, action.Params)
routes = append(routes, route) routes = append(routes, route)
case "DELETE": // Delete a resource. case "DELETE": // Delete a resource.
article := getArticleForNoun(kind, " ") article := GetArticleForNoun(kind, " ")
doc := "delete" + article + kind doc := "delete" + article + kind
if isSubresource { if isSubresource {
doc = "delete " + subresource + " of" + article + kind doc = "delete " + subresource + " of" + article + kind
@ -755,7 +755,7 @@ func (a *APIInstaller) registerResourceHandlers(path string, storage rest.Storag
if isGracefulDeleter { if isGracefulDeleter {
route.Reads(versionedDeleterObject) route.Reads(versionedDeleterObject)
route.ParameterNamed("body").Required(false) route.ParameterNamed("body").Required(false)
if err := addObjectParams(ws, route, versionedDeleteOptions); err != nil { if err := AddObjectParams(ws, route, versionedDeleteOptions); err != nil {
return nil, err return nil, err
} }
} }
@ -774,7 +774,7 @@ func (a *APIInstaller) registerResourceHandlers(path string, storage rest.Storag
Produces(append(storageMeta.ProducesMIMETypes(action.Verb), mediaTypes...)...). Produces(append(storageMeta.ProducesMIMETypes(action.Verb), mediaTypes...)...).
Writes(versionedStatus). Writes(versionedStatus).
Returns(http.StatusOK, "OK", versionedStatus) Returns(http.StatusOK, "OK", versionedStatus)
if err := addObjectParams(ws, route, versionedListOptions); err != nil { if err := AddObjectParams(ws, route, versionedListOptions); err != nil {
return nil, err return nil, err
} }
addParams(route, action.Params) addParams(route, action.Params)
@ -794,7 +794,7 @@ func (a *APIInstaller) registerResourceHandlers(path string, storage rest.Storag
Produces(allMediaTypes...). Produces(allMediaTypes...).
Returns(http.StatusOK, "OK", versionedWatchEvent). Returns(http.StatusOK, "OK", versionedWatchEvent).
Writes(versionedWatchEvent) Writes(versionedWatchEvent)
if err := addObjectParams(ws, route, versionedListOptions); err != nil { if err := AddObjectParams(ws, route, versionedListOptions); err != nil {
return nil, err return nil, err
} }
addParams(route, action.Params) addParams(route, action.Params)
@ -814,7 +814,7 @@ func (a *APIInstaller) registerResourceHandlers(path string, storage rest.Storag
Produces(allMediaTypes...). Produces(allMediaTypes...).
Returns(http.StatusOK, "OK", versionedWatchEvent). Returns(http.StatusOK, "OK", versionedWatchEvent).
Writes(versionedWatchEvent) Writes(versionedWatchEvent)
if err := addObjectParams(ws, route, versionedListOptions); err != nil { if err := AddObjectParams(ws, route, versionedListOptions); err != nil {
return nil, err return nil, err
} }
addParams(route, action.Params) addParams(route, action.Params)
@ -838,7 +838,7 @@ func (a *APIInstaller) registerResourceHandlers(path string, storage rest.Storag
Consumes("*/*"). Consumes("*/*").
Writes(connectProducedObject) Writes(connectProducedObject)
if versionedConnectOptions != nil { if versionedConnectOptions != nil {
if err := addObjectParams(ws, route, versionedConnectOptions); err != nil { if err := AddObjectParams(ws, route, versionedConnectOptions); err != nil {
return nil, err return nil, err
} }
} }
@ -907,13 +907,13 @@ func addParams(route *restful.RouteBuilder, params []*restful.Parameter) {
} }
} }
// addObjectParams converts a runtime.Object into a set of go-restful Param() definitions on the route. // AddObjectParams converts a runtime.Object into a set of go-restful Param() definitions on the route.
// The object must be a pointer to a struct; only fields at the top level of the struct that are not // The object must be a pointer to a struct; only fields at the top level of the struct that are not
// themselves interfaces or structs are used; only fields with a json tag that is non empty (the standard // themselves interfaces or structs are used; only fields with a json tag that is non empty (the standard
// 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{}) error {
sv, err := conversion.EnforcePtr(obj) sv, err := conversion.EnforcePtr(obj)
if err != nil { if err != nil {
return err return err
@ -1015,8 +1015,8 @@ func splitSubresource(path string) (string, string, error) {
return resource, subresource, nil return resource, subresource, nil
} }
// getArticleForNoun returns the article needed for the given noun. // GetArticleForNoun returns the article needed for the given noun.
func getArticleForNoun(noun string, padding string) string { func GetArticleForNoun(noun string, padding string) string {
if noun[len(noun)-2:] != "ss" && noun[len(noun)-1:] == "s" { if noun[len(noun)-2:] != "ss" && noun[len(noun)-1:] == "s" {
// Plurals don't have an article. // Plurals don't have an article.
// Don't catch words like class // Don't catch words like class

View File

@ -82,7 +82,7 @@ func TestGetArticleForNoun(t *testing.T) {
}, },
} }
for _, tt := range tests { for _, tt := range tests {
if got := getArticleForNoun(tt.noun, tt.padding); got != tt.want { if got := GetArticleForNoun(tt.noun, tt.padding); got != tt.want {
t.Errorf("%q. GetArticleForNoun() = %v, want %v", tt.noun, got, tt.want) t.Errorf("%q. GetArticleForNoun() = %v, want %v", tt.noun, got, tt.want)
} }
} }