apiserver: make endpoint webservice builder helpers public
Kubernetes-commit: 5a971f045364ae12608b2acef1e69acef0805d18
This commit is contained in:
parent
089a1f5e17
commit
ac8e3dd3bb
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue