package schedulers import ( "fmt" mesos "github.com/mesos/mesos-go/mesosproto" ) // NameFor returns the string name for a TaskState. func NameFor(state *mesos.TaskState) string { switch *state { case mesos.TaskState_TASK_STAGING: return "TASK_STAGING" case mesos.TaskState_TASK_STARTING: return "TASK_STARTING" case mesos.TaskState_TASK_RUNNING: return "TASK_RUNNING" case mesos.TaskState_TASK_FINISHED: return "TASK_FINISHED" // TERMINAL case mesos.TaskState_TASK_FAILED: return "TASK_FAILED" // TERMINAL case mesos.TaskState_TASK_KILLED: return "TASK_KILLED" // TERMINAL case mesos.TaskState_TASK_LOST: return "TASK_LOST" // TERMINAL case mesos.TaskState_TASK_ERROR: return "TASK_ERROR" default: return fmt.Sprintf("UNKNOWN: %d", *state) } } // IsTerminal determines if a TaskState is a terminal state, i.e. if it singals // that the task has stopped running. func IsTerminal(state *mesos.TaskState) bool { switch *state { case mesos.TaskState_TASK_FINISHED, mesos.TaskState_TASK_FAILED, mesos.TaskState_TASK_KILLED, mesos.TaskState_TASK_LOST, mesos.TaskState_TASK_ERROR: return true default: return false } }