From b0c5d3b02247072ba19aa79c9003ae7b4a61cd04 Mon Sep 17 00:00:00 2001 From: Brendan Burns Date: Sun, 2 Nov 2014 19:51:05 -0800 Subject: [PATCH] Add support for a 'log' command to kubectl. --- pkg/kubectl/cmd/cmd.go | 1 + pkg/kubectl/cmd/log.go | 51 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 pkg/kubectl/cmd/log.go diff --git a/pkg/kubectl/cmd/cmd.go b/pkg/kubectl/cmd/cmd.go index 951983969e..d86603032a 100644 --- a/pkg/kubectl/cmd/cmd.go +++ b/pkg/kubectl/cmd/cmd.go @@ -67,6 +67,7 @@ Find more information at https://github.com/GoogleCloudPlatform/kubernetes.`, cmds.AddCommand(NewCmdUpdate(out)) cmds.AddCommand(NewCmdDelete(out)) cmds.AddCommand(NewCmdNamespace(out)) + cmds.AddCommand(NewCmdLog(out)) if err := cmds.Execute(); err != nil { os.Exit(1) diff --git a/pkg/kubectl/cmd/log.go b/pkg/kubectl/cmd/log.go new file mode 100644 index 0000000000..1aee8f86e8 --- /dev/null +++ b/pkg/kubectl/cmd/log.go @@ -0,0 +1,51 @@ +/* +Copyright 2014 Google Inc. All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cmd + +import ( + "github.com/spf13/cobra" + "io" +) + +func NewCmdLog(out io.Writer) *cobra.Command { + cmd := &cobra.Command{ + Use: "log ", + Short: "Print the logs for a container in a pod", + Run: func(cmd *cobra.Command, args []string) { + if len(args) != 2 { + usageError(cmd, " and are required for log") + } + client := getKubeClient(cmd) + pod, err := client.Pods("default").Get(args[0]) + checkErr(err) + + data, err := client.RESTClient.Get(). + Path("proxy/minions"). + Path(pod.CurrentState.Host). + Path("containerLogs"). + Path(getKubeNamespace(cmd)). + Path(args[0]). + Path(args[1]). + Do(). + Raw() + checkErr(err) + out.Write(data) + + }, + } + return cmd +}