Skip to content

Commit

Permalink
[kueuectl] Add DURATION column on list workload command.
Browse files Browse the repository at this point in the history
  • Loading branch information
mbobrovskyi committed Sep 4, 2024
1 parent e83e289 commit 94319f9
Show file tree
Hide file tree
Showing 4 changed files with 116 additions and 74 deletions.
12 changes: 6 additions & 6 deletions cmd/kueuectl/app/list/list_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -125,9 +125,9 @@ cq2 cohort2 0 0 false 120m
Creation(testStartTime.Add(-2 * time.Hour).Truncate(time.Second)).
Obj(),
},
wantOut: `NAMESPACE NAME JOB TYPE JOB NAME LOCALQUEUE CLUSTERQUEUE STATUS POSITION IN QUEUE AGE
ns1 wl1 j1 lq1 cq1 PENDING 60m
ns2 wl2 j2 lq2 cq2 PENDING 120m
wantOut: `NAMESPACE NAME JOB TYPE JOB NAME LOCALQUEUE CLUSTERQUEUE STATUS POSITION IN QUEUE DURATION AGE
ns1 wl1 j1 lq1 cq1 PENDING 60m
ns2 wl2 j2 lq2 cq2 PENDING 120m
`,
},
"should print workload list with all namespaces (short command and flag)": {
Expand All @@ -148,9 +148,9 @@ ns2 wl2 j2 lq2 cq2 PENDING
Creation(testStartTime.Add(-2 * time.Hour).Truncate(time.Second)).
Obj(),
},
wantOut: `NAMESPACE NAME JOB TYPE JOB NAME LOCALQUEUE CLUSTERQUEUE STATUS POSITION IN QUEUE AGE
ns1 wl1 j1 lq1 cq1 PENDING 60m
ns2 wl2 j2 lq2 cq2 PENDING 120m
wantOut: `NAMESPACE NAME JOB TYPE JOB NAME LOCALQUEUE CLUSTERQUEUE STATUS POSITION IN QUEUE DURATION AGE
ns1 wl1 j1 lq1 cq1 PENDING 60m
ns2 wl2 j2 lq2 cq2 PENDING 120m
`,
},
}
Expand Down
18 changes: 16 additions & 2 deletions cmd/kueuectl/app/list/list_workload_printer.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,10 @@ import (
"io"
"strings"

apimeta "k8s.io/apimachinery/pkg/api/meta"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/duration"
durationutil "k8s.io/apimachinery/pkg/util/duration"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/cli-runtime/pkg/printers"
"k8s.io/utils/clock"
Expand Down Expand Up @@ -75,6 +76,7 @@ func (p *listWorkloadPrinter) PrintObj(obj runtime.Object, out io.Writer) error
{Name: "ClusterQueue", Type: "string"},
{Name: "Status", Type: "string"},
{Name: "Position in Queue", Type: "string"},
{Name: "Duration", Type: "string"},
{Name: "Age", Type: "string"},
},
Rows: p.printWorkloadList(list),
Expand Down Expand Up @@ -138,6 +140,17 @@ func (p *listWorkloadPrinter) printWorkload(wl *v1beta1.Workload) metav1.TableRo
positionInQueue = fmt.Sprintf("%d", pendingWorkload.PositionInLocalQueue)
}

var duration string
if admittedCond := apimeta.FindStatusCondition(wl.Status.Conditions, v1beta1.WorkloadAdmitted); admittedCond != nil {
finishedTime := p.clock.Now()

if finishedCond := apimeta.FindStatusCondition(wl.Status.Conditions, v1beta1.WorkloadFinished); finishedCond != nil {
finishedTime = finishedCond.LastTransitionTime.Time
}

duration = durationutil.HumanDuration(finishedTime.Sub(admittedCond.LastTransitionTime.Time))
}

row.Cells = []any{
wl.Name,
strings.Join(p.crdTypes(wl), ", "),
Expand All @@ -146,7 +159,8 @@ func (p *listWorkloadPrinter) printWorkload(wl *v1beta1.Workload) metav1.TableRo
clusterQueueName,
strings.ToUpper(workload.Status(wl)),
positionInQueue,
duration.HumanDuration(p.clock.Since(wl.CreationTimestamp.Time)),
duration,
durationutil.HumanDuration(p.clock.Since(wl.CreationTimestamp.Time)),
}

return row
Expand Down
Loading

0 comments on commit 94319f9

Please sign in to comment.