Skip to content

Commit 91ddfac

Browse files
committed
feat: watch network connect / disconnect event
1 parent a4f77bc commit 91ddfac

File tree

2 files changed

+20
-7
lines changed

2 files changed

+20
-7
lines changed

internal/generator/generator.go

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"os"
77
"os/exec"
88
"os/signal"
9+
"slices"
910
"strings"
1011
"sync"
1112
"syscall"
@@ -278,8 +279,20 @@ func (g *generator) generateFromEvents() {
278279
time.Sleep(10 * time.Second)
279280
break
280281
}
281-
if event.Status == "start" || event.Status == "stop" || event.Status == "die" || strings.Index(event.Status, "health_status:") != -1 {
282-
log.Printf("Received event %s for container %s", event.Status, event.ID[:12])
282+
283+
watchedEvent := false
284+
285+
switch event.Type {
286+
case "container":
287+
watchedContainerActions := []string{"start", "stop", "die", "health_status"}
288+
watchedEvent = slices.Contains(watchedContainerActions, event.Action)
289+
case "network":
290+
watchedNetworkActions := []string{"connect", "disconnect"}
291+
watchedEvent = slices.Contains(watchedNetworkActions, event.Action)
292+
}
293+
294+
if watchedEvent {
295+
log.Printf("Received event %s for %s %s", event.Action, event.Type, event.Actor.ID[:12])
283296
// fanout event to all watchers
284297
for _, watcher := range watchers {
285298
watcher <- event

internal/generator/generator_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,12 @@ func TestGenerateFromEvents(t *testing.T) {
2626
var counter atomic.Int32
2727

2828
eventsResponse := `
29-
{"status":"start","id":"8dfafdbc3a40","from":"base:latest","time":1374067924}
30-
{"status":"stop","id":"8dfafdbc3a40","from":"base:latest","time":1374067966}
31-
{"status":"start","id":"8dfafdbc3a40","from":"base:latest","time":1374067970}
32-
{"status":"destroy","id":"8dfafdbc3a40","from":"base:latest","time":1374067990}`
29+
{"Type":"container","Action":"start","Actor": {"ID":"8dfafdbc3a40"},"Time":1374067924}
30+
{"Type":"container","Action":"stop","Actor": {"ID":"8dfafdbc3a40"},"Time":1374067966}
31+
{"Type":"container","Action":"start","Actor": {"ID":"8dfafdbc3a40"},"Time":1374067970}
32+
{"Type":"container","Action":"destroy","Actor": {"ID":"8dfafdbc3a40"},"Time":1374067990}`
3333
infoResponse := `{"Containers":1,"Images":1,"Debug":0,"NFd":11,"NGoroutines":21,"MemoryLimit":1,"SwapLimit":0}`
34-
versionResponse := `{"Version":"1.8.0","Os":"Linux","KernelVersion":"3.18.5-tinycore64","GoVersion":"go1.4.1","GitCommit":"a8a31ef","Arch":"amd64","ApiVersion":"1.19"}`
34+
versionResponse := `{"Version":"19.03.12","Os":"Linux","KernelVersion":"4.19.76-linuxkit","GoVersion":"go1.13.14","GitCommit":"48a66213fe","Arch":"amd64","ApiVersion":"1.40"}`
3535

3636
server, _ := dockertest.NewServer("127.0.0.1:0", nil, nil)
3737
server.CustomHandler("/events", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {

0 commit comments

Comments
 (0)