-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmain.go
111 lines (87 loc) · 3.03 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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
package main
import (
"flag"
"log"
"net/http"
"os"
"os/signal"
"syscall"
"github.com/julienschmidt/httprouter"
"github.com/orcinustools/godoremi/src/daemon"
"github.com/orcinustools/godoremi/src/service"
"github.com/wejick/tego/config"
)
var (
signalChan = make(chan os.Signal, 1)
)
//Initialize initiates godoremi
func Initialize() (err error) {
log.SetFlags(log.LstdFlags | log.Lshortfile)
err = config.LoadConfigFromFile("/etc/godoremi/config.json")
if err != nil {
err = config.LoadConfigFromFile("./config.json")
}
signal.Notify(signalChan,
syscall.SIGTERM)
//handle signal here
go func() {
for {
s := <-signalChan
switch s {
case syscall.SIGTERM:
os.Exit(0)
}
}
}()
return
}
func main() {
err := Initialize()
if err != nil {
log.Fatalln("Coudln't initialize godoremi", err)
}
err = daemon.Initialize()
if err != nil {
log.Fatalln("Coudln't initialize daemon", err)
}
flag.Parse()
daemon.Manage()
err = service.Initialize()
if err != nil {
log.Fatalln("Coudln't initialize service", err)
}
router := httprouter.New()
router.GET("/", service.HTTPGetInfo)
router.GET("/version", service.HTTPGetVersion)
router.GET("/networks", service.HTTPGetNetworks)
router.GET("/networks/:id", service.HTTPGetInspectNetwork)
router.GET("/ping", service.HTTPGetPing)
router.GET("/images", service.HTTPGetImages)
router.GET("/images/search", service.HTTPGetSearchImage)
router.GET("/images/inspect/:name", service.HTTPGetInspectImage)
router.GET("/images/history/:name", service.HTTPGetHistoryImage)
router.GET("/containers", service.HTTPGetContainers)
router.POST("/containers/create", service.HTTPPostCreateContainer)
router.POST("/containers/start/:name", service.HTTPPostStartContainer)
router.POST("/containers/restart/:name", service.HTTPPostRestartContainer)
router.GET("/containers/rename/:name", service.HTTPGetRenameContainer)
router.POST("/containers/stop/:name", service.HTTPPostStopContainer)
router.POST("/containers/kill/:name", service.HTTPPostKillContainer)
router.GET("/containers/inspect/:name", service.HTTPGetInspectContainer)
router.GET("/containers/top/:name", service.HTTPGetTopContainer)
router.GET("/containers/changes/:name", service.HTTPGetChangesContainer)
router.GET("/containers/stats/:name", service.HTTPGetStatsContainer)
router.GET("/containers/logs/:name", service.HTTPGetLogsContainer)
router.GET("/containers/export/:name", service.HTTPGetExportContainer)
router.POST("/containers/resize/:name", service.HTTPPostResizeContainer)
router.POST("/containers/update/:name", service.HTTPPostUpdateContainer)
router.GET("/events", service.HTTPGetEvents)
router.GET("/volumes", service.HTTPGetVolumes)
router.GET("/volumes/:name", service.HTTPGetInspectVolume)
router.GET("/services", service.HTTPGetServices)
router.GET("/tasks", service.HTTPGetTasks)
router.GET("/nodes", service.HTTPGetNodes)
router.GET("/system/usage", service.HTTPGetSystemUsage)
listenTo := config.Get().HTTP.Listen + ":" + config.Get().HTTP.Port
log.Fatal(http.ListenAndServe(listenTo, router))
}