From 1ed263e0e5d11f6047ce32e2e0dab315894274cc Mon Sep 17 00:00:00 2001 From: deads2k Date: Thu, 11 Aug 2016 08:52:12 -0400 Subject: [PATCH] add --raw for kubectl get --- hack/make-rules/test-cmd.sh | 2 ++ pkg/kubectl/cmd/get.go | 30 ++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/hack/make-rules/test-cmd.sh b/hack/make-rules/test-cmd.sh index 46322937085..92f30df24a1 100755 --- a/hack/make-rules/test-cmd.sh +++ b/hack/make-rules/test-cmd.sh @@ -393,6 +393,8 @@ runTests() { rm "${RESTMAPPER_ERROR_FILE}" # Post-condition: None + kubectl get "${kube_flags[@]}" --raw /version + ########################### # POD creation / deletion # ########################### diff --git a/pkg/kubectl/cmd/get.go b/pkg/kubectl/cmd/get.go index 82dac9d09f9..804c43777b1 100644 --- a/pkg/kubectl/cmd/get.go +++ b/pkg/kubectl/cmd/get.go @@ -36,6 +36,8 @@ import ( type GetOptions struct { Filenames []string Recursive bool + + Raw string } var ( @@ -116,12 +118,40 @@ func NewCmdGet(f *cmdutil.Factory, out io.Writer, errOut io.Writer) *cobra.Comma kubectl.AddJsonFilenameFlag(cmd, &options.Filenames, usage) cmdutil.AddRecursiveFlag(cmd, &options.Recursive) cmdutil.AddInclude3rdPartyFlags(cmd) + cmd.Flags().StringVar(&options.Raw, "raw", options.Raw, "Raw URI to request from the server. Uses the transport specified by the kubeconfig file.") return cmd } // RunGet implements the generic Get command // TODO: convert all direct flag accessors to a struct and pass that instead of cmd func RunGet(f *cmdutil.Factory, out io.Writer, errOut io.Writer, cmd *cobra.Command, args []string, options *GetOptions) error { + if len(options.Raw) > 0 { + client, err := f.Client() + if err != nil { + return err + } + + stream, err := client.RESTClient.Get().RequestURI(options.Raw).Stream() + if err != nil { + return err + } + defer stream.Close() + + for { + buffer := make([]byte, 1024, 1024) + bytesRead, err := stream.Read(buffer) + if bytesRead > 0 { + fmt.Printf("%s", string(buffer[:bytesRead])) + } + if err == io.EOF { + return nil + } + if err != nil { + return err + } + } + } + selector := cmdutil.GetFlagString(cmd, "selector") allNamespaces := cmdutil.GetFlagBool(cmd, "all-namespaces") showKind := cmdutil.GetFlagBool(cmd, "show-kind")