package k8s

// PState defines the Proc running state
type PState int

// Enum values of the PState type,
const (
	ProcNew PState = iota
	ProcStopped
	ProcStarting
	ProcRunning
	ProcStopping
	ProcRestarting
	ProcKilling
	ProcTerminating
	ProcNormalExited
	ProcErrorExited
	ProcKilled
	ProcFatal
	ProcTimeout
	ProcStartError
	ProcCreatePodError
	ProcDestroyed
	ProcPaused
	ProcUnknown
)

// String is Proc state
func (s PState) String() string {
	var ret string

	switch s {
	case ProcNew:
		ret = "NEW"
	case ProcStopped:
		ret = "STOPPED"
	case ProcStarting:
		ret = "STARTING"
	case ProcRunning:
		ret = "RUNNING"
	case ProcRestarting:
		ret = "RESTARTING"
	case ProcStopping:
		ret = "STOPPING"
	case ProcKilling:
		ret = "KILLING"
	case ProcTerminating:
		ret = "TERMINATING"
	case ProcNormalExited:
		ret = "NORMAL EXITED"
	case ProcErrorExited:
		ret = "ERROR EXITED"
	case ProcKilled:
		ret = "KILLED"
	case ProcFatal:
		ret = "FATAL"
	case ProcTimeout:
		ret = "TIMEOUT"
	case ProcStartError:
		ret = "START ERROR"
	case ProcCreatePodError:
		ret = "CREATE POD ERROR"
	case ProcDestroyed:
		ret = "DESTROYED"
	case ProcPaused:
		ret = "PAUSED"
	case ProcUnknown:
		ret = "UNKNOWN"
	default:
		ret = "UNKNOWN"
	}

	return ret
}

// ToPState return Proc state
func ToPState(state string) PState {
	switch state {
	case "NEW":
		return ProcNew
	case "STOPPED":
		return ProcStopped
	case "STARTING":
		return ProcStarting
	case "RUNNING":
		return ProcRunning
	case "RESTARTING":
		return ProcRestarting
	case "STOPPING":
		return ProcStopping
	case "KILLING":
		return ProcKilling
	case "TERMINATING":
		return ProcTerminating
	case "NORMAL EXITED":
		return ProcNormalExited
	case "ERROR EXITED":
		return ProcErrorExited
	case "KILLED":
		return ProcKilled
	case "FATAL":
		return ProcFatal
	case "TIMEOUT":
		return ProcTimeout
	case "START ERROR":
		return ProcStartError
	case "CREATE POD ERROR":
		return ProcCreatePodError
	case "DESTROYED":
		return ProcDestroyed
	case "PAUSED":
		return ProcPaused
	default:
		return ProcUnknown
	}
}
