@@ -47,9 +47,9 @@ const (
4747
4848// coreDNSClient is an interface to work with CoreDNS service records in etcd
4949type coreDNSClient interface {
50- GetServices (prefix string ) ([]* Service , error )
51- SaveService (value * Service ) error
52- DeleteService (key string ) error
50+ GetServices (ctx context. Context , prefix string ) ([]* Service , error )
51+ SaveService (ctx context. Context , value * Service ) error
52+ DeleteService (ctx context. Context , key string ) error
5353}
5454
5555type coreDNSProvider struct {
@@ -88,14 +88,13 @@ type Service struct {
8888
8989type etcdClient struct {
9090 client * etcdcv3.Client
91- ctx context.Context
9291}
9392
9493var _ coreDNSClient = etcdClient {}
9594
9695// GetServices GetService return all Service records stored in etcd stored anywhere under the given key (recursively)
97- func (c etcdClient ) GetServices (prefix string ) ([]* Service , error ) {
98- ctx , cancel := context .WithTimeout (c . ctx , etcdTimeout )
96+ func (c etcdClient ) GetServices (ctx context. Context , prefix string ) ([]* Service , error ) {
97+ ctx , cancel := context .WithTimeout (ctx , etcdTimeout )
9998 defer cancel ()
10099
101100 path := prefix
@@ -129,8 +128,8 @@ func (c etcdClient) GetServices(prefix string) ([]*Service, error) {
129128}
130129
131130// SaveService persists service data into etcd
132- func (c etcdClient ) SaveService (service * Service ) error {
133- ctx , cancel := context .WithTimeout (c . ctx , etcdTimeout )
131+ func (c etcdClient ) SaveService (ctx context. Context , service * Service ) error {
132+ ctx , cancel := context .WithTimeout (ctx , etcdTimeout )
134133 defer cancel ()
135134
136135 value , err := json .Marshal (& service )
@@ -145,8 +144,8 @@ func (c etcdClient) SaveService(service *Service) error {
145144}
146145
147146// DeleteService deletes service record from etcd
148- func (c etcdClient ) DeleteService (key string ) error {
149- ctx , cancel := context .WithTimeout (c . ctx , etcdTimeout )
147+ func (c etcdClient ) DeleteService (ctx context. Context , key string ) error {
148+ ctx , cancel := context .WithTimeout (ctx , etcdTimeout )
150149 defer cancel ()
151150
152151 _ , err := c .client .Delete (ctx , key , etcdcv3 .WithPrefix ())
@@ -193,7 +192,7 @@ func newETCDClient() (coreDNSClient, error) {
193192 if err != nil {
194193 return nil , err
195194 }
196- return etcdClient {c , context . Background () }, nil
195+ return etcdClient {c }, nil
197196}
198197
199198// NewCoreDNSProvider is a CoreDNS provider constructor
@@ -235,9 +234,9 @@ func findLabelInTargets(targets []string, label string) (string, bool) {
235234
236235// Records returns all DNS records found in CoreDNS etcd backend. Depending on the record fields
237236// it may be mapped to one or two records of type A, CNAME, TXT, A+TXT, CNAME+TXT
238- func (p coreDNSProvider ) Records (_ context.Context ) ([]* endpoint.Endpoint , error ) {
237+ func (p coreDNSProvider ) Records (ctx context.Context ) ([]* endpoint.Endpoint , error ) {
239238 var result []* endpoint.Endpoint
240- services , err := p .client .GetServices (p .coreDNSPrefix )
239+ services , err := p .client .GetServices (ctx , p .coreDNSPrefix )
241240 if err != nil {
242241 return nil , err
243242 }
@@ -285,20 +284,20 @@ func (p coreDNSProvider) Records(_ context.Context) ([]*endpoint.Endpoint, error
285284 return result , nil
286285}
287286
288- func (p coreDNSProvider ) ApplyChanges (_ context.Context , changes * plan.Changes ) error {
287+ func (p coreDNSProvider ) ApplyChanges (ctx context.Context , changes * plan.Changes ) error {
289288 grouped := p .groupEndpoints (changes )
290289
291290 for dnsName , group := range grouped {
292291 if ! p .domainFilter .Match (dnsName ) {
293292 log .Debugf ("Skipping record %q due to domain filter" , dnsName )
294293 continue
295294 }
296- if err := p .applyGroup (dnsName , group ); err != nil {
295+ if err := p .applyGroup (ctx , dnsName , group ); err != nil {
297296 return err
298297 }
299298 }
300299
301- return p .deleteEndpoints (changes .Delete )
300+ return p .deleteEndpoints (ctx , changes .Delete )
302301}
303302
304303func (p coreDNSProvider ) groupEndpoints (changes * plan.Changes ) map [string ][]* endpoint.Endpoint {
@@ -314,12 +313,12 @@ func (p coreDNSProvider) groupEndpoints(changes *plan.Changes) map[string][]*end
314313 return grouped
315314}
316315
317- func (p coreDNSProvider ) applyGroup (dnsName string , group []* endpoint.Endpoint ) error {
316+ func (p coreDNSProvider ) applyGroup (ctx context. Context , dnsName string , group []* endpoint.Endpoint ) error {
318317 var services []* Service
319318
320319 for _ , ep := range group {
321320 if ep .RecordType != endpoint .RecordTypeTXT {
322- srvs , err := p .createServicesForEndpoint (dnsName , ep )
321+ srvs , err := p .createServicesForEndpoint (ctx , dnsName , ep )
323322 if err != nil {
324323 return err
325324 }
@@ -334,15 +333,15 @@ func (p coreDNSProvider) applyGroup(dnsName string, group []*endpoint.Endpoint)
334333 if p .dryRun {
335334 continue
336335 }
337- if err := p .client .SaveService (service ); err != nil {
336+ if err := p .client .SaveService (ctx , service ); err != nil {
338337 return err
339338 }
340339 }
341340
342341 return nil
343342}
344343
345- func (p coreDNSProvider ) createServicesForEndpoint (dnsName string , ep * endpoint.Endpoint ) ([]* Service , error ) {
344+ func (p coreDNSProvider ) createServicesForEndpoint (ctx context. Context , dnsName string , ep * endpoint.Endpoint ) ([]* Service , error ) {
346345 var services []* Service
347346
348347 for _ , target := range ep .Targets {
@@ -378,7 +377,7 @@ func (p coreDNSProvider) createServicesForEndpoint(dnsName string, ep *endpoint.
378377 if p .dryRun {
379378 continue
380379 }
381- if err := p .client .DeleteService (key ); err != nil {
380+ if err := p .client .DeleteService (ctx , key ); err != nil {
382381 return nil , err
383382 }
384383 }
@@ -420,7 +419,7 @@ func (p coreDNSProvider) updateTXTRecords(dnsName string, group []*endpoint.Endp
420419 return services
421420}
422421
423- func (p coreDNSProvider ) deleteEndpoints (endpoints []* endpoint.Endpoint ) error {
422+ func (p coreDNSProvider ) deleteEndpoints (ctx context. Context , endpoints []* endpoint.Endpoint ) error {
424423 for _ , ep := range endpoints {
425424 dnsName := ep .DNSName
426425 if ep .Labels [randomPrefixLabel ] != "" {
@@ -431,7 +430,7 @@ func (p coreDNSProvider) deleteEndpoints(endpoints []*endpoint.Endpoint) error {
431430 if p .dryRun {
432431 continue
433432 }
434- if err := p .client .DeleteService (key ); err != nil {
433+ if err := p .client .DeleteService (ctx , key ); err != nil {
435434 return err
436435 }
437436 }
0 commit comments