mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 11:50:44 +00:00
Merge pull request #87559 from daohoangson/openapi/delete_return_type
Openapi/delete return type
This commit is contained in:
commit
e128f6f4c9
60
api/openapi-spec/swagger.json
generated
60
api/openapi-spec/swagger.json
generated
@ -21623,13 +21623,13 @@
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"
|
||||
"$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim"
|
||||
}
|
||||
},
|
||||
"202": {
|
||||
"description": "Accepted",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"
|
||||
"$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim"
|
||||
}
|
||||
},
|
||||
"401": {
|
||||
@ -22422,13 +22422,13 @@
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"
|
||||
"$ref": "#/definitions/io.k8s.api.core.v1.Pod"
|
||||
}
|
||||
},
|
||||
"202": {
|
||||
"description": "Accepted",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"
|
||||
"$ref": "#/definitions/io.k8s.api.core.v1.Pod"
|
||||
}
|
||||
},
|
||||
"401": {
|
||||
@ -24402,13 +24402,13 @@
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"
|
||||
"$ref": "#/definitions/io.k8s.api.core.v1.PodTemplate"
|
||||
}
|
||||
},
|
||||
"202": {
|
||||
"description": "Accepted",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"
|
||||
"$ref": "#/definitions/io.k8s.api.core.v1.PodTemplate"
|
||||
}
|
||||
},
|
||||
"401": {
|
||||
@ -26000,13 +26000,13 @@
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"
|
||||
"$ref": "#/definitions/io.k8s.api.core.v1.ResourceQuota"
|
||||
}
|
||||
},
|
||||
"202": {
|
||||
"description": "Accepted",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"
|
||||
"$ref": "#/definitions/io.k8s.api.core.v1.ResourceQuota"
|
||||
}
|
||||
},
|
||||
"401": {
|
||||
@ -27402,13 +27402,13 @@
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"
|
||||
"$ref": "#/definitions/io.k8s.api.core.v1.ServiceAccount"
|
||||
}
|
||||
},
|
||||
"202": {
|
||||
"description": "Accepted",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"
|
||||
"$ref": "#/definitions/io.k8s.api.core.v1.ServiceAccount"
|
||||
}
|
||||
},
|
||||
"401": {
|
||||
@ -31231,13 +31231,13 @@
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"
|
||||
"$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolume"
|
||||
}
|
||||
},
|
||||
"202": {
|
||||
"description": "Accepted",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"
|
||||
"$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolume"
|
||||
}
|
||||
},
|
||||
"401": {
|
||||
@ -75126,13 +75126,13 @@
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"
|
||||
"$ref": "#/definitions/io.k8s.api.policy.v1beta1.PodSecurityPolicy"
|
||||
}
|
||||
},
|
||||
"202": {
|
||||
"description": "Accepted",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"
|
||||
"$ref": "#/definitions/io.k8s.api.policy.v1beta1.PodSecurityPolicy"
|
||||
}
|
||||
},
|
||||
"401": {
|
||||
@ -90997,13 +90997,13 @@
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"
|
||||
"$ref": "#/definitions/io.k8s.api.storage.v1.CSINode"
|
||||
}
|
||||
},
|
||||
"202": {
|
||||
"description": "Accepted",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"
|
||||
"$ref": "#/definitions/io.k8s.api.storage.v1.CSINode"
|
||||
}
|
||||
},
|
||||
"401": {
|
||||
@ -91584,13 +91584,13 @@
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"
|
||||
"$ref": "#/definitions/io.k8s.api.storage.v1.StorageClass"
|
||||
}
|
||||
},
|
||||
"202": {
|
||||
"description": "Accepted",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"
|
||||
"$ref": "#/definitions/io.k8s.api.storage.v1.StorageClass"
|
||||
}
|
||||
},
|
||||
"401": {
|
||||
@ -92171,13 +92171,13 @@
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"
|
||||
"$ref": "#/definitions/io.k8s.api.storage.v1.VolumeAttachment"
|
||||
}
|
||||
},
|
||||
"202": {
|
||||
"description": "Accepted",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"
|
||||
"$ref": "#/definitions/io.k8s.api.storage.v1.VolumeAttachment"
|
||||
}
|
||||
},
|
||||
"401": {
|
||||
@ -93627,13 +93627,13 @@
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"
|
||||
"$ref": "#/definitions/io.k8s.api.storage.v1alpha1.VolumeAttachment"
|
||||
}
|
||||
},
|
||||
"202": {
|
||||
"description": "Accepted",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"
|
||||
"$ref": "#/definitions/io.k8s.api.storage.v1alpha1.VolumeAttachment"
|
||||
}
|
||||
},
|
||||
"401": {
|
||||
@ -94463,13 +94463,13 @@
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"
|
||||
"$ref": "#/definitions/io.k8s.api.storage.v1beta1.CSIDriver"
|
||||
}
|
||||
},
|
||||
"202": {
|
||||
"description": "Accepted",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"
|
||||
"$ref": "#/definitions/io.k8s.api.storage.v1beta1.CSIDriver"
|
||||
}
|
||||
},
|
||||
"401": {
|
||||
@ -95050,13 +95050,13 @@
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"
|
||||
"$ref": "#/definitions/io.k8s.api.storage.v1beta1.CSINode"
|
||||
}
|
||||
},
|
||||
"202": {
|
||||
"description": "Accepted",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"
|
||||
"$ref": "#/definitions/io.k8s.api.storage.v1beta1.CSINode"
|
||||
}
|
||||
},
|
||||
"401": {
|
||||
@ -95637,13 +95637,13 @@
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"
|
||||
"$ref": "#/definitions/io.k8s.api.storage.v1beta1.StorageClass"
|
||||
}
|
||||
},
|
||||
"202": {
|
||||
"description": "Accepted",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"
|
||||
"$ref": "#/definitions/io.k8s.api.storage.v1beta1.StorageClass"
|
||||
}
|
||||
},
|
||||
"401": {
|
||||
@ -96224,13 +96224,13 @@
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"
|
||||
"$ref": "#/definitions/io.k8s.api.storage.v1beta1.VolumeAttachment"
|
||||
}
|
||||
},
|
||||
"202": {
|
||||
"description": "Accepted",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"
|
||||
"$ref": "#/definitions/io.k8s.api.storage.v1beta1.VolumeAttachment"
|
||||
}
|
||||
},
|
||||
"401": {
|
||||
|
@ -291,12 +291,17 @@ func (a *APIInstaller) registerResourceHandlers(path string, storage rest.Storag
|
||||
|
||||
var versionedDeleteOptions runtime.Object
|
||||
var versionedDeleterObject interface{}
|
||||
deleteReturnsDeletedObject := false
|
||||
if isGracefulDeleter {
|
||||
versionedDeleteOptions, err = a.group.Creater.New(optionsExternalVersion.WithKind("DeleteOptions"))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
versionedDeleterObject = indirectArbitraryPointer(versionedDeleteOptions)
|
||||
|
||||
if mayReturnFullObjectDeleter, ok := storage.(rest.MayReturnFullObjectDeleter); ok {
|
||||
deleteReturnsDeletedObject = mayReturnFullObjectDeleter.DeleteReturnsDeletedObject()
|
||||
}
|
||||
}
|
||||
|
||||
versionedStatusPtr, err := a.group.Creater.New(optionsExternalVersion.WithKind("Status"))
|
||||
@ -769,15 +774,19 @@ func (a *APIInstaller) registerResourceHandlers(path string, storage rest.Storag
|
||||
if isSubresource {
|
||||
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))
|
||||
route := ws.DELETE(action.Path).To(handler).
|
||||
Doc(doc).
|
||||
Param(ws.QueryParameter("pretty", "If 'true', then the output is pretty printed.")).
|
||||
Operation("delete"+namespaced+kind+strings.Title(subresource)+operationSuffix).
|
||||
Produces(append(storageMeta.ProducesMIMETypes(action.Verb), mediaTypes...)...).
|
||||
Writes(versionedStatus).
|
||||
Returns(http.StatusOK, "OK", versionedStatus).
|
||||
Returns(http.StatusAccepted, "Accepted", versionedStatus)
|
||||
Writes(deleteReturnType).
|
||||
Returns(http.StatusOK, "OK", deleteReturnType).
|
||||
Returns(http.StatusAccepted, "Accepted", deleteReturnType)
|
||||
if isGracefulDeleter {
|
||||
route.Reads(versionedDeleterObject)
|
||||
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
|
||||
}
|
||||
|
||||
// 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 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)
|
||||
}
|
||||
|
||||
// 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
|
||||
// of RESTful resources.
|
||||
type CollectionDeleter interface {
|
||||
|
Loading…
Reference in New Issue
Block a user