From ecaf0874b268cdf1f55f9fa5cfd886d2995f9b2d Mon Sep 17 00:00:00 2001 From: Dawn Chen Date: Wed, 22 Apr 2015 15:35:49 -0700 Subject: [PATCH] Introduce --previous option to kubectl log --- contrib/completions/bash/kubectl | 2 ++ docs/kubectl_log.md | 6 +++++- docs/man/man1/kubectl-log.1 | 7 +++++++ pkg/kubectl/cmd/log.go | 12 +++++++++++- 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/contrib/completions/bash/kubectl b/contrib/completions/bash/kubectl index 4d29416a5c5..cfd9a3374d9 100644 --- a/contrib/completions/bash/kubectl +++ b/contrib/completions/bash/kubectl @@ -404,6 +404,8 @@ _kubectl_log() flags+=("--help") flags+=("-h") flags+=("--interactive") + flags+=("--previous") + flags+=("-p") must_have_one_flag=() must_have_one_noun=() diff --git a/docs/kubectl_log.md b/docs/kubectl_log.md index def67609563..fc5a606a21d 100644 --- a/docs/kubectl_log.md +++ b/docs/kubectl_log.md @@ -8,7 +8,7 @@ Print the logs for a container in a pod. Print the logs for a container in a pod. If the pod has only one container, the container name is optional. ``` -kubectl log [-f] POD [CONTAINER] +kubectl log [-f] [-p] POD [CONTAINER] ``` ### Examples @@ -17,6 +17,9 @@ kubectl log [-f] POD [CONTAINER] // Returns snapshot of ruby-container logs from pod 123456-7890. $ kubectl log 123456-7890 ruby-container +// Returns snapshot of previous terminated ruby-container logs from pod 123456-7890. +$ kubectl log -p 123456-7890 ruby-container + // Starts streaming of ruby-container logs from pod 123456-7890. $ kubectl log -f 123456-7890 ruby-container ``` @@ -27,6 +30,7 @@ $ kubectl log -f 123456-7890 ruby-container -f, --follow=false: Specify if the logs should be streamed. -h, --help=false: help for log --interactive=true: If true, prompt the user for input when required. Default true. + -p, --previous=false: If true, print the logs for the previous instance of the container in a pod if it exists. ``` ### Options inherited from parent commands diff --git a/docs/man/man1/kubectl-log.1 b/docs/man/man1/kubectl-log.1 index 3cea9c32782..0c34ffc6ff8 100644 --- a/docs/man/man1/kubectl-log.1 +++ b/docs/man/man1/kubectl-log.1 @@ -29,6 +29,10 @@ Print the logs for a container in a pod. If the pod has only one container, the \fB\-\-interactive\fP=true If true, prompt the user for input when required. Default true. +.PP +\fB\-p\fP, \fB\-\-previous\fP=false + If true, print the logs for the previous instance of the container in a pod if it exists. + .SH OPTIONS INHERITED FROM PARENT COMMANDS .PP @@ -140,6 +144,9 @@ Print the logs for a container in a pod. If the pod has only one container, the // Returns snapshot of ruby\-container logs from pod 123456\-7890. $ kubectl log 123456\-7890 ruby\-container +// Returns snapshot of previous terminated ruby\-container logs from pod 123456\-7890. +$ kubectl log \-p 123456\-7890 ruby\-container + // Starts streaming of ruby\-container logs from pod 123456\-7890. $ kubectl log \-f 123456\-7890 ruby\-container diff --git a/pkg/kubectl/cmd/log.go b/pkg/kubectl/cmd/log.go index 68a0fffd2b8..9378075b500 100644 --- a/pkg/kubectl/cmd/log.go +++ b/pkg/kubectl/cmd/log.go @@ -31,6 +31,9 @@ const ( log_example = `// Returns snapshot of ruby-container logs from pod 123456-7890. $ kubectl log 123456-7890 ruby-container +// Returns snapshot of previous terminated ruby-container logs from pod 123456-7890. +$ kubectl log -p 123456-7890 ruby-container + // Starts streaming of ruby-container logs from pod 123456-7890. $ kubectl log -f 123456-7890 ruby-container` ) @@ -60,7 +63,7 @@ func selectContainer(pod *api.Pod, in io.Reader, out io.Writer) string { // NewCmdLog creates a new pod log command func NewCmdLog(f *cmdutil.Factory, out io.Writer) *cobra.Command { cmd := &cobra.Command{ - Use: "log [-f] POD [CONTAINER]", + Use: "log [-f] [-p] POD [CONTAINER]", Short: "Print the logs for a container in a pod.", Long: "Print the logs for a container in a pod. If the pod has only one container, the container name is optional.", Example: log_example, @@ -71,6 +74,7 @@ func NewCmdLog(f *cmdutil.Factory, out io.Writer) *cobra.Command { } cmd.Flags().BoolP("follow", "f", false, "Specify if the logs should be streamed.") cmd.Flags().Bool("interactive", true, "If true, prompt the user for input when required. Default true.") + cmd.Flags().BoolP("previous", "p", false, "If true, print the logs for the previous instance of the container in a pod if it exists.") return cmd } @@ -115,6 +119,11 @@ func RunLog(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string follow = true } + previous := false + if cmdutil.GetFlagBool(cmd, "previous") { + previous = true + } + readCloser, err := client.RESTClient.Get(). Namespace(namespace). Name(podID). @@ -122,6 +131,7 @@ func RunLog(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string SubResource("log"). Param("follow", strconv.FormatBool(follow)). Param("container", container). + Param("previous", strconv.FormatBool(previous)). Stream() if err != nil { return err