move columns into wide option to make result more readable

pull/6/head
AdoHe 2016-02-14 03:14:20 -05:00
parent ad36fc8ba5
commit 53d4b15b87
2 changed files with 112 additions and 28 deletions

View File

@ -363,8 +363,49 @@ func ExamplePrintReplicationControllerWithNamespace() {
fmt.Printf("Unexpected error: %v", err)
}
// Output:
// NAMESPACE CONTROLLER CONTAINER(S) IMAGE(S) SELECTOR REPLICAS AGE
// beep foo foo someimage foo=bar 1 10y
// NAMESPACE CONTROLLER REPLICAS AGE
// beep foo 1 10y
}
func ExamplePrintReplicationControllerWithWide() {
f, tf, codec := NewAPIFactory()
tf.Printer = kubectl.NewHumanReadablePrinter(false, false, true, false, false, false, []string{})
tf.Client = &fake.RESTClient{
Codec: codec,
Client: nil,
}
cmd := NewCmdRun(f, os.Stdin, os.Stdout, os.Stderr)
ctrl := &api.ReplicationController{
ObjectMeta: api.ObjectMeta{
Name: "foo",
Labels: map[string]string{"foo": "bar"},
CreationTimestamp: unversioned.Time{Time: time.Now().AddDate(-10, 0, 0)},
},
Spec: api.ReplicationControllerSpec{
Replicas: 1,
Selector: map[string]string{"foo": "bar"},
Template: &api.PodTemplateSpec{
ObjectMeta: api.ObjectMeta{
Labels: map[string]string{"foo": "bar"},
},
Spec: api.PodSpec{
Containers: []api.Container{
{
Name: "foo",
Image: "someimage",
},
},
},
},
},
}
err := f.PrintObject(cmd, ctrl, os.Stdout)
if err != nil {
fmt.Printf("Unexpected error: %v", err)
}
// Output:
// CONTROLLER REPLICAS AGE CONTAINER(S) IMAGE(S) SELECTOR
// foo 1 10y foo someimage foo=bar
}
func ExamplePrintPodWithWideFormat() {
@ -635,9 +676,9 @@ func ExamplePrintServiceWithNamespacesAndLabels() {
fmt.Printf("Unexpected error: %v", err)
}
// Output:
// |NAMESPACE NAME CLUSTER-IP EXTERNAL-IP PORT(S) SELECTOR AGE L1|
// |ns1 svc1 10.1.1.1 unknown 53/UDP,53/TCP s=magic 10y value|
// |ns2 svc2 10.1.1.2 unknown 80/TCP,8080/TCP s=kazam 10y dolla-bill-yall|
// |NAMESPACE NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE L1|
// |ns1 svc1 10.1.1.1 unknown 53/UDP,53/TCP 10y value|
// |ns2 svc2 10.1.1.2 unknown 80/TCP,8080/TCP 10y dolla-bill-yall|
// ||
}

View File

@ -396,14 +396,14 @@ func (h *HumanReadablePrinter) HandledResources() []string {
// pkg/kubectl/cmd/get.go to reflect the new resource type.
var podColumns = []string{"NAME", "READY", "STATUS", "RESTARTS", "AGE"}
var podTemplateColumns = []string{"TEMPLATE", "CONTAINER(S)", "IMAGE(S)", "PODLABELS"}
var replicationControllerColumns = []string{"CONTROLLER", "CONTAINER(S)", "IMAGE(S)", "SELECTOR", "REPLICAS", "AGE"}
var replicaSetColumns = []string{"CONTROLLER", "CONTAINER(S)", "IMAGE(S)", "SELECTOR", "REPLICAS", "AGE"}
var jobColumns = []string{"JOB", "CONTAINER(S)", "IMAGE(S)", "SELECTOR", "SUCCESSFUL"}
var serviceColumns = []string{"NAME", "CLUSTER-IP", "EXTERNAL-IP", "PORT(S)", "SELECTOR", "AGE"}
var replicationControllerColumns = []string{"CONTROLLER", "REPLICAS", "AGE"}
var replicaSetColumns = []string{"CONTROLLER", "REPLICAS", "AGE"}
var jobColumns = []string{"JOB", "SUCCESSFUL"}
var serviceColumns = []string{"NAME", "CLUSTER-IP", "EXTERNAL-IP", "PORT(S)", "AGE"}
var ingressColumns = []string{"NAME", "RULE", "BACKEND", "ADDRESS"}
var endpointColumns = []string{"NAME", "ENDPOINTS", "AGE"}
var nodeColumns = []string{"NAME", "STATUS", "AGE"}
var daemonSetColumns = []string{"NAME", "CONTAINER(S)", "IMAGE(S)", "SELECTOR", "NODE-SELECTOR"}
var daemonSetColumns = []string{"NAME", "NODE-SELECTOR"}
var eventColumns = []string{"FIRSTSEEN", "LASTSEEN", "COUNT", "NAME", "KIND", "SUBOBJECT", "TYPE", "REASON", "SOURCE", "MESSAGE"}
var limitRangeColumns = []string{"NAME", "AGE"}
var resourceQuotaColumns = []string{"NAME", "AGE"}
@ -703,16 +703,22 @@ func printReplicationController(controller *api.ReplicationController, w io.Writ
return err
}
}
if _, err := fmt.Fprintf(w, "%s\t%s\t%s\t%s\t%d\t%s",
if _, err := fmt.Fprintf(w, "%s\t%d\t%s",
name,
firstContainer.Name,
firstContainer.Image,
labels.FormatLabels(controller.Spec.Selector),
controller.Spec.Replicas,
translateTimestamp(controller.CreationTimestamp),
); err != nil {
return err
}
if options.Wide {
if _, err := fmt.Fprintf(w, "\t%s\t%s\t%s",
firstContainer.Name,
firstContainer.Image,
labels.FormatLabels(controller.Spec.Selector),
); err != nil {
return err
}
}
if _, err := fmt.Fprint(w, appendLabels(controller.Labels, options.ColumnLabels)); err != nil {
return err
}
@ -760,16 +766,22 @@ func printReplicaSet(rs *extensions.ReplicaSet, w io.Writer, options PrintOption
return err
}
}
if _, err := fmt.Fprintf(w, "%s\t%s\t%s\t%s\t%d\t%s",
if _, err := fmt.Fprintf(w, "%s\t%d\t%s",
name,
firstContainer.Name,
firstContainer.Image,
unversioned.FormatLabelSelector(rs.Spec.Selector),
rs.Spec.Replicas,
translateTimestamp(rs.CreationTimestamp),
); err != nil {
return err
}
if options.Wide {
if _, err := fmt.Fprintf(w, "\t%s\t%s\t%s",
firstContainer.Name,
firstContainer.Image,
unversioned.FormatLabelSelector(rs.Spec.Selector),
); err != nil {
return err
}
}
if _, err := fmt.Fprint(w, appendLabels(rs.Labels, options.ColumnLabels)); err != nil {
return err
}
@ -818,15 +830,21 @@ func printJob(job *extensions.Job, w io.Writer, options PrintOptions) error {
}
selector, _ := unversioned.LabelSelectorAsSelector(job.Spec.Selector)
_, err := fmt.Fprintf(w, "%s\t%s\t%s\t%s\t%d",
_, err := fmt.Fprintf(w, "%s\t%d",
name,
firstContainer.Name,
firstContainer.Image,
selector.String(),
job.Status.Succeeded)
if err != nil {
return err
}
if options.Wide {
if _, err := fmt.Fprintf(w, "\t%s\t%s\t%s",
firstContainer.Name,
firstContainer.Image,
selector.String(),
); err != nil {
return err
}
}
if _, err := fmt.Fprint(w, appendLabels(job.Labels, options.ColumnLabels)); err != nil {
return err
}
@ -916,16 +934,20 @@ func printService(svc *api.Service, w io.Writer, options PrintOptions) error {
return err
}
}
if _, err := fmt.Fprintf(w, "%s\t%s\t%s\t%s\t%s\t%s",
if _, err := fmt.Fprintf(w, "%s\t%s\t%s\t%s\t%s",
name,
internalIP,
externalIP,
makePortString(svc.Spec.Ports),
labels.FormatLabels(svc.Spec.Selector),
translateTimestamp(svc.CreationTimestamp),
); err != nil {
return err
}
if options.Wide {
if _, err := fmt.Fprintf(w, "\t%s", labels.FormatLabels(svc.Spec.Selector)); err != nil {
return err
}
}
if _, err := fmt.Fprint(w, appendLabels(svc.Labels, options.ColumnLabels)); err != nil {
return err
}
@ -1031,15 +1053,21 @@ func printDaemonSet(ds *extensions.DaemonSet, w io.Writer, options PrintOptions)
// this shouldn't happen if LabelSelector passed validation
return err
}
if _, err := fmt.Fprintf(w, "%s\t%s\t%s\t%s\t%s",
if _, err := fmt.Fprintf(w, "%s\t%s",
name,
firstContainer.Name,
firstContainer.Image,
selector,
labels.FormatLabels(ds.Spec.Template.Spec.NodeSelector),
); err != nil {
return err
}
if options.Wide {
if _, err := fmt.Fprintf(w, "\t%s\t%s\t%s",
firstContainer.Name,
firstContainer.Image,
selector,
); err != nil {
return err
}
}
if _, err := fmt.Fprint(w, appendLabels(ds.Labels, options.ColumnLabels)); err != nil {
return err
}
@ -1684,6 +1712,21 @@ func formatWideHeaders(wide bool, t reflect.Type) []string {
if t.String() == "*api.Pod" || t.String() == "*api.PodList" {
return []string{"NODE"}
}
if t.String() == "*api.ReplicationController" || t.String() == "*api.ReplicationControllerList" {
return []string{"CONTAINER(S)", "IMAGE(S)", "SELECTOR"}
}
if t.String() == "*extensions.Job" || t.String() == "*extensions.JobList" {
return []string{"CONTAINER(S)", "IMAGE(S)", "SELECTOR"}
}
if t.String() == "*api.Service" || t.String() == "*api.ServiceList" {
return []string{"SELECTOR"}
}
if t.String() == "*extensions.DaemonSet" || t.String() == "*extensions.DaemonSetList" {
return []string{"CONTAINER(S)", "IMAGE(S)", "SELECTOR"}
}
if t.String() == "*extensions.ReplicaSet" || t.String() == "*extensions.ReplicaSetList" {
return []string{"CONTAINER(S)", "IMAGE(S)", "SELECTOR"}
}
}
return nil
}