Skip to content

Commit a477a56

Browse files
committed
Add more logging
1 parent e10b1c2 commit a477a56

File tree

3 files changed

+61
-48
lines changed

3 files changed

+61
-48
lines changed

docker-gen.go

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ var (
2929
)
3030

3131
type Event struct {
32-
ContainerId string `json:"id"`
32+
ContainerID string `json:"id"`
3333
Status string `json:"status"`
3434
Image string `json:"from"`
3535
}
@@ -118,9 +118,11 @@ func generateFromContainers(client *docker.Client) {
118118
}
119119
for _, config := range configs.Config {
120120
changed := generateFile(config, containers)
121-
if changed {
122-
runNotifyCmd(config)
121+
if !changed {
122+
log.Printf("Contents of %s did not change. Skipping notification '%s'", config.Dest, config.NotifyCmd)
123+
continue
123124
}
125+
runNotifyCmd(config)
124126
}
125127
}
126128

@@ -129,12 +131,13 @@ func runNotifyCmd(config Config) {
129131
return
130132
}
131133

134+
log.Printf("Running '%s'", config.NotifyCmd)
132135
args := strings.Split(config.NotifyCmd, " ")
133136
cmd := exec.Command(args[0], args[1:]...)
134137
out, err := cmd.CombinedOutput()
135138
if err != nil {
136139
log.Printf("error running notify command: %s, %s\n", config.NotifyCmd, err)
137-
fmt.Println(string(out))
140+
log.Print(string(out))
138141
}
139142
}
140143

@@ -153,6 +156,7 @@ func generateAtInterval(client *docker.Client, configs ConfigFile) {
153156
continue
154157
}
155158

159+
log.Printf("Generating every %d seconds", config.Interval)
156160
wg.Add(1)
157161
ticker := time.NewTicker(time.Duration(config.Interval) * time.Second)
158162
quit := make(chan struct{})
@@ -187,13 +191,17 @@ func generateFromEvents(client *docker.Client, configs ConfigFile) {
187191

188192
wg.Add(1)
189193
defer wg.Done()
194+
log.Println("Watching docker events")
190195
eventChan := getEvents()
191196
for {
192197
event := <-eventChan
198+
193199
if event == nil {
194-
return
200+
continue
195201
}
202+
196203
if event.Status == "start" || event.Status == "stop" || event.Status == "die" {
204+
log.Printf("Received event %s for container %s", event.Status, event.ContainerID[:12])
197205
generateFromContainers(client)
198206
}
199207
}

docker_client.go

Lines changed: 47 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ func newConn() (*httputil.ClientConn, error) {
115115
if err != nil {
116116
return nil, err
117117
}
118+
118119
return httputil.NewClientConn(conn, nil), nil
119120
}
120121

@@ -123,59 +124,62 @@ func getEvents() chan *Event {
123124
go func() {
124125
defer close(eventChan)
125126

126-
restart:
127-
128-
c, err := newConn()
129-
if err != nil {
130-
log.Printf("cannot connect to docker: %s\n", err)
131-
time.Sleep(10 * time.Second)
132-
goto restart
133-
}
134-
defer c.Close()
135-
136-
req, err := http.NewRequest("GET", "/events", nil)
137-
if err != nil {
138-
log.Printf("bad request for events: %s\n", err)
139-
c.Close()
140-
time.Sleep(10 * time.Second)
141-
goto restart
142-
}
127+
for {
143128

144-
resp, err := c.Do(req)
145-
if err != nil {
146-
log.Printf("cannot connect to events endpoint: %s\n", err)
147-
c.Close()
148-
time.Sleep(10 * time.Second)
149-
goto restart
150-
}
151-
defer resp.Body.Close()
129+
c, err := newConn()
130+
if err != nil {
131+
log.Printf("cannot connect to docker: %s\n", err)
132+
time.Sleep(10 * time.Second)
133+
continue
134+
}
152135

153-
// handle signals to stop the socket
154-
sigChan := make(chan os.Signal, 1)
155-
signal.Notify(sigChan, os.Interrupt, syscall.SIGTERM, syscall.SIGQUIT)
156-
go func() {
157-
for sig := range sigChan {
158-
log.Printf("received signal '%v', exiting\n", sig)
136+
req, err := http.NewRequest("GET", "/events", nil)
137+
if err != nil {
138+
log.Printf("bad request for events: %s\n", err)
139+
c.Close()
140+
time.Sleep(10 * time.Second)
141+
continue
142+
}
159143

144+
resp, err := c.Do(req)
145+
if err != nil {
146+
log.Printf("cannot connect to events endpoint: %s\n", err)
160147
c.Close()
161-
close(eventChan)
162-
os.Exit(0)
148+
time.Sleep(10 * time.Second)
149+
continue
163150
}
164-
}()
165151

166-
dec := json.NewDecoder(resp.Body)
167-
for {
168-
var event *Event
169-
if err := dec.Decode(&event); err != nil {
170-
if err == io.EOF {
152+
// handle signals to stop the socket
153+
sigChan := make(chan os.Signal, 1)
154+
signal.Notify(sigChan, os.Interrupt, syscall.SIGTERM, syscall.SIGQUIT)
155+
go func() {
156+
for sig := range sigChan {
157+
log.Printf("received signal '%v', exiting\n", sig)
158+
159+
c.Close()
160+
resp.Body.Close()
161+
close(eventChan)
162+
os.Exit(0)
163+
}
164+
}()
165+
166+
dec := json.NewDecoder(resp.Body)
167+
for {
168+
var event *Event
169+
if err := dec.Decode(&event); err != nil || event.Status == "" {
170+
if err == io.EOF || event.Status == "" {
171+
log.Printf("connection closed")
172+
break
173+
}
174+
log.Printf("cannot decode json: %s\n", err)
175+
c.Close()
176+
resp.Body.Close()
171177
break
172178
}
173-
log.Printf("cannot decode json: %s\n", err)
174-
goto restart
179+
180+
eventChan <- event
175181
}
176-
eventChan <- event
177182
}
178-
log.Printf("closing event channel\n")
179183
}()
180184
return eventChan
181185
}

template.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ func generateFile(config Config, containers []*RuntimeContainer) bool {
9191
if err != nil {
9292
log.Fatalf("unable to create dest file %s: %s\n", config.Dest, err)
9393
}
94+
log.Printf("Generated '%s' from %d containers", config.Dest, len(filteredContainers))
9495
return true
9596
}
9697
return false

0 commit comments

Comments
 (0)