Moved schedulers from the main programs to schedulers package. Can now choose different scheduelrs to use. Work on code sharing between schedulers remains to be done.
This commit is contained in:
parent
87892ba13b
commit
fce62981da
9 changed files with 575 additions and 323 deletions
45
schedulers/states.go
Normal file
45
schedulers/states.go
Normal file
|
@ -0,0 +1,45 @@
|
|||
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
|
||||
}
|
||||
}
|
Reference in a new issue