forked from searchspring/consul2route53
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.go
More file actions
94 lines (83 loc) · 1.79 KB
/
main.go
File metadata and controls
94 lines (83 loc) · 1.79 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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package main
import(
"os/signal"
"os"
"fmt"
"syscall"
"time"
"flag"
"log"
"github.com/SearchSpring/consul2route53/app"
)
var consulhost string
var consulport string
var zoneid string
var configfile string
var sleeptime int64
var ttl int64
var version bool
var once bool
const (
versioninfo = "v0.0.2"
)
type loopobject interface{
Run() error
}
func main() {
flag.StringVar(&consulhost, "host", "localhost", "Address of consul server")
flag.StringVar(&consulport, "port", "8500", "Port of consul server")
flag.StringVar(&zoneid, "zoneid", "", "Route53 ZoneID")
flag.StringVar(&configfile, "config", "./consul2route53.conf", "Path to configfile")
flag.Int64Var(&sleeptime, "sleeptime", 1000, "Sleep time in loop")
flag.BoolVar(&once, "once", false, "Run Once")
flag.Int64Var(&ttl, "ttl", 300, "TTL")
flag.BoolVar(&version, "version", false, "consul253 version")
flag.Parse()
if version {
fmt.Printf("consul2route53 version %s\n",versioninfo)
return
}
for {
config,_ := consul2route53.ReadConfig(configfile)
config.SetConsulHost(consulhost)
config.SetConsulPort(consulport)
config.SetZoneId(zoneid)
config.SetTTL(ttl)
consul2route53 := consul2route53.New(config)
switch {
case once:
err := consul2route53.Run()
if err != nil {
log.Fatal(err)
}
return
default:
loop(consul2route53)
}
}
}
// Loop until SIGHUP
func loop(obj loopobject) {
c := make(chan os.Signal, 1)
r := make(chan bool)
signal.Notify(c, syscall.SIGHUP)
go func(){
for sig := range c {
fmt.Println(sig)
r <- true
}
}()
for {
select {
case msg := <-r:
log.Printf("Got A HUP. Reloading: %#v\n", msg)
return
default:
}
err := obj.Run()
if err != nil {
log.Println(err)
}
time.Sleep(time.Duration(sleeptime * int64(time.Millisecond)))
}
}