diff --git a/schedulers/helpers.go b/schedulers/helpers.go index 6d90c6c..1891808 100644 --- a/schedulers/helpers.go +++ b/schedulers/helpers.go @@ -3,6 +3,9 @@ package schedulers import ( "fmt" "log" + "bitbucket.org/sunybingcloud/electron/def" + mesos "github.com/mesos/mesos-go/mesosproto" + "bitbucket.org/sunybingcloud/electron/utilities/offerUtils" ) func coLocated(tasks map[string]bool) { @@ -13,3 +16,22 @@ func coLocated(tasks map[string]bool) { fmt.Println("---------------------") } + +/* + Determine the watts value to consider for each task. + + This value could either be task.Watts or task.ClassToWatts[] + If task.ClassToWatts is not present, then return task.Watts (this would be for workloads which don't have classMapWatts) +*/ +func wattsToConsider(task def.Task, classMapWatts bool, offer *mesos.Offer) float64 { + if classMapWatts { + // checking if ClassToWatts was present in the workload. + if task.ClassToWatts != nil { + return task.ClassToWatts[offerUtils.PowerClass(offer)] + } else { + return task.Watts + } + } else { + return task.Watts + } +}