diff --git a/.idea/libraries/GOPATH__electron_.xml b/.idea/libraries/GOPATH__electron_.xml new file mode 100644 index 0000000..e8a1f05 --- /dev/null +++ b/.idea/libraries/GOPATH__electron_.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/scheduler.go b/scheduler.go index 73ae041..2ce4531 100644 --- a/scheduler.go +++ b/scheduler.go @@ -12,7 +12,6 @@ import ( "os/signal" "path/filepath" "time" - "bitbucket.org/bingcloud/electron/states" ) const ( @@ -161,11 +160,11 @@ func (s *electronScheduler) ResourceOffers(driver sched.SchedulerDriver, offers } func (s *electronScheduler) StatusUpdate(driver sched.SchedulerDriver, status *mesos.TaskStatus) { - log.Printf("Received task status [%s] for task [%s]", states.NameFor(status.State), *status.TaskId.Value) + log.Printf("Received task status [%s] for task [%s]", NameFor(status.State), *status.TaskId.Value) if *status.State == mesos.TaskState_TASK_RUNNING { s.tasksRunning++ - } else if states.IsTerminal(status.State) { + } else if IsTerminal(status.State) { s.tasksRunning-- if s.tasksRunning == 0 { select { diff --git a/states.go b/states.go new file mode 100644 index 0000000..3a7a41b --- /dev/null +++ b/states.go @@ -0,0 +1,41 @@ +package main + +import ( +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 + default: + return "UNKNOWN" + } +} + +// 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: + return true + default: + return false + } +} \ No newline at end of file