Commit 7408f6b3 authored by Kubernetes Submit Queue's avatar Kubernetes Submit Queue Committed by GitHub

Merge pull request #45661 from deads2k/cli-11-delete

Automatic merge from submit-queue orphan when kubectl delete --cascade=false The default for new objects is to propagate deletes (use GC) when no deleteoptions are passed. In addition, the vast majority of kube objects use this default. Only a few controllers resources (sts, rc, deploy, jobs, rs) orphan by default. This means that when you do `kubectl delete sa/foo --cascade=false` you do *not* orphan. That doesn't fulfill the intent of the command. This explicitly orphans when `--cascade=false` so we don't use GC. @fabianofranz @jwforres I liked this easter egg :) @kubernetes/sig-cli-bugs we should backport this to 1.6
parents 86eb1894 e91716a2
...@@ -294,7 +294,10 @@ func DeleteResult(r *resource.Result, out io.Writer, ignoreNotFound bool, shortO ...@@ -294,7 +294,10 @@ func DeleteResult(r *resource.Result, out io.Writer, ignoreNotFound bool, shortO
return err return err
} }
found++ found++
return deleteResource(info, out, shortOutput, mapper, nil)
// if we're here, it means that cascade=false (not the default), so we should orphan as requested
orphan := true
return deleteResource(info, out, shortOutput, mapper, &metav1.DeleteOptions{OrphanDependents: &orphan})
}) })
if err != nil { if err != nil {
return err return err
......
...@@ -140,8 +140,9 @@ func TestOrphanDependentsInDeleteObject(t *testing.T) { ...@@ -140,8 +140,9 @@ func TestOrphanDependentsInDeleteObject(t *testing.T) {
t.Errorf("unexpected output: %s", buf.String()) t.Errorf("unexpected output: %s", buf.String())
} }
// Test that delete options should be nil when cascade is false. // Test that delete options should be set to orphan when cascade is false.
expectedOrphanDependents = nil trueVar := true
expectedOrphanDependents = &trueVar
buf, errBuf = bytes.NewBuffer([]byte{}), bytes.NewBuffer([]byte{}) buf, errBuf = bytes.NewBuffer([]byte{}), bytes.NewBuffer([]byte{})
cmd = NewCmdDelete(f, buf, errBuf) cmd = NewCmdDelete(f, buf, errBuf)
cmd.Flags().Set("namespace", "test") cmd.Flags().Set("namespace", "test")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment