-
Notifications
You must be signed in to change notification settings - Fork 0
/
scheduler_driver.go
67 lines (54 loc) · 1.32 KB
/
scheduler_driver.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package main
import (
"net"
"os"
"strconv"
proto "github.com/gogo/protobuf/proto"
mesos "github.com/mesos/mesos-go/mesosproto"
sched "github.com/mesos/mesos-go/scheduler"
)
func NewSchedulerDriver() (*sched.MesosSchedulerDriver, error) {
var (
masterPort int
schedulerPort int
err error
)
masterPort = 5050
if os.Getenv("MASTER_PORT") != "" {
masterPort, err = strconv.Atoi(os.Getenv("MASTER_PORT"))
if err != nil {
masterPort = 5050
}
}
schedulerPort = 5051
if os.Getenv("SCHEDULER_PORT") != "" {
schedulerPort, err = strconv.Atoi(os.Getenv("SCHEDULER_PORT"))
if err != nil {
schedulerPort = 5051
}
}
schedulerTCPAddr := net.TCPAddr{
IP: net.ParseIP(os.Getenv("SCHEDULER_IP")),
Port: schedulerPort,
}
mesosTCPAddr := net.TCPAddr{
IP: net.ParseIP(os.Getenv("MASTER_PORT_5050_TCP_ADDR")),
Port: masterPort,
}
frameworkInfo := &mesos.FrameworkInfo{
User: proto.String(""),
Name: proto.String(frameworkName),
}
driverConfig := sched.DriverConfig{
Scheduler: NewScheduler(),
Framework: frameworkInfo,
Master: mesosTCPAddr.String(),
BindingAddress: schedulerTCPAddr.IP,
BindingPort: uint16(schedulerTCPAddr.Port),
}
driver, err := sched.NewMesosSchedulerDriver(driverConfig)
if err != nil {
return nil, err
}
return driver, nil
}