From 47471b2f2930fe60e59f903ca0d3b697da8c77b2 Mon Sep 17 00:00:00 2001 From: David Orozco Date: Mon, 17 Jun 2024 09:29:46 -0500 Subject: [PATCH 1/2] print failed state exit code and reason --- internal/command/jobs/printers.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/internal/command/jobs/printers.go b/internal/command/jobs/printers.go index 4cf8781..ce29b3e 100644 --- a/internal/command/jobs/printers.go +++ b/internal/command/jobs/printers.go @@ -84,10 +84,21 @@ func printJobDetails(cfg *config.JobGet, out io.Writer, job *models.Job) error { tw := tabwriter.NewWriter(out, 0, 0, 3, ' ', 0) createdAt, duration := getAttemptCreatedAtAndDuration(job) + attempt := job.Status.Attempts[0] + failedState := attempt.State.Failed fmt.Fprintf(tw, "Job Name:\t%s\n", job.Name) fmt.Fprintf(tw, "Job Runner Group:\t%s\n", job.Spec.RunnerGroup) - fmt.Fprintf(tw, "Status:\t%s\n", job.Status.Attempts[0].Phase) + fmt.Fprintf(tw, "Status:\t%s\n", attempt.Phase) + + if failedState != nil && failedState.ExitCode != nil { + fmt.Fprintf(tw, "Exit code:\t%d\n", *failedState.ExitCode) + } + + if failedState != nil && len(failedState.Message) > 0 { + fmt.Fprintf(tw, "Exit reason:\t%s\n", failedState.Message) + } + fmt.Fprintf(tw, "Environment:\t%s\n", getJobEnvironment(job)) fmt.Fprintf(tw, "Created At:\t%s\n", getCreatedAt(job)) From 4fb7d86eb5ea7319192f30e9961d59b480b598e6 Mon Sep 17 00:00:00 2001 From: David Orozco Date: Mon, 17 Jun 2024 09:40:52 -0500 Subject: [PATCH 2/2] use existing printer for other states --- internal/command/jobs/printers.go | 26 ++++++++++++++++---------- internal/command/jobs/utils.go | 16 ++++++++++++++++ 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/internal/command/jobs/printers.go b/internal/command/jobs/printers.go index ce29b3e..604a7b8 100644 --- a/internal/command/jobs/printers.go +++ b/internal/command/jobs/printers.go @@ -84,19 +84,25 @@ func printJobDetails(cfg *config.JobGet, out io.Writer, job *models.Job) error { tw := tabwriter.NewWriter(out, 0, 0, 3, ' ', 0) createdAt, duration := getAttemptCreatedAtAndDuration(job) - attempt := job.Status.Attempts[0] - failedState := attempt.State.Failed fmt.Fprintf(tw, "Job Name:\t%s\n", job.Name) fmt.Fprintf(tw, "Job Runner Group:\t%s\n", job.Spec.RunnerGroup) - fmt.Fprintf(tw, "Status:\t%s\n", attempt.Phase) - - if failedState != nil && failedState.ExitCode != nil { - fmt.Fprintf(tw, "Exit code:\t%d\n", *failedState.ExitCode) - } - - if failedState != nil && len(failedState.Message) > 0 { - fmt.Fprintf(tw, "Exit reason:\t%s\n", failedState.Message) + fmt.Fprintf(tw, "Status:\t%s\n", getJobStatus(job)) + if state := job.Status.Attempts[0].State; state != nil { + switch { + case state.Queued != nil: + fmt.Fprintf(tw, "Message:\t%s\n", state.Queued.Message) + case state.Running != nil: + fmt.Fprintf(tw, "Runner Pod:\t%s/%s\n", state.Running.PodNamespace, state.Running.PodName) + case state.Canceled != nil: + fmt.Fprintf(tw, "Canceled By:\t%s\n", state.Canceled.CanceledBy) + fmt.Fprintf(tw, "Message:\t%s\n", state.Canceled.Message) + case state.Failed != nil: + if state.Failed.ExitCode != nil { + fmt.Fprintf(tw, "Exit Code:\t%d\n", *state.Failed.ExitCode) + } + fmt.Fprintf(tw, "Message:\t%s\n", state.Failed.Message) + } } fmt.Fprintf(tw, "Environment:\t%s\n", getJobEnvironment(job)) diff --git a/internal/command/jobs/utils.go b/internal/command/jobs/utils.go index 77f88c8..81b9bac 100644 --- a/internal/command/jobs/utils.go +++ b/internal/command/jobs/utils.go @@ -72,6 +72,22 @@ func getJobEnvironment(job *models.Job) string { return "baseline" } +func getJobStatus(job *models.Job) string { + switch job.Status.Attempts[0].Phase { + case "queued": + return "Queued" + case "running": + return "Running" + case "failed": + return "Failed" + case "succeeded": + return "Succeeded" + case "canceled": + return "Canceled" + } + return "Unknown" +} + func byteCountSI(b int64) string { const unit = 1000 if b < unit {