mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-28 14:07:14 +00:00
Add --no-headers to kubectl get
This commit is contained in:
parent
f61d434783
commit
a9a8c016f7
@ -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
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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() {
|
||||||
|
@ -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 {
|
||||||
|
Loading…
Reference in New Issue
Block a user