Adding helper functions from RENDLER
This commit is contained in:
parent
032aa5ad35
commit
b062a282f9
3 changed files with 57 additions and 3 deletions
14
.idea/libraries/GOPATH__electron_.xml
generated
Normal file
14
.idea/libraries/GOPATH__electron_.xml
generated
Normal file
|
@ -0,0 +1,14 @@
|
|||
<component name="libraryTable">
|
||||
<library name="GOPATH <electron>">
|
||||
<CLASSES>
|
||||
<root url="file://$PROJECT_DIR$/../.." />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="file://$PROJECT_DIR$/../.." />
|
||||
</SOURCES>
|
||||
<excluded>
|
||||
<root url="file://$PROJECT_DIR$" />
|
||||
</excluded>
|
||||
</library>
|
||||
</component>
|
|
@ -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
41
states.go
Normal 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
|
||||
}
|
||||
}
|
Reference in a new issue