@@ -66,9 +66,9 @@ func NewGenerator(gc GeneratorConfig) (*generator, error) {
66
66
}
67
67
68
68
func (g * generator ) Generate () error {
69
- g .generateFromContainers (g . Client )
70
- g .generateAtInterval (g . Client , g . Configs )
71
- g .generateFromEvents (g . Client , g . Configs )
69
+ g .generateFromContainers ()
70
+ g .generateAtInterval ()
71
+ g .generateFromEvents ()
72
72
g .generateFromSignals ()
73
73
g .wg .Wait ()
74
74
@@ -88,7 +88,7 @@ func (g *generator) generateFromSignals() {
88
88
log .Printf ("Received signal: %s\n " , sig )
89
89
switch sig {
90
90
case syscall .SIGHUP :
91
- g .generateFromContainers (g . Client )
91
+ g .generateFromContainers ()
92
92
case syscall .SIGQUIT , syscall .SIGKILL , syscall .SIGTERM , syscall .SIGINT :
93
93
// exit when context is done
94
94
return
@@ -97,8 +97,8 @@ func (g *generator) generateFromSignals() {
97
97
}()
98
98
}
99
99
100
- func (g * generator ) generateFromContainers (client * docker. Client ) {
101
- containers , err := g .getContainers (client )
100
+ func (g * generator ) generateFromContainers () {
101
+ containers , err := g .getContainers ()
102
102
if err != nil {
103
103
log .Printf ("error listing containers: %s\n " , err )
104
104
return
@@ -110,12 +110,12 @@ func (g *generator) generateFromContainers(client *docker.Client) {
110
110
continue
111
111
}
112
112
g .runNotifyCmd (config )
113
- g .sendSignalToContainer (client , config )
113
+ g .sendSignalToContainer (config )
114
114
}
115
115
}
116
116
117
- func (g * generator ) generateAtInterval (client * docker. Client , configs ConfigFile ) {
118
- for _ , config := range configs .Config {
117
+ func (g * generator ) generateAtInterval () {
118
+ for _ , config := range g . Configs .Config {
119
119
120
120
if config .Interval == 0 {
121
121
continue
@@ -125,39 +125,39 @@ func (g *generator) generateAtInterval(client *docker.Client, configs ConfigFile
125
125
g .wg .Add (1 )
126
126
ticker := time .NewTicker (time .Duration (config .Interval ) * time .Second )
127
127
quit := make (chan struct {})
128
- configCopy := config
129
- go func () {
128
+ go func (config Config ) {
130
129
defer g .wg .Done ()
131
130
for {
132
131
select {
133
132
case <- ticker .C :
134
- containers , err := g .getContainers (client )
133
+ containers , err := g .getContainers ()
135
134
if err != nil {
136
135
log .Printf ("Error listing containers: %s\n " , err )
137
136
continue
138
137
}
139
138
// ignore changed return value. always run notify command
140
- GenerateFile (configCopy , containers )
141
- g .runNotifyCmd (configCopy )
142
- g .sendSignalToContainer (client , configCopy )
139
+ GenerateFile (config , containers )
140
+ g .runNotifyCmd (config )
141
+ g .sendSignalToContainer (config )
143
142
case <- quit :
144
143
ticker .Stop ()
145
144
return
146
145
}
147
146
}
148
- }()
147
+ }(config )
149
148
}
150
149
}
151
150
152
- func (g * generator ) generateFromEvents (client * docker. Client , configs ConfigFile ) {
153
- configs = configs .FilterWatches ()
151
+ func (g * generator ) generateFromEvents () {
152
+ configs := g . Configs .FilterWatches ()
154
153
if len (configs .Config ) == 0 {
155
154
return
156
155
}
157
156
158
157
g .wg .Add (1 )
159
158
defer g .wg .Done ()
160
159
160
+ client := g .Client
161
161
for {
162
162
if client == nil {
163
163
var err error
@@ -174,7 +174,7 @@ func (g *generator) generateFromEvents(client *docker.Client, configs ConfigFile
174
174
time .Sleep (10 * time .Second )
175
175
continue
176
176
}
177
- g .generateFromContainers (client )
177
+ g .generateFromContainers ()
178
178
}
179
179
180
180
eventChan := make (chan * docker.APIEvents , 100 )
@@ -224,7 +224,7 @@ func (g *generator) generateFromEvents(client *docker.Client, configs ConfigFile
224
224
225
225
if event .Status == "start" || event .Status == "stop" || event .Status == "die" {
226
226
log .Printf ("Received event %s for container %s" , event .Status , event .ID [:12 ])
227
- g .generateFromContainers (client )
227
+ g .generateFromContainers ()
228
228
}
229
229
case <- time .After (10 * time .Second ):
230
230
// check for docker liveness
@@ -254,7 +254,7 @@ func (g *generator) runNotifyCmd(config Config) {
254
254
}
255
255
}
256
256
257
- func (g * generator ) sendSignalToContainer (client * docker. Client , config Config ) {
257
+ func (g * generator ) sendSignalToContainer (config Config ) {
258
258
if len (config .NotifyContainers ) < 1 {
259
259
return
260
260
}
@@ -265,21 +265,21 @@ func (g *generator) sendSignalToContainer(client *docker.Client, config Config)
265
265
ID : container ,
266
266
Signal : signal ,
267
267
}
268
- if err := client .KillContainer (killOpts ); err != nil {
268
+ if err := g . Client .KillContainer (killOpts ); err != nil {
269
269
log .Printf ("Error sending signal to container: %s" , err )
270
270
}
271
271
}
272
272
}
273
273
274
- func (g * generator ) getContainers (client * docker. Client ) ([]* RuntimeContainer , error ) {
275
- apiInfo , err := client .Info ()
274
+ func (g * generator ) getContainers () ([]* RuntimeContainer , error ) {
275
+ apiInfo , err := g . Client .Info ()
276
276
if err != nil {
277
277
log .Printf ("error retrieving docker server info: %s\n " , err )
278
278
}
279
279
280
280
SetServerInfo (apiInfo )
281
281
282
- apiContainers , err := client .ListContainers (docker.ListContainersOptions {
282
+ apiContainers , err := g . Client .ListContainers (docker.ListContainersOptions {
283
283
All : false ,
284
284
Size : false ,
285
285
})
@@ -289,7 +289,7 @@ func (g *generator) getContainers(client *docker.Client) ([]*RuntimeContainer, e
289
289
290
290
containers := []* RuntimeContainer {}
291
291
for _ , apiContainer := range apiContainers {
292
- container , err := client .InspectContainer (apiContainer .ID )
292
+ container , err := g . Client .InspectContainer (apiContainer .ID )
293
293
if err != nil {
294
294
log .Printf ("error inspecting container: %s: %s\n " , apiContainer .ID , err )
295
295
continue
0 commit comments