pve-go/serverstatus.go
2020-06-01 12:18:20 +02:00

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
}