8000 Merge pull request #87559 from daohoangson/openapi/delete_return_type · kubernetes/kubernetes@e128f6f · GitHub
[go: up one dir, main page]

Skip to content

Commit e128f6f

Browse files
authored
Merge pull request #87559 from daohoangson/openapi/delete_return_type
Openapi/delete return type
2 parents c24fa74 + 772a20b commit e128f6f

File tree

4 files changed

+52
-33
lines changed

4 files changed

+52
-33
lines changed

api/openapi-spec/swagger.json

+30-30
Some generated files are not rendered by default. Learn more about customizing how changed files appear on G 10000 itHub.

staging/src/k8s.io/apiserver/pkg/endpoints/installer.go

+12-3
Original file line numberDiff line numberDiff line change
@@ -291,12 +291,17 @@ func (a *APIInstaller) registerResourceHandlers(path string, storage rest.Storag
291291

292292
var versionedDeleteOptions runtime.Object
293293
var versionedDeleterObject interface{}
294+
deleteReturnsDeletedObject := false
294295
if isGracefulDeleter {
295296
versionedDeleteOptions, err = a.group.Creater.New(optionsExternalVersion.WithKind("DeleteOptions"))
296297
if err != nil {
297298
return nil, err
298299
}
299300
versionedDeleterObject = indirectArbitraryPointer(versionedDeleteOptions)
301+
302+
if mayReturnFullObjectDeleter, ok := storage.(rest.MayReturnFullObjectDeleter); ok {
303+
deleteReturnsDeletedObject = mayReturnFullObjectDeleter.DeleteReturnsDeletedObject()
304+
}
300305
}
301306

302307
versionedStatusPtr, err := a.group.Creater.New(optionsExternalVersion.WithKind("Status"))
@@ -769,15 +774,19 @@ func (a *APIInstaller) registerResourceHandlers(path string, storage rest.Storag
769774
if isSubresource {
770775
doc = "delete " + subresource + " of" + article + kind
771776
}
777+
deleteReturnType := versionedStatus
778+
if deleteReturnsDeletedObject {
779+
deleteReturnType = producedObject
780+
}
772781
handler := metrics.InstrumentRouteFunc(action.Verb, group, version, resource, subresource, requestScope, metrics.APIServerComponent, restfulDeleteResource(gracefulDeleter, isGracefulDeleter, reqScope, admit))
773782
route := ws.DELETE(action.Path).To(handler).
774783
Doc(doc).
775784
Param(ws.QueryParameter("pretty", "If 'true', then the output is pretty printed.")).
776785
Operation("delete"+namespaced+kind+strings.Title(subresource)+operationSuffix).
777786
Produces(append(storageMeta.ProducesMIMETypes(action.Verb), mediaTypes...)...).
778-
Writes(versionedStatus).
779-
Returns(http.StatusOK, "OK", versionedStatus).
780-
Returns(http.StatusAccepted, "Accepted", versionedStatus)
787+
Writes(deleteReturnType).
788+
Returns(http.StatusOK, "OK", deleteReturnType).
789+
Returns(http.StatusAccepted, "Accepted", deleteReturnType)
781790
if isGracefulDeleter {
782791
route.Reads(versionedDeleterObject)
783792
route.ParameterNamed("body").Required(false)

staging/src/k8s.io/apiserver/pkg/registry/generic/registry/store.go

+5
Original file line numberDiff line numberDiff line change
@@ -975,6 +975,11 @@ func (e *Store) Delete(ctx context.Context, name string, deleteValidation rest.V
975975
return out, true, err
976976
}
977977

978+
// DeleteReturnsDeletedObject implements the rest.MayReturnFullObjectDeleter interface
979+
func (e *Store) DeleteReturnsDeletedObject() bool {
980+
return e.ReturnDeletedObject
981+
}
982+
978983
// DeleteCollection removes all items returned by List with a given ListOptions from storage.
979984
//
980985
// DeleteCollection is currently NOT atomic. It can happen that only subset of objects

staging/src/k8s.io/apiserver/pkg/registry/rest/rest.go

+5
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,11 @@ type GracefulDeleter interface {
161161
Delete(ctx context.Context, name string, deleteValidation ValidateObjectFunc, options *metav1.DeleteOptions) (runtime.Object, bool, error)
162162
}
163163

164+
// MayReturnFullObjectDeleter may return deleted object (instead of a simple status) on deletion.
165+
type MayReturnFullObjectDeleter interface {
166+
DeleteReturnsDeletedObject() bool
167+
}
168+
164169
// CollectionDeleter is an object that can delete a collection
165170
// of RESTful resources.
166171
type CollectionDeleter interface {

0 commit comments

Comments
 (0)
0