From aa6f07636b51c6ee6b7b038a3e4396e5a6536a04 Mon Sep 17 00:00:00 2001 From: AdoHe Date: Thu, 25 Feb 2016 10:43:04 -0500 Subject: [PATCH] kubectl add job DESIRED column --- pkg/kubectl/resource_printer.go | 23 +++++++++---- pkg/kubectl/resource_printer_test.go | 48 ++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 6 deletions(-) diff --git a/pkg/kubectl/resource_printer.go b/pkg/kubectl/resource_printer.go index 8fd98de0167..717ad47cef6 100644 --- a/pkg/kubectl/resource_printer.go +++ b/pkg/kubectl/resource_printer.go @@ -398,7 +398,7 @@ var podColumns = []string{"NAME", "READY", "STATUS", "RESTARTS", "AGE"} var podTemplateColumns = []string{"TEMPLATE", "CONTAINER(S)", "IMAGE(S)", "PODLABELS"} var replicationControllerColumns = []string{"NAME", "DESIRED", "CURRENT", "AGE"} var replicaSetColumns = []string{"NAME", "DESIRED", "CURRENT", "AGE"} -var jobColumns = []string{"NAME", "SUCCESSFUL"} +var jobColumns = []string{"NAME", "DESIRED", "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"} @@ -838,11 +838,22 @@ func printJob(job *extensions.Job, w io.Writer, options PrintOptions) error { } selector, _ := unversioned.LabelSelectorAsSelector(job.Spec.Selector) - _, err := fmt.Fprintf(w, "%s\t%d", - name, - job.Status.Succeeded) - if err != nil { - return err + if job.Spec.Completions != nil { + if _, err := fmt.Fprintf(w, "%s\t%d\t%d", + name, + *job.Spec.Completions, + job.Status.Succeeded, + ); err != nil { + return err + } + } else { + if _, err := fmt.Fprintf(w, "%s\t%s\t%d", + name, + "", + job.Status.Succeeded, + ); err != nil { + return err + } } if options.Wide { if _, err := fmt.Fprintf(w, "\t%s\t%s\t%s", diff --git a/pkg/kubectl/resource_printer_test.go b/pkg/kubectl/resource_printer_test.go index 6fde7535cdb..61e93cb1e63 100644 --- a/pkg/kubectl/resource_printer_test.go +++ b/pkg/kubectl/resource_printer_test.go @@ -1340,6 +1340,54 @@ func TestPrintDaemonSet(t *testing.T) { } } +func TestPrintJob(t *testing.T) { + completions := 2 + tests := []struct { + job extensions.Job + expect string + }{ + { + extensions.Job{ + ObjectMeta: api.ObjectMeta{ + Name: "job1", + CreationTimestamp: unversioned.Time{Time: time.Now().Add(1.9e9)}, + }, + Spec: extensions.JobSpec{ + Completions: &completions, + }, + Status: extensions.JobStatus{ + Succeeded: 1, + }, + }, + "job1\t2\t1\n", + }, + { + extensions.Job{ + ObjectMeta: api.ObjectMeta{ + Name: "job2", + CreationTimestamp: unversioned.Time{Time: time.Now().Add(1.9e9)}, + }, + Spec: extensions.JobSpec{ + Completions: nil, + }, + Status: extensions.JobStatus{ + Succeeded: 0, + }, + }, + "job2\t\t0\n", + }, + } + + buf := bytes.NewBuffer([]byte{}) + for _, test := range tests { + printJob(&test.job, buf, PrintOptions{false, false, false, true, false, false, []string{}}) + if buf.String() != test.expect { + t.Fatalf("Expected: %s, got: %s", test.expect, buf.String()) + } + buf.Reset() + } +} + func TestPrintPodShowLabels(t *testing.T) { tests := []struct { pod api.Pod