Skip to content

Commit

Permalink
Make delete actually stop resources by default.
Browse files Browse the repository at this point in the history
Refactor for shared code.
  • Loading branch information
brendandburns committed Apr 23, 2015
1 parent 8667ebd commit 8f583bb
Show file tree
Hide file tree
Showing 33 changed files with 182 additions and 26 deletions.
1 change: 1 addition & 0 deletions contrib/completions/bash/kubectl
Original file line number Diff line number Diff line change
Expand Up @@ -351,6 +351,7 @@ _kubectl_delete()
flags_completion+=("_filedir '@(json|yaml|yml)'")
flags+=("--help")
flags+=("-h")
flags+=("--recursive")
flags+=("--selector=")
two_word_flags+=("-l")

Expand Down
4 changes: 4 additions & 0 deletions docs/kubectl.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,4 +66,8 @@ kubectl
* [kubectl update](kubectl_update.md) - Update a resource by filename or stdin.
* [kubectl version](kubectl_version.md) - Print the client and server version information.

<<<<<<< HEAD
###### Auto generated by spf13/cobra at 2015-04-23 00:47:55.406236586 +0000 UTC
=======
###### Auto generated by spf13/cobra at 2015-04-23 04:15:00.564064886 +0000 UTC
>>>>>>> Make delete actually stop resources by default.
4 changes: 4 additions & 0 deletions docs/kubectl_api-versions.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,4 +50,8 @@ kubectl api-versions
### SEE ALSO
* [kubectl](kubectl.md) - kubectl controls the Kubernetes cluster manager

<<<<<<< HEAD
###### Auto generated by spf13/cobra at 2015-04-23 00:47:55.405815046 +0000 UTC
=======
###### Auto generated by spf13/cobra at 2015-04-23 04:15:00.5627252 +0000 UTC
>>>>>>> Make delete actually stop resources by default.
4 changes: 4 additions & 0 deletions docs/kubectl_cluster-info.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,4 +50,8 @@ kubectl cluster-info
### SEE ALSO
* [kubectl](kubectl.md) - kubectl controls the Kubernetes cluster manager

<<<<<<< HEAD
###### Auto generated by spf13/cobra at 2015-04-23 00:47:55.405639667 +0000 UTC
=======
###### Auto generated by spf13/cobra at 2015-04-23 04:15:00.562440964 +0000 UTC
>>>>>>> Make delete actually stop resources by default.
4 changes: 4 additions & 0 deletions docs/kubectl_config.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,4 +63,8 @@ kubectl config SUBCOMMAND
* [kubectl config use-context](kubectl_config_use-context.md) - Sets the current-context in a kubeconfig file
* [kubectl config view](kubectl_config_view.md) - displays Merged kubeconfig settings or a specified kubeconfig file.

<<<<<<< HEAD
###### Auto generated by spf13/cobra at 2015-04-23 00:47:55.405466384 +0000 UTC
=======
###### Auto generated by spf13/cobra at 2015-04-23 04:15:00.562062414 +0000 UTC
>>>>>>> Make delete actually stop resources by default.
4 changes: 4 additions & 0 deletions docs/kubectl_config_set-cluster.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,4 +65,8 @@ $ kubectl config set-cluster e2e --insecure-skip-tls-verify=true
### SEE ALSO
* [kubectl config](kubectl_config.md) - config modifies kubeconfig files

<<<<<<< HEAD
###### Auto generated by spf13/cobra at 2015-04-23 00:47:55.404357726 +0000 UTC
=======
###### Auto generated by spf13/cobra at 2015-04-23 04:15:00.559277506 +0000 UTC
>>>>>>> Make delete actually stop resources by default.
4 changes: 4 additions & 0 deletions docs/kubectl_config_set-context.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,4 +58,8 @@ $ kubectl config set-context gce --user=cluster-admin
### SEE ALSO
* [kubectl config](kubectl_config.md) - config modifies kubeconfig files

<<<<<<< HEAD
###### Auto generated by spf13/cobra at 2015-04-23 00:47:55.40472172 +0000 UTC
=======
###### Auto generated by spf13/cobra at 2015-04-23 04:15:00.56090535 +0000 UTC
>>>>>>> Make delete actually stop resources by default.
4 changes: 4 additions & 0 deletions docs/kubectl_config_set-credentials.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,4 +78,8 @@ $ kubectl set-credentials cluster-admin --client-certificate=~/.kube/admin.crt -
### SEE ALSO
* [kubectl config](kubectl_config.md) - config modifies kubeconfig files

<<<<<<< HEAD
###### Auto generated by spf13/cobra at 2015-04-23 00:47:55.40454463 +0000 UTC
=======
###### Auto generated by spf13/cobra at 2015-04-23 04:15:00.560249737 +0000 UTC
>>>>>>> Make delete actually stop resources by default.
4 changes: 4 additions & 0 deletions docs/kubectl_config_set.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,4 +52,8 @@ kubectl config set PROPERTY_NAME PROPERTY_VALUE
### SEE ALSO
* [kubectl config](kubectl_config.md) - config modifies kubeconfig files

<<<<<<< HEAD
###### Auto generated by spf13/cobra at 2015-04-23 00:47:55.404916515 +0000 UTC
=======
###### Auto generated by spf13/cobra at 2015-04-23 04:15:00.561157421 +0000 UTC
>>>>>>> Make delete actually stop resources by default.
4 changes: 4 additions & 0 deletions docs/kubectl_config_unset.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,4 +51,8 @@ kubectl config unset PROPERTY_NAME
### SEE ALSO
* [kubectl config](kubectl_config.md) - config modifies kubeconfig files

<<<<<<< HEAD
###### Auto generated by spf13/cobra at 2015-04-23 00:47:55.405094144 +0000 UTC
=======
###### Auto generated by spf13/cobra at 2015-04-23 04:15:00.561405118 +0000 UTC
>>>>>>> Make delete actually stop resources by default.
4 changes: 4 additions & 0 deletions docs/kubectl_config_use-context.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,4 +50,8 @@ kubectl config use-context CONTEXT_NAME
### SEE ALSO
* [kubectl config](kubectl_config.md) - config modifies kubeconfig files

<<<<<<< HEAD
###### Auto generated by spf13/cobra at 2015-04-23 00:47:55.405277784 +0000 UTC
=======
###### Auto generated by spf13/cobra at 2015-04-23 04:15:00.561696328 +0000 UTC
>>>>>>> Make delete actually stop resources by default.
4 changes: 4 additions & 0 deletions docs/kubectl_config_view.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,4 +73,8 @@ $ kubectl config view -o template --template='{{range .users}}{{ if eq .name "e2
### SEE ALSO
* [kubectl config](kubectl_config.md) - config modifies kubeconfig files

<<<<<<< HEAD
###### Auto generated by spf13/cobra at 2015-04-23 00:47:55.404151238 +0000 UTC
=======
###### Auto generated by spf13/cobra at 2015-04-23 04:15:00.559002095 +0000 UTC
>>>>>>> Make delete actually stop resources by default.
4 changes: 4 additions & 0 deletions docs/kubectl_create.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,4 +63,8 @@ $ cat pod.json | kubectl create -f -
### SEE ALSO
* [kubectl](kubectl.md) - kubectl controls the Kubernetes cluster manager

<<<<<<< HEAD
###### Auto generated by spf13/cobra at 2015-04-23 00:47:55.400230448 +0000 UTC
=======
###### Auto generated by spf13/cobra at 2015-04-23 04:15:00.552973226 +0000 UTC
>>>>>>> Make delete actually stop resources by default.
5 changes: 5 additions & 0 deletions docs/kubectl_delete.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ $ kubectl delete pods --all
--all=false: [-all] to select all the specified resources
-f, --filename=[]: Filename, directory, or URL to a file containing the resource to delete
-h, --help=false: help for delete
--recursive=true: If true, try to recursively delete resources managed by this resource (e.g. Pods created by a ReplicationController). Default true.
-l, --selector="": Selector (label query) to filter on
```

Expand Down Expand Up @@ -81,4 +82,8 @@ $ kubectl delete pods --all
### SEE ALSO
* [kubectl](kubectl.md) - kubectl controls the Kubernetes cluster manager

<<<<<<< HEAD
###### Auto generated by spf13/cobra at 2015-04-23 00:47:55.400618492 +0000 UTC
=======
###### Auto generated by spf13/cobra at 2015-04-23 04:15:00.55368753 +0000 UTC
>>>>>>> Make delete actually stop resources by default.
4 changes: 4 additions & 0 deletions docs/kubectl_describe.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,4 +53,8 @@ kubectl describe RESOURCE ID
### SEE ALSO
* [kubectl](kubectl.md) - kubectl controls the Kubernetes cluster manager

<<<<<<< HEAD
###### Auto generated by spf13/cobra at 2015-04-23 00:47:55.40003297 +0000 UTC
=======
###### Auto generated by spf13/cobra at 2015-04-23 04:15:00.552614646 +0000 UTC
>>>>>>> Make delete actually stop resources by default.
4 changes: 4 additions & 0 deletions docs/kubectl_exec.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,4 +64,8 @@ $ kubectl exec -p 123456-7890 -c ruby-container -i -t -- bash -il
### SEE ALSO
* [kubectl](kubectl.md) - kubectl controls the Kubernetes cluster manager

<<<<<<< HEAD
###### Auto generated by spf13/cobra at 2015-04-23 00:47:55.401622652 +0000 UTC
=======
###### Auto generated by spf13/cobra at 2015-04-23 04:15:00.555910965 +0000 UTC
>>>>>>> Make delete actually stop resources by default.
4 changes: 4 additions & 0 deletions docs/kubectl_expose.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,4 +82,8 @@ $ kubectl expose streamer --port=4100 --protocol=udp --service-name=video-stream
### SEE ALSO
* [kubectl](kubectl.md) - kubectl controls the Kubernetes cluster manager

<<<<<<< HEAD
###### Auto generated by spf13/cobra at 2015-04-23 00:47:55.403631642 +0000 UTC
=======
###### Auto generated by spf13/cobra at 2015-04-23 04:15:00.558136731 +0000 UTC
>>>>>>> Make delete actually stop resources by default.
4 changes: 4 additions & 0 deletions docs/kubectl_get.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,4 +85,8 @@ $ kubectl get rc/web service/frontend pods/web-pod-13je7
### SEE ALSO
* [kubectl](kubectl.md) - kubectl controls the Kubernetes cluster manager

<<<<<<< HEAD
###### Auto generated by spf13/cobra at 2015-04-23 00:47:55.399795546 +0000 UTC
=======
###### Auto generated by spf13/cobra at 2015-04-23 04:15:00.552136955 +0000 UTC
>>>>>>> Make delete actually stop resources by default.
4 changes: 4 additions & 0 deletions docs/kubectl_label.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,4 +81,8 @@ $ kubectl label pods foo bar-
### SEE ALSO
* [kubectl](kubectl.md) - kubectl controls the Kubernetes cluster manager

<<<<<<< HEAD
###### Auto generated by spf13/cobra at 2015-04-23 00:47:55.403876136 +0000 UTC
=======
###### Auto generated by spf13/cobra at 2015-04-23 04:15:00.558574442 +0000 UTC
>>>>>>> Make delete actually stop resources by default.
4 changes: 4 additions & 0 deletions docs/kubectl_log.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,4 +62,8 @@ $ kubectl log -f 123456-7890 ruby-container
### SEE ALSO
* [kubectl](kubectl.md) - kubectl controls the Kubernetes cluster manager

<<<<<<< HEAD
###### Auto generated by spf13/cobra at 2015-04-23 00:47:55.400998066 +0000 UTC
=======
###### Auto generated by spf13/cobra at 2015-04-23 04:15:00.554170011 +0000 UTC
>>>>>>> Make delete actually stop resources by default.
4 changes: 4 additions & 0 deletions docs/kubectl_namespace.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,4 +53,8 @@ kubectl namespace [namespace]
### SEE ALSO
* [kubectl](kubectl.md) - kubectl controls the Kubernetes cluster manager

<<<<<<< HEAD
###### Auto generated by spf13/cobra at 2015-04-23 00:47:55.400806182 +0000 UTC
=======
###### Auto generated by spf13/cobra at 2015-04-23 04:15:00.553914105 +0000 UTC
>>>>>>> Make delete actually stop resources by default.
4 changes: 4 additions & 0 deletions docs/kubectl_port-forward.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,4 +68,8 @@ $ kubectl port-forward -p mypod 0:5000
### SEE ALSO
* [kubectl](kubectl.md) - kubectl controls the Kubernetes cluster manager

<<<<<<< HEAD
###### Auto generated by spf13/cobra at 2015-04-23 00:47:55.40181203 +0000 UTC
=======
###### Auto generated by spf13/cobra at 2015-04-23 04:15:00.556477044 +0000 UTC
>>>>>>> Make delete actually stop resources by default.
4 changes: 4 additions & 0 deletions docs/kubectl_proxy.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,4 +65,8 @@ $ kubectl proxy --api-prefix=k8s-api
### SEE ALSO
* [kubectl](kubectl.md) - kubectl controls the Kubernetes cluster manager

<<<<<<< HEAD
###### Auto generated by spf13/cobra at 2015-04-23 00:47:55.402034031 +0000 UTC
=======
###### Auto generated by spf13/cobra at 2015-04-23 04:15:00.556873406 +0000 UTC
>>>>>>> Make delete actually stop resources by default.
4 changes: 4 additions & 0 deletions docs/kubectl_resize.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,4 +68,8 @@ $ kubectl resize --current-replicas=2 --replicas=3 replicationcontrollers foo
### SEE ALSO
* [kubectl](kubectl.md) - kubectl controls the Kubernetes cluster manager

<<<<<<< HEAD
###### Auto generated by spf13/cobra at 2015-04-23 00:47:55.401412855 +0000 UTC
=======
###### Auto generated by spf13/cobra at 2015-04-23 04:15:00.555354068 +0000 UTC
>>>>>>> Make delete actually stop resources by default.
4 changes: 4 additions & 0 deletions docs/kubectl_rolling-update.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,4 +68,8 @@ $ cat frontend-v2.json | kubectl rolling-update frontend-v1 -f -
### SEE ALSO
* [kubectl](kubectl.md) - kubectl controls the Kubernetes cluster manager

<<<<<<< HEAD
###### Auto generated by spf13/cobra at 2015-04-23 00:47:55.401210692 +0000 UTC
=======
###### Auto generated by spf13/cobra at 2015-04-23 04:15:00.554380414 +0000 UTC
>>>>>>> Make delete actually stop resources by default.
4 changes: 4 additions & 0 deletions docs/kubectl_run-container.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,4 +78,8 @@ $ kubectl run-container nginx --image=nginx --overrides='{ "apiVersion": "v1beta
### SEE ALSO
* [kubectl](kubectl.md) - kubectl controls the Kubernetes cluster manager

<<<<<<< HEAD
###### Auto generated by spf13/cobra at 2015-04-23 00:47:55.402296924 +0000 UTC
=======
###### Auto generated by spf13/cobra at 2015-04-23 04:15:00.557258783 +0000 UTC
>>>>>>> Make delete actually stop resources by default.
4 changes: 4 additions & 0 deletions docs/kubectl_stop.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,4 +72,8 @@ $ kubectl stop -f path/to/resources
### SEE ALSO
* [kubectl](kubectl.md) - kubectl controls the Kubernetes cluster manager

<<<<<<< HEAD
###### Auto generated by spf13/cobra at 2015-04-23 00:47:55.402507426 +0000 UTC
=======
###### Auto generated by spf13/cobra at 2015-04-23 04:15:00.55753913 +0000 UTC
>>>>>>> Make delete actually stop resources by default.
4 changes: 4 additions & 0 deletions docs/kubectl_update.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,4 +67,8 @@ $ kubectl update pods my-pod --patch='{ "apiVersion": "v1beta1", "desiredState":
### SEE ALSO
* [kubectl](kubectl.md) - kubectl controls the Kubernetes cluster manager

<<<<<<< HEAD
###### Auto generated by spf13/cobra at 2015-04-23 00:47:55.400435658 +0000 UTC
=======
###### Auto generated by spf13/cobra at 2015-04-23 04:15:00.553343481 +0000 UTC
>>>>>>> Make delete actually stop resources by default.
4 changes: 4 additions & 0 deletions docs/kubectl_version.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,4 +51,8 @@ kubectl version
### SEE ALSO
* [kubectl](kubectl.md) - kubectl controls the Kubernetes cluster manager

<<<<<<< HEAD
###### Auto generated by spf13/cobra at 2015-04-23 00:47:55.405995955 +0000 UTC
=======
###### Auto generated by spf13/cobra at 2015-04-23 04:15:00.563064053 +0000 UTC
>>>>>>> Make delete actually stop resources by default.
4 changes: 4 additions & 0 deletions docs/man/man1/kubectl-delete.1
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,10 @@ will be lost along with the rest of the resource.
\fB\-h\fP, \fB\-\-help\fP=false
help for delete

.PP
\fB\-\-recursive\fP=true
If true, try to recursively delete resources managed by this resource (e.g. Pods created by a ReplicationController). Default true.

.PP
\fB\-l\fP, \fB\-\-selector\fP=""
Selector (label query) to filter on
Expand Down
36 changes: 34 additions & 2 deletions pkg/kubectl/cmd/delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ func NewCmdDelete(f *cmdutil.Factory, out io.Writer) *cobra.Command {
kubectl.AddJsonFilenameFlag(cmd, &filenames, usage)
cmd.Flags().StringP("selector", "l", "", "Selector (label query) to filter on")
cmd.Flags().Bool("all", false, "[-all] to select all the specified resources")
cmd.Flags().Bool("recursive", true, "If true, try to recursively delete resources managed by this resource (e.g. Pods created by a ReplicationController). Default true.")
return cmd
}

Expand All @@ -95,8 +96,39 @@ func RunDelete(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []str
return err
}

// By default use a reaper to delete all related resources.
if cmdutil.GetFlagBool(cmd, "recursive") {
return ReapResult(r, f, out)
}
return DeleteResult(r, out)
}

func ReapResult(r *resource.Result, f *cmdutil.Factory, out io.Writer) error {
found := 0
err := r.IgnoreErrors(errors.IsNotFound).Visit(func(info *resource.Info) error {
found++
reaper, err := f.Reaper(info.Mapping)
if err != nil {
return err
}
if _, err := reaper.Stop(info.Namespace, info.Name); err != nil {
return err
}
fmt.Fprintf(out, "%s/%s\n", info.Mapping.Resource, info.Name)
return nil
})
if err != nil {
return err
}
if found == 0 {
fmt.Fprintf(out, "No resources found\n")
}
return nil
}

func DeleteResult(r *resource.Result, out io.Writer) error {
found := 0
err = r.IgnoreErrors(errors.IsNotFound).Visit(func(r *resource.Info) error {
err := r.IgnoreErrors(errors.IsNotFound).Visit(func(r *resource.Info) error {
found++
if err := resource.NewHelper(r.Client, r.Mapping).Delete(r.Namespace, r.Name); err != nil {
return err
Expand All @@ -108,7 +140,7 @@ func RunDelete(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []str
return err
}
if found == 0 {
fmt.Fprintf(cmd.Out(), "No resources found\n")
fmt.Fprintf(out, "No resources found\n")
}
return nil
}

0 comments on commit 8f583bb

Please sign in to comment.