@@ -55,9 +55,9 @@ type CoreDNSConfig struct {
5555
5656// coreDNSClient is an interface to work with CoreDNS service records in etcd
5757type coreDNSClient interface {
58- GetServices (prefix string ) ([]* Service , error )
59- SaveService (value * Service ) error
60- DeleteService (key string ) error
58+ GetServices (ctx context. Context , prefix string ) ([]* Service , error )
59+ SaveService (ctx context. Context , value * Service ) error
60+ DeleteService (ctx context. Context , key string ) error
6161}
6262
6363type coreDNSProvider struct {
@@ -98,16 +98,15 @@ type Service struct {
9898
9999type etcdClient struct {
100100 client * etcdcv3.Client
101- ctx context.Context
102101 managedBy string
103102 ignoreEmptyManagedBy bool
104103}
105104
106105var _ coreDNSClient = etcdClient {}
107106
108107// GetServices return all Service records stored in etcd stored anywhere under the given key (recursively)
109- func (c etcdClient ) GetServices (prefix string ) ([]* Service , error ) {
110- ctx , cancel := context .WithTimeout (c . ctx , etcdTimeout )
108+ func (c etcdClient ) GetServices (ctx context. Context , prefix string ) ([]* Service , error ) {
109+ ctx , cancel := context .WithTimeout (ctx , etcdTimeout )
111110 defer cancel ()
112111
113112 path := prefix
@@ -157,14 +156,14 @@ func (c etcdClient) GetServices(prefix string) ([]*Service, error) {
157156}
158157
159158// SaveService persists service data into etcd
160- func (c etcdClient ) SaveService (service * Service ) error {
161- ctx , cancel := context .WithTimeout (c . ctx , etcdTimeout )
159+ func (c etcdClient ) SaveService (ctx context. Context , service * Service ) error {
160+ ctx , cancel := context .WithTimeout (ctx , etcdTimeout )
162161 defer cancel ()
163162
164163 if c .managedBy != "" {
165164 service .ManagedBy = c .managedBy
166165 }
167- if ownedBy , err := c .IsOwnedBy (service .Key ); err != nil {
166+ if ownedBy , err := c .IsOwnedBy (ctx , service .Key ); err != nil {
168167 return err
169168 } else if ! ownedBy {
170169 return fmt .Errorf ("key %q is not owned by this service" , service .Key )
@@ -181,8 +180,8 @@ func (c etcdClient) SaveService(service *Service) error {
181180 return nil
182181}
183182
184- func (c etcdClient ) IsOwnedBy (key string ) (bool , error ) {
185- ctx , cancel := context .WithTimeout (c . ctx , etcdTimeout )
183+ func (c etcdClient ) IsOwnedBy (ctx context. Context , key string ) (bool , error ) {
184+ ctx , cancel := context .WithTimeout (ctx , etcdTimeout )
186185 defer cancel ()
187186
188187 if c .managedBy == "" {
@@ -217,11 +216,11 @@ func (c etcdClient) IsOwnedBy(key string) (bool, error) {
217216}
218217
219218// DeleteService deletes service record from etcd
220- func (c etcdClient ) DeleteService (key string ) error {
221- ctx , cancel := context .WithTimeout (c . ctx , etcdTimeout )
219+ func (c etcdClient ) DeleteService (ctx context. Context , key string ) error {
220+ ctx , cancel := context .WithTimeout (ctx , etcdTimeout )
222221 defer cancel ()
223222
224- if owned , err := c .IsOwnedBy (key ); err != nil {
223+ if owned , err := c .IsOwnedBy (ctx , key ); err != nil {
225224 return err
226225 } else if ! owned {
227226 return fmt .Errorf ("key %q is not owned by this service" , key )
@@ -270,7 +269,7 @@ func newETCDClient(managedBy string, ignoreEmptyManagedBy bool) (coreDNSClient,
270269 if err != nil {
271270 return nil , err
272271 }
273- return etcdClient {c , context . Background (), managedBy , ignoreEmptyManagedBy }, nil
272+ return etcdClient {c , managedBy , ignoreEmptyManagedBy }, nil
274273}
275274
276275// NewCoreDNSProvider is a CoreDNS provider constructor
@@ -311,9 +310,9 @@ func findLabelInTargets(targets []string, label string) (string, bool) {
311310
312311// Records returns all DNS records found in CoreDNS etcd backend. Depending on the record fields
313312// it may be mapped to one or two records of type A, CNAME, TXT, A+TXT, CNAME+TXT
314- func (p coreDNSProvider ) Records (_ context.Context ) ([]* endpoint.Endpoint , error ) {
313+ func (p coreDNSProvider ) Records (ctx context.Context ) ([]* endpoint.Endpoint , error ) {
315314 var result []* endpoint.Endpoint
316- services , err := p .client .GetServices (p .coreDNSPrefix )
315+ services , err := p .client .GetServices (ctx , p .coreDNSPrefix )
317316 if err != nil {
318317 return nil , err
319318 }
@@ -361,20 +360,20 @@ func (p coreDNSProvider) Records(_ context.Context) ([]*endpoint.Endpoint, error
361360 return result , nil
362361}
363362
364- func (p coreDNSProvider ) ApplyChanges (_ context.Context , changes * plan.Changes ) error {
363+ func (p coreDNSProvider ) ApplyChanges (ctx context.Context , changes * plan.Changes ) error {
365364 grouped := p .groupEndpoints (changes )
366365
367366 for dnsName , group := range grouped {
368367 if ! p .domainFilter .Match (dnsName ) {
369368 log .Debugf ("Skipping record %q due to domain filter" , dnsName )
370369 continue
371370 }
372- if err := p .applyGroup (dnsName , group ); err != nil {
371+ if err := p .applyGroup (ctx , dnsName , group ); err != nil {
373372 return err
374373 }
375374 }
376375
377- return p .deleteEndpoints (changes .Delete )
376+ return p .deleteEndpoints (ctx , changes .Delete )
378377}
379378
380379func (p coreDNSProvider ) groupEndpoints (changes * plan.Changes ) map [string ][]* endpoint.Endpoint {
@@ -390,12 +389,12 @@ func (p coreDNSProvider) groupEndpoints(changes *plan.Changes) map[string][]*end
390389 return grouped
391390}
392391
393- func (p coreDNSProvider ) applyGroup (dnsName string , group []* endpoint.Endpoint ) error {
392+ func (p coreDNSProvider ) applyGroup (ctx context. Context , dnsName string , group []* endpoint.Endpoint ) error {
394393 var services []* Service
395394
396395 for _ , ep := range group {
397396 if ep .RecordType != endpoint .RecordTypeTXT {
398- srvs , err := p .createServicesForEndpoint (dnsName , ep )
397+ srvs , err := p .createServicesForEndpoint (ctx , dnsName , ep )
399398 if err != nil {
400399 return err
401400 }
@@ -410,15 +409,15 @@ func (p coreDNSProvider) applyGroup(dnsName string, group []*endpoint.Endpoint)
410409 if p .dryRun {
411410 continue
412411 }
413- if err := p .client .SaveService (service ); err != nil {
412+ if err := p .client .SaveService (ctx , service ); err != nil {
414413 return err
415414 }
416415 }
417416
418417 return nil
419418}
420419
421- func (p coreDNSProvider ) createServicesForEndpoint (dnsName string , ep * endpoint.Endpoint ) ([]* Service , error ) {
420+ func (p coreDNSProvider ) createServicesForEndpoint (ctx context. Context , dnsName string , ep * endpoint.Endpoint ) ([]* Service , error ) {
422421 var services []* Service
423422
424423 for _ , target := range ep .Targets {
@@ -455,7 +454,7 @@ func (p coreDNSProvider) createServicesForEndpoint(dnsName string, ep *endpoint.
455454 if p .dryRun {
456455 continue
457456 }
458- if err := p .client .DeleteService (key ); err != nil {
457+ if err := p .client .DeleteService (ctx , key ); err != nil {
459458 return nil , err
460459 }
461460 }
@@ -497,7 +496,7 @@ func (p coreDNSProvider) updateTXTRecords(dnsName string, group []*endpoint.Endp
497496 return services
498497}
499498
500- func (p coreDNSProvider ) deleteEndpoints (endpoints []* endpoint.Endpoint ) error {
499+ func (p coreDNSProvider ) deleteEndpoints (ctx context. Context , endpoints []* endpoint.Endpoint ) error {
501500 for _ , ep := range endpoints {
502501 dnsName := ep .DNSName
503502 if ep .Labels [randomPrefixLabel ] != "" {
@@ -508,7 +507,7 @@ func (p coreDNSProvider) deleteEndpoints(endpoints []*endpoint.Endpoint) error {
508507 if p .dryRun {
509508 continue
510509 }
511- if err := p .client .DeleteService (key ); err != nil {
510+ if err := p .client .DeleteService (ctx , key ); err != nil {
512511 return err
513512 }
514513 }
0 commit comments