/
main.go
89 lines (68 loc) · 1.66 KB
/
main.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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
package main
import (
"os"
"os/signal"
"syscall"
"github.com/noptics/registry/data"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/noptics/golog"
)
func main() {
var l golog.Logger
if len(os.Getenv("DEBUG")) != 0 {
l = golog.StdOut(golog.LEVEL_DEBUG)
} else {
l = golog.StdOut(golog.LEVEL_ERROR)
}
l.Init()
defer l.Finish()
c := newContext()
// Setup the Database Connection
dbendpoint := os.Getenv("DB_ENDPOINT")
sess, err := session.NewSession()
if err != nil {
l.Info("Could not create AWS session...exiting")
os.Exit(1)
}
tablePrefix := os.Getenv("DB_TABLE_PREFIX")
if len(tablePrefix) == 0 {
l.Info("must provide DB_TABLE_PREFIX")
os.Exit(1)
}
dataStore := data.NewDynamodb(sess, dbendpoint, tablePrefix, l)
// Start the GRPC Server
c.GRPCPort = os.Getenv("GRPC_PORT")
if c.GRPCPort == "" {
c.GRPCPort = "7775"
}
errChan := make(chan error)
gs, err := NewGRPCServer(dataStore, c.GRPCPort, errChan, l)
if err != nil {
l.Infow("unable to start grpc server", "error", err.Error())
os.Exit(1)
}
// start the rest server
c.RESTPort = os.Getenv("REST_PORT")
if c.RESTPort == "" {
c.RESTPort = "7776"
}
// We don't support specific address binding right now...
c.Host = "0.0.0.0"
rs := NewRestServer(dataStore, c.RESTPort, errChan, l, c)
l.Info("started")
// go until told to stop
sigs := make(chan os.Signal, 1)
signal.Notify(sigs, syscall.SIGTERM, syscall.SIGINT)
select {
case <-sigs:
case <-errChan:
l.Infow("error", "error", err.Error())
}
l.Info("shutting down")
gs.Stop()
err = rs.Stop()
if err != nil {
l.Infow("error shutting down rest server", "error", err.Error())
}
l.Info("finished")
}