mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-03 09:22:44 +00:00
Merge pull request #34836 from mikedanese/prune-1
Automatic merge from submit-queue kubectl: apply prune should fallback to basic delete when a resource has no reaper Fixes #34790 cc @kubernetes/kubectl @MrHohn
This commit is contained in:
commit
3f4c438946
@ -1111,6 +1111,14 @@ __EOF__
|
|||||||
kube::test::get_object_assert 'pods b' "{{${id_field}}}" 'b'
|
kube::test::get_object_assert 'pods b' "{{${id_field}}}" 'b'
|
||||||
kubectl delete pod/a pod/b
|
kubectl delete pod/a pod/b
|
||||||
|
|
||||||
|
## kubectl apply --prune should fallback to delete for non reapable types
|
||||||
|
kubectl apply --all --prune -f hack/testdata/prune-reap/a.yml 2>&1 "${kube_flags[@]}"
|
||||||
|
kube::test::get_object_assert 'pvc a-pvc' "{{${id_field}}}" 'a-pvc'
|
||||||
|
kubectl apply --all --prune -f hack/testdata/prune-reap/b.yml 2>&1 "${kube_flags[@]}"
|
||||||
|
kube::test::get_object_assert 'pvc b-pvc' "{{${id_field}}}" 'b-pvc'
|
||||||
|
kube::test::get_object_assert pods "{{range.items}}{{$id_field}}:{{end}}" ''
|
||||||
|
kubectl delete pvc b-pvc 2>&1 "${kube_flags[@]}"
|
||||||
|
|
||||||
## kubectl run should create deployments or jobs
|
## kubectl run should create deployments or jobs
|
||||||
# Pre-Condition: no Job exists
|
# Pre-Condition: no Job exists
|
||||||
kube::test::get_object_assert jobs "{{range.items}}{{$id_field}}:{{end}}" ''
|
kube::test::get_object_assert jobs "{{range.items}}{{$id_field}}:{{end}}" ''
|
||||||
|
10
hack/testdata/prune-reap/a.yml
vendored
Normal file
10
hack/testdata/prune-reap/a.yml
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
kind: PersistentVolumeClaim
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: a-pvc
|
||||||
|
spec:
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 10G
|
10
hack/testdata/prune-reap/b.yml
vendored
Normal file
10
hack/testdata/prune-reap/b.yml
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
kind: PersistentVolumeClaim
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: b-pvc
|
||||||
|
spec:
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 10G
|
@ -351,10 +351,7 @@ func (p *pruner) prune(namespace string, mapping *meta.RESTMapping, shortOutput
|
|||||||
|
|
||||||
func (p *pruner) delete(namespace, name string, mapping *meta.RESTMapping, c resource.RESTClient) error {
|
func (p *pruner) delete(namespace, name string, mapping *meta.RESTMapping, c resource.RESTClient) error {
|
||||||
if !p.cascade {
|
if !p.cascade {
|
||||||
if err := resource.NewHelper(c, mapping).Delete(namespace, name); err != nil {
|
return resource.NewHelper(c, mapping).Delete(namespace, name)
|
||||||
return err
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
cs, err := p.clientsetFunc()
|
cs, err := p.clientsetFunc()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -362,8 +359,11 @@ func (p *pruner) delete(namespace, name string, mapping *meta.RESTMapping, c res
|
|||||||
}
|
}
|
||||||
r, err := kubectl.ReaperFor(mapping.GroupVersionKind.GroupKind(), cs)
|
r, err := kubectl.ReaperFor(mapping.GroupVersionKind.GroupKind(), cs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if _, ok := err.(*kubectl.NoSuchReaperError); !ok {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
return resource.NewHelper(c, mapping).Delete(namespace, name)
|
||||||
|
}
|
||||||
if err := r.Stop(namespace, name, 2*time.Minute, api.NewDeleteOptions(int64(p.gracePeriod))); err != nil {
|
if err := r.Stop(namespace, name, 2*time.Minute, api.NewDeleteOptions(int64(p.gracePeriod))); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user