Merge pull request #87559 from daohoangson/openapi/delete_return_type
Openapi/delete return type Kubernetes-commit: e128f6f4c9d0fc6b8ab59b8d0dce308d6fb3f3d0
This commit is contained in:
commit
6b951cbd3f
|
|
@ -596,7 +596,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/client-go",
|
"ImportPath": "k8s.io/client-go",
|
||||||
"Rev": "473926661c44"
|
"Rev": "cf84c08bad11"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "k8s.io/component-base",
|
"ImportPath": "k8s.io/component-base",
|
||||||
|
|
|
||||||
4
go.mod
4
go.mod
|
|
@ -46,7 +46,7 @@ require (
|
||||||
gotest.tools v2.2.0+incompatible // indirect
|
gotest.tools v2.2.0+incompatible // indirect
|
||||||
k8s.io/api v0.0.0-20200207025841-85a41f27a10c
|
k8s.io/api v0.0.0-20200207025841-85a41f27a10c
|
||||||
k8s.io/apimachinery v0.0.0-20200207025655-52a338251bb2
|
k8s.io/apimachinery v0.0.0-20200207025655-52a338251bb2
|
||||||
k8s.io/client-go v0.0.0-20200207030105-473926661c44
|
k8s.io/client-go v0.0.0-20200207110052-cf84c08bad11
|
||||||
k8s.io/component-base v0.0.0-20200207030544-616550b070ba
|
k8s.io/component-base v0.0.0-20200207030544-616550b070ba
|
||||||
k8s.io/klog v1.0.0
|
k8s.io/klog v1.0.0
|
||||||
k8s.io/kube-openapi v0.0.0-20200121204235-bf4fb3bd569c
|
k8s.io/kube-openapi v0.0.0-20200121204235-bf4fb3bd569c
|
||||||
|
|
@ -60,6 +60,6 @@ replace (
|
||||||
golang.org/x/tools => golang.org/x/tools v0.0.0-20190821162956-65e3620a7ae7 // pinned to release-branch.go1.13
|
golang.org/x/tools => golang.org/x/tools v0.0.0-20190821162956-65e3620a7ae7 // pinned to release-branch.go1.13
|
||||||
k8s.io/api => k8s.io/api v0.0.0-20200207025841-85a41f27a10c
|
k8s.io/api => k8s.io/api v0.0.0-20200207025841-85a41f27a10c
|
||||||
k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20200207025655-52a338251bb2
|
k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20200207025655-52a338251bb2
|
||||||
k8s.io/client-go => k8s.io/client-go v0.0.0-20200207030105-473926661c44
|
k8s.io/client-go => k8s.io/client-go v0.0.0-20200207110052-cf84c08bad11
|
||||||
k8s.io/component-base => k8s.io/component-base v0.0.0-20200207030544-616550b070ba
|
k8s.io/component-base => k8s.io/component-base v0.0.0-20200207030544-616550b070ba
|
||||||
)
|
)
|
||||||
|
|
|
||||||
2
go.sum
2
go.sum
|
|
@ -363,7 +363,7 @@ honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWh
|
||||||
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||||
k8s.io/api v0.0.0-20200207025841-85a41f27a10c/go.mod h1:SA5EjO7X3UBpRgCFnqrgyCg0rXvBmN8QpNZ4Bvmv9js=
|
k8s.io/api v0.0.0-20200207025841-85a41f27a10c/go.mod h1:SA5EjO7X3UBpRgCFnqrgyCg0rXvBmN8QpNZ4Bvmv9js=
|
||||||
k8s.io/apimachinery v0.0.0-20200207025655-52a338251bb2/go.mod h1:4JiEu5qfVX4iOPJG4zxNOGJ0HamEJ5OmJHxtHMChmZo=
|
k8s.io/apimachinery v0.0.0-20200207025655-52a338251bb2/go.mod h1:4JiEu5qfVX4iOPJG4zxNOGJ0HamEJ5OmJHxtHMChmZo=
|
||||||
k8s.io/client-go v0.0.0-20200207030105-473926661c44/go.mod h1:ourVHU91vVd0R4YiJhW1FNlt3K+HtokZ5ImtcAbqVh4=
|
k8s.io/client-go v0.0.0-20200207110052-cf84c08bad11/go.mod h1:ourVHU91vVd0R4YiJhW1FNlt3K+HtokZ5ImtcAbqVh4=
|
||||||
k8s.io/component-base v0.0.0-20200207030544-616550b070ba/go.mod h1:xqOLjWJL1P+sXGSeMoLVvN0UM/adtUwVUp/mwh5H518=
|
k8s.io/component-base v0.0.0-20200207030544-616550b070ba/go.mod h1:xqOLjWJL1P+sXGSeMoLVvN0UM/adtUwVUp/mwh5H518=
|
||||||
k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
|
k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
|
||||||
k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=
|
k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=
|
||||||
|
|
|
||||||
|
|
@ -291,12 +291,17 @@ func (a *APIInstaller) registerResourceHandlers(path string, storage rest.Storag
|
||||||
|
|
||||||
var versionedDeleteOptions runtime.Object
|
var versionedDeleteOptions runtime.Object
|
||||||
var versionedDeleterObject interface{}
|
var versionedDeleterObject interface{}
|
||||||
|
deleteReturnsDeletedObject := false
|
||||||
if isGracefulDeleter {
|
if isGracefulDeleter {
|
||||||
versionedDeleteOptions, err = a.group.Creater.New(optionsExternalVersion.WithKind("DeleteOptions"))
|
versionedDeleteOptions, err = a.group.Creater.New(optionsExternalVersion.WithKind("DeleteOptions"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
versionedDeleterObject = indirectArbitraryPointer(versionedDeleteOptions)
|
versionedDeleterObject = indirectArbitraryPointer(versionedDeleteOptions)
|
||||||
|
|
||||||
|
if mayReturnFullObjectDeleter, ok := storage.(rest.MayReturnFullObjectDeleter); ok {
|
||||||
|
deleteReturnsDeletedObject = mayReturnFullObjectDeleter.DeleteReturnsDeletedObject()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
versionedStatusPtr, err := a.group.Creater.New(optionsExternalVersion.WithKind("Status"))
|
versionedStatusPtr, err := a.group.Creater.New(optionsExternalVersion.WithKind("Status"))
|
||||||
|
|
@ -769,15 +774,19 @@ func (a *APIInstaller) registerResourceHandlers(path string, storage rest.Storag
|
||||||
if isSubresource {
|
if isSubresource {
|
||||||
doc = "delete " + subresource + " of" + article + kind
|
doc = "delete " + subresource + " of" + article + kind
|
||||||
}
|
}
|
||||||
|
deleteReturnType := versionedStatus
|
||||||
|
if deleteReturnsDeletedObject {
|
||||||
|
deleteReturnType = producedObject
|
||||||
|
}
|
||||||
handler := metrics.InstrumentRouteFunc(action.Verb, group, version, resource, subresource, requestScope, metrics.APIServerComponent, restfulDeleteResource(gracefulDeleter, isGracefulDeleter, reqScope, admit))
|
handler := metrics.InstrumentRouteFunc(action.Verb, group, version, resource, subresource, requestScope, metrics.APIServerComponent, restfulDeleteResource(gracefulDeleter, isGracefulDeleter, reqScope, admit))
|
||||||
route := ws.DELETE(action.Path).To(handler).
|
route := ws.DELETE(action.Path).To(handler).
|
||||||
Doc(doc).
|
Doc(doc).
|
||||||
Param(ws.QueryParameter("pretty", "If 'true', then the output is pretty printed.")).
|
Param(ws.QueryParameter("pretty", "If 'true', then the output is pretty printed.")).
|
||||||
Operation("delete"+namespaced+kind+strings.Title(subresource)+operationSuffix).
|
Operation("delete"+namespaced+kind+strings.Title(subresource)+operationSuffix).
|
||||||
Produces(append(storageMeta.ProducesMIMETypes(action.Verb), mediaTypes...)...).
|
Produces(append(storageMeta.ProducesMIMETypes(action.Verb), mediaTypes...)...).
|
||||||
Writes(versionedStatus).
|
Writes(deleteReturnType).
|
||||||
Returns(http.StatusOK, "OK", versionedStatus).
|
Returns(http.StatusOK, "OK", deleteReturnType).
|
||||||
Returns(http.StatusAccepted, "Accepted", versionedStatus)
|
Returns(http.StatusAccepted, "Accepted", deleteReturnType)
|
||||||
if isGracefulDeleter {
|
if isGracefulDeleter {
|
||||||
route.Reads(versionedDeleterObject)
|
route.Reads(versionedDeleterObject)
|
||||||
route.ParameterNamed("body").Required(false)
|
route.ParameterNamed("body").Required(false)
|
||||||
|
|
|
||||||
|
|
@ -975,6 +975,11 @@ func (e *Store) Delete(ctx context.Context, name string, deleteValidation rest.V
|
||||||
return out, true, err
|
return out, true, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeleteReturnsDeletedObject implements the rest.MayReturnFullObjectDeleter interface
|
||||||
|
func (e *Store) DeleteReturnsDeletedObject() bool {
|
||||||
|
return e.ReturnDeletedObject
|
||||||
|
}
|
||||||
|
|
||||||
// DeleteCollection removes all items returned by List with a given ListOptions from storage.
|
// DeleteCollection removes all items returned by List with a given ListOptions from storage.
|
||||||
//
|
//
|
||||||
// DeleteCollection is currently NOT atomic. It can happen that only subset of objects
|
// DeleteCollection is currently NOT atomic. It can happen that only subset of objects
|
||||||
|
|
|
||||||
|
|
@ -161,6 +161,11 @@ type GracefulDeleter interface {
|
||||||
Delete(ctx context.Context, name string, deleteValidation ValidateObjectFunc, options *metav1.DeleteOptions) (runtime.Object, bool, error)
|
Delete(ctx context.Context, name string, deleteValidation ValidateObjectFunc, options *metav1.DeleteOptions) (runtime.Object, bool, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MayReturnFullObjectDeleter may return deleted object (instead of a simple status) on deletion.
|
||||||
|
type MayReturnFullObjectDeleter interface {
|
||||||
|
DeleteReturnsDeletedObject() bool
|
||||||
|
}
|
||||||
|
|
||||||
// CollectionDeleter is an object that can delete a collection
|
// CollectionDeleter is an object that can delete a collection
|
||||||
// of RESTful resources.
|
// of RESTful resources.
|
||||||
type CollectionDeleter interface {
|
type CollectionDeleter interface {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue