-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathmonitor.go
More file actions
48 lines (39 loc) · 1.44 KB
/
monitor.go
File metadata and controls
48 lines (39 loc) · 1.44 KB
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
package main
import (
"flag"
"github.com/armon/consul-api"
"github.com/chrono/marathon-consul-discovery/consul-marathon"
"github.com/chrono/marathon-consul-discovery/marathon"
"github.com/chrono/marathon-consul-discovery/mesos"
"github.com/ddliu/go-httpclient"
)
var bind = flag.String("bind", "0.0.0.0", "address to listen on and register with marathon -- 0.0.0.0 auto discovers via mesos slave")
var port = flag.Int("port", 8080, "http port to listen on")
var marathon_endpoint = flag.String("marathon", "zookeeper:8080", "marathon to register with")
var mesos_slave = flag.String("mesos_slave", "localhost:5051", "mesos slave to handle tasks for")
func main() {
flag.Parse()
http_client := httpclient.NewHttpClient(nil)
var my_marathon = marathon.Marathon{
Master: *marathon_endpoint,
HttpClient: http_client,
}
var slave = mesos.MesosSlave{
Slave: *mesos_slave,
HttpClient: http_client,
}
var consul, _ = consulapi.NewClient(consulapi.DefaultConfig())
var listen_address = *bind
if listen_address == "0.0.0.0" {
listen_address = slave.State().Hostname
}
go consulmarathon.PollMarathonTasks(my_marathon, consul.Agent(), slave.State().Hostname)
handler := marathon.MarathonEventHandler{
Marathon: my_marathon,
Address: listen_address,
Port: *port,
Events: make(chan interface{}),
}
go consulmarathon.ProcessMarathonConsulEvents(handler.Events, slave.State().Id, consul.Agent())
handler.SubscribeEvents()
}