112 lines
2.9 KiB
Go
112 lines
2.9 KiB
Go
// Copyright (C) 2020 Marius Schellenberger
|
|
|
|
package pve
|
|
|
|
type ServerStatus string
|
|
|
|
const (
|
|
ServerStatusInitializing ServerStatus = "initializing"
|
|
ServerStatusStarting ServerStatus = "starting"
|
|
ServerStatusStopping ServerStatus = "stopping"
|
|
ServerStatusRebooting ServerStatus = "rebooting"
|
|
ServerStatusRunning ServerStatus = "running"
|
|
ServerStatusStopped ServerStatus = "stopped"
|
|
ServerStatusDeleting ServerStatus = "deleting"
|
|
ServerStatusUnknown ServerStatus = "unknown"
|
|
|
|
ServerStatusBackup ServerStatus = "backup"
|
|
ServerStatusMigrating ServerStatus = "migrating"
|
|
ServerStatusSnapshoting ServerStatus = "snapshoting"
|
|
ServerStatusRollback ServerStatus = "rollback"
|
|
ServerStatusSespending ServerStatus = "suspending"
|
|
ServerStatusSespended ServerStatus = "suspended"
|
|
ServerStatusResuming ServerStatus = "resuming"
|
|
)
|
|
|
|
func ServerStatusFromLock(status, lock string) ServerStatus {
|
|
switch lock {
|
|
case "backup":
|
|
return ServerStatusBackup
|
|
case "clone", "create":
|
|
return ServerStatusInitializing
|
|
case "rollback":
|
|
return ServerStatusRollback
|
|
case "migrate":
|
|
return ServerStatusMigrating
|
|
case "snapshot", "snapshot-delete":
|
|
return ServerStatusSnapshoting
|
|
case "suspending":
|
|
return ServerStatusSespending
|
|
case "suspended":
|
|
return ServerStatusSespended
|
|
}
|
|
switch status {
|
|
case "running":
|
|
return ServerStatusRunning
|
|
case "stopped":
|
|
return ServerStatusStopped
|
|
}
|
|
return ServerStatusUnknown
|
|
}
|
|
|
|
func ServerStatusFromTask(t *Task) ServerStatus {
|
|
if t == nil {
|
|
return ServerStatusUnknown
|
|
}
|
|
switch t.Type {
|
|
case "qmsuspend":
|
|
if t.Status == TaskStatusRunning {
|
|
return ServerStatusSespending
|
|
}
|
|
if t.Exitstatus == TaskExitStatusOK {
|
|
return ServerStatusSespended
|
|
}
|
|
return ServerStatusUnknown
|
|
case "qmresume":
|
|
if t.Status == TaskStatusRunning {
|
|
return ServerStatusResuming
|
|
}
|
|
if t.Exitstatus == TaskExitStatusOK {
|
|
return ServerStatusRunning
|
|
}
|
|
return ServerStatusUnknown
|
|
case "qmclone", "qmcreate":
|
|
if t.Status == TaskStatusRunning {
|
|
return ServerStatusInitializing
|
|
}
|
|
if t.Exitstatus == TaskExitStatusOK {
|
|
return ServerStatusStopped
|
|
}
|
|
return ServerStatusUnknown
|
|
case "qmreboot", "qmreset":
|
|
if t.Status == TaskStatusRunning {
|
|
return ServerStatusRebooting
|
|
}
|
|
if t.Exitstatus == TaskExitStatusOK {
|
|
return ServerStatusRunning
|
|
}
|
|
return ServerStatusUnknown
|
|
case "qmstart":
|
|
if t.Status == TaskStatusRunning {
|
|
return ServerStatusStarting
|
|
}
|
|
if t.Exitstatus == TaskExitStatusOK {
|
|
return ServerStatusRunning
|
|
}
|
|
return ServerStatusStopped
|
|
case "qmstop", "qmshutdown":
|
|
if t.Status == TaskStatusRunning {
|
|
return ServerStatusStopping
|
|
}
|
|
if t.Exitstatus == TaskExitStatusOK {
|
|
return ServerStatusStopped
|
|
}
|
|
return ServerStatusUnknown
|
|
case "qmdestroy":
|
|
if t.Status == TaskStatusRunning {
|
|
return ServerStatusDeleting
|
|
}
|
|
return ServerStatusUnknown
|
|
}
|
|
return ServerStatusUnknown
|
|
}
|