Merge pull request #1824 from ghodss/no_headers_kubectl

Add --no-headers to kubectl get
This commit is contained in:
bgrant0607 2014-10-16 13:37:25 -07:00
commit 641f72096f
4 changed files with 18 additions and 11 deletions

View File

@ -57,13 +57,14 @@ Examples:
outputFormat := getFlagString(cmd, "output") outputFormat := getFlagString(cmd, "output")
templateFile := getFlagString(cmd, "template") templateFile := getFlagString(cmd, "template")
selector := getFlagString(cmd, "selector") selector := getFlagString(cmd, "selector")
err := kubectl.Get(out, getKubeClient(cmd).RESTClient, resource, id, selector, outputFormat, templateFile) err := kubectl.Get(out, getKubeClient(cmd).RESTClient, resource, id, selector, outputFormat, getFlagBool(cmd, "no-headers"), templateFile)
checkErr(err) checkErr(err)
}, },
} }
// TODO Add an --output-version lock which can ensure that regardless of the // TODO Add an --output-version lock which can ensure that regardless of the
// server version, the client output stays the same. // server version, the client output stays the same.
cmd.Flags().StringP("output", "o", "console", "Output format: console|json|yaml|template") cmd.Flags().StringP("output", "o", "console", "Output format: console|json|yaml|template")
cmd.Flags().Bool("no-headers", false, "When output format is console, don't print headers")
cmd.Flags().StringP("template", "t", "", "Path to template file to use when --output=template") cmd.Flags().StringP("template", "t", "", "Path to template file to use when --output=template")
cmd.Flags().StringP("selector", "l", "", "Selector (label query) to filter on") cmd.Flags().StringP("selector", "l", "", "Selector (label query) to filter on")
return cmd return cmd

View File

@ -23,7 +23,7 @@ import (
"github.com/GoogleCloudPlatform/kubernetes/pkg/client" "github.com/GoogleCloudPlatform/kubernetes/pkg/client"
) )
func Get(w io.Writer, c *client.RESTClient, resource, id, selector, format, templateFile string) error { func Get(w io.Writer, c *client.RESTClient, resource string, id string, selector string, format string, noHeaders bool, templateFile string) error {
path, err := resolveResource(resolveToPath, resource) path, err := resolveResource(resolveToPath, resource)
if err != nil { if err != nil {
return err return err
@ -42,7 +42,7 @@ func Get(w io.Writer, c *client.RESTClient, resource, id, selector, format, temp
return err return err
} }
printer, err := getPrinter(format, templateFile) printer, err := getPrinter(format, templateFile, noHeaders)
if err != nil { if err != nil {
return err return err
} }

View File

@ -34,7 +34,7 @@ import (
"gopkg.in/v1/yaml" "gopkg.in/v1/yaml"
) )
func getPrinter(format, templateFile string) (ResourcePrinter, error) { func getPrinter(format, templateFile string, noHeaders bool) (ResourcePrinter, error) {
var printer ResourcePrinter var printer ResourcePrinter
switch format { switch format {
case "json": case "json":
@ -60,7 +60,7 @@ func getPrinter(format, templateFile string) (ResourcePrinter, error) {
Template: tmpl, Template: tmpl,
} }
default: default:
printer = NewHumanReadablePrinter() printer = NewHumanReadablePrinter(noHeaders)
} }
return printer, nil return printer, nil
} }
@ -105,11 +105,15 @@ type handlerEntry struct {
// HumanReadablePrinter is an implementation of ResourcePrinter which attempts to provide more elegant output. // HumanReadablePrinter is an implementation of ResourcePrinter which attempts to provide more elegant output.
type HumanReadablePrinter struct { type HumanReadablePrinter struct {
handlerMap map[reflect.Type]*handlerEntry handlerMap map[reflect.Type]*handlerEntry
noHeaders bool
} }
// NewHumanReadablePrinter creates a HumanReadablePrinter. // NewHumanReadablePrinter creates a HumanReadablePrinter.
func NewHumanReadablePrinter() *HumanReadablePrinter { func NewHumanReadablePrinter(noHeaders bool) *HumanReadablePrinter {
printer := &HumanReadablePrinter{make(map[reflect.Type]*handlerEntry)} printer := &HumanReadablePrinter{
handlerMap: make(map[reflect.Type]*handlerEntry),
noHeaders: noHeaders,
}
printer.addDefaultHandlers() printer.addDefaultHandlers()
return printer return printer
} }
@ -260,7 +264,9 @@ func (h *HumanReadablePrinter) PrintObj(obj runtime.Object, output io.Writer) er
w := tabwriter.NewWriter(output, 20, 5, 3, ' ', 0) w := tabwriter.NewWriter(output, 20, 5, 3, ' ', 0)
defer w.Flush() defer w.Flush()
if handler := h.handlerMap[reflect.TypeOf(obj)]; handler != nil { if handler := h.handlerMap[reflect.TypeOf(obj)]; handler != nil {
if !h.noHeaders {
h.printHeader(handler.columns, w) h.printHeader(handler.columns, w)
}
args := []reflect.Value{reflect.ValueOf(obj), reflect.ValueOf(w)} args := []reflect.Value{reflect.ValueOf(obj), reflect.ValueOf(w)}
resultValue := handler.printFunc.Call(args)[0] resultValue := handler.printFunc.Call(args)[0]
if resultValue.IsNil() { if resultValue.IsNil() {

View File

@ -104,7 +104,7 @@ func ErrorPrintHandler(obj *TestPrintType, w io.Writer) error {
func TestCustomTypePrinting(t *testing.T) { func TestCustomTypePrinting(t *testing.T) {
columns := []string{"Data"} columns := []string{"Data"}
printer := NewHumanReadablePrinter() printer := NewHumanReadablePrinter(false)
printer.Handler(columns, PrintCustomType) printer.Handler(columns, PrintCustomType)
obj := TestPrintType{"test object"} obj := TestPrintType{"test object"}
@ -121,7 +121,7 @@ func TestCustomTypePrinting(t *testing.T) {
func TestPrintHandlerError(t *testing.T) { func TestPrintHandlerError(t *testing.T) {
columns := []string{"Data"} columns := []string{"Data"}
printer := NewHumanReadablePrinter() printer := NewHumanReadablePrinter(false)
printer.Handler(columns, ErrorPrintHandler) printer.Handler(columns, ErrorPrintHandler)
obj := TestPrintType{"test object"} obj := TestPrintType{"test object"}
buffer := &bytes.Buffer{} buffer := &bytes.Buffer{}
@ -132,7 +132,7 @@ func TestPrintHandlerError(t *testing.T) {
} }
func TestUnknownTypePrinting(t *testing.T) { func TestUnknownTypePrinting(t *testing.T) {
printer := NewHumanReadablePrinter() printer := NewHumanReadablePrinter(false)
buffer := &bytes.Buffer{} buffer := &bytes.Buffer{}
err := printer.PrintObj(&TestUnknownType{}, buffer) err := printer.PrintObj(&TestUnknownType{}, buffer)
if err == nil { if err == nil {