mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 20:24:09 +00:00
kubectl should always set orphanDependents=false for cascading deletion
This commit is contained in:
parent
17375fc59f
commit
78ae193de6
@ -252,7 +252,8 @@ func ReapResult(r *resource.Result, f cmdutil.Factory, out io.Writer, isDefaultD
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
// If there is no reaper for this resources and the user didn't explicitly ask for stop.
|
// If there is no reaper for this resources and the user didn't explicitly ask for stop.
|
||||||
if kubectl.IsNoSuchReaperError(err) && isDefaultDelete {
|
if kubectl.IsNoSuchReaperError(err) && isDefaultDelete {
|
||||||
return deleteResource(info, out, shortOutput, mapper)
|
// No client side reaper found. Let the server do cascading deletion.
|
||||||
|
return cascadingDeleteResource(info, out, shortOutput, mapper)
|
||||||
}
|
}
|
||||||
return cmdutil.AddSourceToErr("reaping", info.Source, err)
|
return cmdutil.AddSourceToErr("reaping", info.Source, err)
|
||||||
}
|
}
|
||||||
@ -292,7 +293,7 @@ func DeleteResult(r *resource.Result, out io.Writer, ignoreNotFound bool, shortO
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
found++
|
found++
|
||||||
return deleteResource(info, out, shortOutput, mapper)
|
return deleteResource(info, out, shortOutput, mapper, nil)
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -303,8 +304,14 @@ func DeleteResult(r *resource.Result, out io.Writer, ignoreNotFound bool, shortO
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func deleteResource(info *resource.Info, out io.Writer, shortOutput bool, mapper meta.RESTMapper) error {
|
func cascadingDeleteResource(info *resource.Info, out io.Writer, shortOutput bool, mapper meta.RESTMapper) error {
|
||||||
if err := resource.NewHelper(info.Client, info.Mapping).Delete(info.Namespace, info.Name); err != nil {
|
falseVar := false
|
||||||
|
deleteOptions := &metav1.DeleteOptions{OrphanDependents: &falseVar}
|
||||||
|
return deleteResource(info, out, shortOutput, mapper, deleteOptions)
|
||||||
|
}
|
||||||
|
|
||||||
|
func deleteResource(info *resource.Info, out io.Writer, shortOutput bool, mapper meta.RESTMapper, deleteOptions *metav1.DeleteOptions) error {
|
||||||
|
if err := resource.NewHelper(info.Client, info.Mapping).DeleteWithOptions(info.Namespace, info.Name, deleteOptions); err != nil {
|
||||||
return cmdutil.AddSourceToErr("deleting", info.Source, err)
|
return cmdutil.AddSourceToErr("deleting", info.Source, err)
|
||||||
}
|
}
|
||||||
cmdutil.PrintSuccess(mapper, shortOutput, out, info.Mapping.Resource, info.Name, false, "deleted")
|
cmdutil.PrintSuccess(mapper, shortOutput, out, info.Mapping.Resource, info.Name, false, "deleted")
|
||||||
|
@ -20,6 +20,7 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/api/meta"
|
"k8s.io/apimachinery/pkg/api/meta"
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/fields"
|
"k8s.io/apimachinery/pkg/fields"
|
||||||
"k8s.io/apimachinery/pkg/labels"
|
"k8s.io/apimachinery/pkg/labels"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
@ -95,10 +96,15 @@ func (m *Helper) WatchSingle(namespace, name, resourceVersion string) (watch.Int
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *Helper) Delete(namespace, name string) error {
|
func (m *Helper) Delete(namespace, name string) error {
|
||||||
|
return m.DeleteWithOptions(namespace, name, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Helper) DeleteWithOptions(namespace, name string, options *metav1.DeleteOptions) error {
|
||||||
return m.RESTClient.Delete().
|
return m.RESTClient.Delete().
|
||||||
NamespaceIfScoped(namespace, m.NamespaceScoped).
|
NamespaceIfScoped(namespace, m.NamespaceScoped).
|
||||||
Resource(m.Resource).
|
Resource(m.Resource).
|
||||||
Name(name).
|
Name(name).
|
||||||
|
Body(options).
|
||||||
Do().
|
Do().
|
||||||
Error()
|
Error()
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user