mirror of
https://github.com/coder/coder.git
synced 2025-03-14 10:09:57 +00:00
49 lines
1.4 KiB
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
|
|
}
|
|
}
|