Skip to content

Commit 654bbca

Browse files
committed
refactor: make event filter configurable
1 parent 64d297a commit 654bbca

File tree

3 files changed

+31
-20
lines changed

3 files changed

+31
-20
lines changed

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,11 @@ Options:
9191
config files with template directives. Config files will be merged if this option is specified multiple times. (default [])
9292
-endpoint string
9393
docker api endpoint (tcp|unix://..). Default unix:///var/run/docker.sock
94+
-event-filter value
95+
additional filter for event watched by docker-gen (e.g -event-filter event=connect -event-filter event=disconnect).
96+
You can pass this option multiple times to combine filters.
97+
By default docker-gen listen for container events start, stop, die and health_status.
98+
https://docs.docker.com/engine/reference/commandline/events/#filtering-events
9499
-interval int
95100
notify command interval (secs)
96101
-keep-blank-lines

cmd/docker-gen/main.go

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ var (
3636
includeStopped bool
3737
configFiles stringslice
3838
configs config.ConfigFile
39+
eventFilter mapstringslice = mapstringslice{"event": {"start", "stop", "die", "health_status"}}
3940
interval int
4041
keepBlankLines bool
4142
endpoint string
@@ -129,6 +130,9 @@ func initFlags() {
129130
flag.StringVar(&tlsCaCert, "tlscacert", filepath.Join(certPath, "ca.pem"), "path to TLS CA certificate file")
130131
flag.BoolVar(&tlsVerify, "tlsverify", os.Getenv("DOCKER_TLS_VERIFY") != "", "verify docker daemon's TLS certicate")
131132

133+
flag.Var(&eventFilter, "event-filter",
134+
"additional filter for event watched by docker-gen (e.g -event-filter event=connect -event-filter event=disconnect). You can pass this option multiple times to combine filters. By default docker-gen listen for container events start, stop, die and health_status. https://docs.docker.com/engine/reference/commandline/events/#filtering-events")
135+
132136
flag.Usage = usage
133137
flag.Parse()
134138
}
@@ -202,13 +206,14 @@ func main() {
202206
}
203207

204208
generator, err := generator.NewGenerator(generator.GeneratorConfig{
205-
Endpoint: endpoint,
206-
TLSKey: tlsKey,
207-
TLSCert: tlsCert,
208-
TLSCACert: tlsCaCert,
209-
TLSVerify: tlsVerify,
210-
All: all,
211-
ConfigFile: configs,
209+
Endpoint: endpoint,
210+
TLSKey: tlsKey,
211+
TLSCert: tlsCert,
212+
TLSCACert: tlsCaCert,
213+
TLSVerify: tlsVerify,
214+
All: all,
215+
EventFilter: eventFilter,
216+
ConfigFile: configs,
212217
})
213218

214219
if err != nil {

internal/generator/generator.go

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ type generator struct {
2626
TLSVerify bool
2727
TLSCert, TLSCaCert, TLSKey string
2828
All bool
29+
EventFilter map[string][]string
2930

3031
wg sync.WaitGroup
3132
retry bool
@@ -40,6 +41,8 @@ type GeneratorConfig struct {
4041
TLSVerify bool
4142
All bool
4243

44+
EventFilter map[string][]string
45+
4346
ConfigFile config.ConfigFile
4447
}
4548

@@ -63,15 +66,16 @@ func NewGenerator(gc GeneratorConfig) (*generator, error) {
6366
context.SetDockerEnv(apiVersion)
6467

6568
return &generator{
66-
Client: client,
67-
Endpoint: gc.Endpoint,
68-
TLSVerify: gc.TLSVerify,
69-
TLSCert: gc.TLSCert,
70-
TLSCaCert: gc.TLSCACert,
71-
TLSKey: gc.TLSKey,
72-
All: gc.All,
73-
Configs: gc.ConfigFile,
74-
retry: true,
69+
Client: client,
70+
Endpoint: gc.Endpoint,
71+
TLSVerify: gc.TLSVerify,
72+
TLSCert: gc.TLSCert,
73+
TLSCaCert: gc.TLSCACert,
74+
TLSKey: gc.TLSKey,
75+
All: gc.All,
76+
EventFilter: gc.EventFilter,
77+
Configs: gc.ConfigFile,
78+
retry: true,
7579
}, nil
7680
}
7781

@@ -250,10 +254,7 @@ func (g *generator) generateFromEvents() {
250254
}
251255
if !watching {
252256
options := docker.EventsOptions{
253-
Filters: map[string][]string{
254-
"event": {"start", "stop", "die", "health_status", "connect", "disconnect"},
255-
"type": {"container", "network"},
256-
},
257+
Filters: g.EventFilter,
257258
}
258259

259260
err := client.AddEventListenerWithOptions(options, eventChan)

0 commit comments

Comments
 (0)