// 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 }