coder/codersdk/workspacedisplaystatus.go

49 lines
1.4 KiB
Go

package codersdk
// Maps workspace transition to display status for Running job status
var runningStatusFromTransition = map[WorkspaceTransition]string{
WorkspaceTransitionStart: "Starting",
WorkspaceTransitionStop: "Stopping",
WorkspaceTransitionDelete: "Deleting",
}
// Maps workspace transition to display status for Succeeded job status
var succeededStatusFromTransition = map[WorkspaceTransition]string{
WorkspaceTransitionStart: "Started",
WorkspaceTransitionStop: "Stopped",
WorkspaceTransitionDelete: "Deleted",
}
const unknownStatus = "Unknown"
// WorkspaceDisplayStatus computes a status to display on CLI/UI based on
// the workspace transition and the status of the provisioner job.
// This code is in sync with how we compute the status on frontend.
// Ref: site/src/util/workspace.ts (getWorkspaceStatus)
func WorkspaceDisplayStatus(jobStatus ProvisionerJobStatus, transition WorkspaceTransition) string {
switch jobStatus {
case ProvisionerJobSucceeded:
status, ok := succeededStatusFromTransition[transition]
if !ok {
return unknownStatus
}
return status
case ProvisionerJobRunning:
status, ok := runningStatusFromTransition[transition]
if !ok {
return unknownStatus
}
return status
case ProvisionerJobPending:
return "Queued"
case ProvisionerJobCanceling:
return "Canceling"
case ProvisionerJobCanceled:
return "Canceled"
case ProvisionerJobFailed:
return "Failed"
default:
return unknownStatus
}
}