Commit 62b48835 authored by Janet Kuo's avatar Janet Kuo

Enable -c for kubectl logs container arg

parent f41c0d02
......@@ -428,6 +428,8 @@ _kubectl_logs()
flags_with_completion=()
flags_completion=()
flags+=("--container=")
two_word_flags+=("-c")
flags+=("--follow")
flags+=("-f")
flags+=("--help")
......
......@@ -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 logs [-f] [-p] POD [CONTAINER]
kubectl logs [-f] [-p] POD [-c CONTAINER]
```
### Examples
......@@ -27,6 +27,7 @@ $ kubectl logs -f 123456-7890 ruby-container
### Options
```
-c, --container="": Container name
-f, --follow=false: Specify if the logs should be streamed.
-h, --help=false: help for logs
--interactive=true: If true, prompt the user for input when required. Default true.
......@@ -65,6 +66,6 @@ $ kubectl logs -f 123456-7890 ruby-container
### SEE ALSO
* [kubectl](kubectl.md) - kubectl controls the Kubernetes cluster manager
###### Auto generated by spf13/cobra at 2015-05-21 20:24:03.06578685 +0000 UTC
###### Auto generated by spf13/cobra at 2015-06-30 16:27:32.981507725 +0000 UTC
[![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/docs/kubectl_logs.md?pixel)]()
......@@ -18,6 +18,10 @@ Print the logs for a container in a pod. If the pod has only one container, the
.SH OPTIONS
.PP
\fB\-c\fP, \fB\-\-container\fP=""
Container name
.PP
\fB\-f\fP, \fB\-\-follow\fP=false
Specify if the logs should be streamed.
......
......@@ -61,15 +61,20 @@ func selectContainer(pod *api.Pod, in io.Reader, out io.Writer) string {
}
}
type logParams struct {
containerName string
}
// NewCmdLog creates a new pod log command
func NewCmdLog(f *cmdutil.Factory, out io.Writer) *cobra.Command {
params := &logParams{}
cmd := &cobra.Command{
Use: "logs [-f] [-p] POD [CONTAINER]",
Use: "logs [-f] [-p] POD [-c 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,
Run: func(cmd *cobra.Command, args []string) {
err := RunLog(f, out, cmd, args)
err := RunLog(f, out, cmd, args, params)
cmdutil.CheckErr(err)
},
Aliases: []string{"log"},
......@@ -77,11 +82,12 @@ 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.")
cmd.Flags().StringVarP(&params.containerName, "container", "c", "", "Container name")
return cmd
}
// RunLog retrieves a pod log
func RunLog(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string) error {
func RunLog(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string, p *logParams) error {
if len(os.Args) > 1 && os.Args[1] == "log" {
printDeprecationWarning("logs", "log")
}
......@@ -111,13 +117,19 @@ func RunLog(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string
}
var container string
if len(args) == 1 {
if len(pod.Spec.Containers) != 1 {
return fmt.Errorf("POD %s has more than one container; please specify the container to print logs for", pod.ObjectMeta.Name)
}
container = pod.Spec.Containers[0].Name
if cmdutil.GetFlagString(cmd, "container") != "" {
// [-c CONTAINER]
container = p.containerName
} else {
container = args[1]
// [CONTAINER] (container as arg not flag) is supported as legacy behavior. See PR #10519 for more details.
if len(args) == 1 {
if len(pod.Spec.Containers) != 1 {
return fmt.Errorf("POD %s has more than one container; please specify the container to print logs for", pod.ObjectMeta.Name)
}
container = pod.Spec.Containers[0].Name
} else {
container = args[1]
}
}
follow := false
......
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