Adding helper functions from RENDLER

This commit is contained in:
Renan DelValle 2016-09-10 18:40:56 -04:00
parent 032aa5ad35
commit b062a282f9
3 changed files with 57 additions and 3 deletions

14
.idea/libraries/GOPATH__electron_.xml generated Normal file
View file

@ -0,0 +1,14 @@
<component name="libraryTable">
<library name="GOPATH &lt;electron&gt;">
<CLASSES>
<root url="file://$PROJECT_DIR$/../.." />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="file://$PROJECT_DIR$/../.." />
</SOURCES>
<excluded>
<root url="file://$PROJECT_DIR$" />
</excluded>
</library>
</component>

View file

@ -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 {

41
states.go Normal file
View file

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