mirror of
https://github.com/kubernetes-sigs/external-dns.git
synced 2025-08-06 09:36:58 +02:00
exoscale: add context support
Signed-off-by: Yoan Blanc <yoan@dosimple.ch>
This commit is contained in:
parent
894360a1dd
commit
ab08d84c0e
2
go.mod
2
go.mod
@ -25,7 +25,7 @@ require (
|
||||
github.com/digitalocean/godo v1.19.0
|
||||
github.com/dnaeon/go-vcr v1.0.1 // indirect
|
||||
github.com/dnsimple/dnsimple-go v0.14.0
|
||||
github.com/exoscale/egoscale v0.11.0
|
||||
github.com/exoscale/egoscale v0.18.1
|
||||
github.com/ffledgling/pdns-go v0.0.0-20180219074714-524e7daccd99
|
||||
github.com/go-resty/resty v1.8.0 // indirect
|
||||
github.com/gobs/pretty v0.0.0-20180724170744-09732c25a95b // indirect
|
||||
|
6
go.sum
6
go.sum
@ -75,8 +75,8 @@ github.com/envoyproxy/go-control-plane v0.8.0/go.mod h1:GSSbY9P1neVhdY7G4wu+IK1r
|
||||
github.com/envoyproxy/protoc-gen-validate v0.0.14 h1:YBW6/cKy9prEGRYLnaGa4IDhzxZhRCtKsax8srGKDnM=
|
||||
github.com/envoyproxy/protoc-gen-validate v0.0.14/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||
github.com/evanphx/json-patch v4.1.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
|
||||
github.com/exoscale/egoscale v0.11.0 h1:g+UBsxLDouKWW2BK/UTgQFAVnM2aHygheF0Dxj0ycC8=
|
||||
github.com/exoscale/egoscale v0.11.0/go.mod h1:Ee3U4ZjSDpbbEc9VkQ/jttUU8USE8Nv7L3YzVi03Y1U=
|
||||
github.com/exoscale/egoscale v0.18.1 h1:1FNZVk8jHUx0AvWhOZxLEDNlacTU0chMXUUNkm9EZaI=
|
||||
github.com/exoscale/egoscale v0.18.1/go.mod h1:Z7OOdzzTOz1Q1PjQXumlz9Wn/CddH0zSYdCF3rnBKXE=
|
||||
github.com/ffledgling/pdns-go v0.0.0-20180219074714-524e7daccd99 h1:jmwW6QWvUO2OPe22YfgFvBaaZlSr8Rlrac5lZvG6IdM=
|
||||
github.com/ffledgling/pdns-go v0.0.0-20180219074714-524e7daccd99/go.mod h1:4mP9w9+vYGw2jUx2+2v03IA+phyQQjNRR4AL3uxlNrs=
|
||||
github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I=
|
||||
@ -92,6 +92,8 @@ github.com/go-resty/resty v1.8.0/go.mod h1:n37daLLGIHq2FFYHxg+FYQiwA95FpfNI+A9ux
|
||||
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
|
||||
github.com/gobs/pretty v0.0.0-20180724170744-09732c25a95b h1:/vQ+oYKu+JoyaMPDsv5FzwuL2wwWBgBbtj/YLCi4LuA=
|
||||
github.com/gobs/pretty v0.0.0-20180724170744-09732c25a95b/go.mod h1:Xo4aNUOrJnVruqWQJBtW6+bTBDTniY8yZum5rF3b5jw=
|
||||
github.com/gofrs/uuid v3.2.0+incompatible h1:y12jRkkFxsd7GpqdSZ+/KCs/fJbqpEXSGd4+jfEaewE=
|
||||
github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
|
||||
github.com/gogo/googleapis v1.1.0 h1:kFkMAZBNAn4j7K0GiZr8cRYzejq68VbheufiV3YuyFI=
|
||||
github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s=
|
||||
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
|
||||
|
@ -28,11 +28,11 @@ import (
|
||||
|
||||
// EgoscaleClientI for replaceable implementation
|
||||
type EgoscaleClientI interface {
|
||||
GetRecords(string) ([]egoscale.DNSRecord, error)
|
||||
GetDomains() ([]egoscale.DNSDomain, error)
|
||||
CreateRecord(string, egoscale.DNSRecord) (*egoscale.DNSRecord, error)
|
||||
DeleteRecord(string, int64) error
|
||||
UpdateRecord(string, egoscale.UpdateDNSRecord) (*egoscale.DNSRecord, error)
|
||||
GetRecords(context.Context, string) ([]egoscale.DNSRecord, error)
|
||||
GetDomains(context.Context) ([]egoscale.DNSDomain, error)
|
||||
CreateRecord(context.Context, string, egoscale.DNSRecord) (*egoscale.DNSRecord, error)
|
||||
DeleteRecord(context.Context, string, int64) error
|
||||
UpdateRecord(context.Context, string, egoscale.UpdateDNSRecord) (*egoscale.DNSRecord, error)
|
||||
}
|
||||
|
||||
// ExoscaleProvider initialized as dns provider with no records
|
||||
@ -68,8 +68,8 @@ func NewExoscaleProviderWithClient(endpoint, apiKey, apiSecret string, client Eg
|
||||
return ep
|
||||
}
|
||||
|
||||
func (ep *ExoscaleProvider) getZones() (map[int64]string, error) {
|
||||
dom, err := ep.client.GetDomains()
|
||||
func (ep *ExoscaleProvider) getZones(ctx context.Context) (map[int64]string, error) {
|
||||
dom, err := ep.client.GetDomains(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -92,7 +92,7 @@ func (ep *ExoscaleProvider) ApplyChanges(ctx context.Context, changes *plan.Chan
|
||||
return nil
|
||||
}
|
||||
|
||||
zones, err := ep.getZones()
|
||||
zones, err := ep.getZones(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -106,7 +106,7 @@ func (ep *ExoscaleProvider) ApplyChanges(ctx context.Context, changes *plan.Chan
|
||||
TTL: int(epoint.RecordTTL),
|
||||
Content: epoint.Targets[0],
|
||||
}
|
||||
_, err := ep.client.CreateRecord(zones[zoneID], rec)
|
||||
_, err := ep.client.CreateRecord(ctx, zones[zoneID], rec)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -116,7 +116,7 @@ func (ep *ExoscaleProvider) ApplyChanges(ctx context.Context, changes *plan.Chan
|
||||
for _, epoint := range changes.UpdateNew {
|
||||
if ep.domain.Match(epoint.DNSName) {
|
||||
if zoneID, name := ep.filter.EndpointZoneID(epoint, zones); zoneID != 0 {
|
||||
records, err := ep.client.GetRecords(zones[zoneID])
|
||||
records, err := ep.client.GetRecords(ctx, zones[zoneID])
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -131,7 +131,7 @@ func (ep *ExoscaleProvider) ApplyChanges(ctx context.Context, changes *plan.Chan
|
||||
Content: epoint.Targets[0],
|
||||
Prio: r.Prio,
|
||||
}
|
||||
if _, err := ep.client.UpdateRecord(zones[zoneID], rec); err != nil {
|
||||
if _, err := ep.client.UpdateRecord(ctx, zones[zoneID], rec); err != nil {
|
||||
return err
|
||||
}
|
||||
break
|
||||
@ -150,14 +150,14 @@ func (ep *ExoscaleProvider) ApplyChanges(ctx context.Context, changes *plan.Chan
|
||||
for _, epoint := range changes.Delete {
|
||||
if ep.domain.Match(epoint.DNSName) {
|
||||
if zoneID, name := ep.filter.EndpointZoneID(epoint, zones); zoneID != 0 {
|
||||
records, err := ep.client.GetRecords(zones[zoneID])
|
||||
records, err := ep.client.GetRecords(ctx, zones[zoneID])
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for _, r := range records {
|
||||
if r.Name == name {
|
||||
if err := ep.client.DeleteRecord(zones[zoneID], r.ID); err != nil {
|
||||
if err := ep.client.DeleteRecord(ctx, zones[zoneID], r.ID); err != nil {
|
||||
return err
|
||||
}
|
||||
break
|
||||
@ -174,13 +174,13 @@ func (ep *ExoscaleProvider) ApplyChanges(ctx context.Context, changes *plan.Chan
|
||||
func (ep *ExoscaleProvider) Records() ([]*endpoint.Endpoint, error) {
|
||||
endpoints := make([]*endpoint.Endpoint, 0)
|
||||
|
||||
domains, err := ep.client.GetDomains()
|
||||
domains, err := ep.client.GetDomains(context.TODO())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
for _, d := range domains {
|
||||
record, err := ep.client.GetRecords(d.Name)
|
||||
record, err := ep.client.GetRecords(context.TODO(), d.Name)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -54,11 +54,11 @@ func NewExoscaleClientStub() EgoscaleClientI {
|
||||
return ep
|
||||
}
|
||||
|
||||
func (ep *ExoscaleClientStub) DeleteRecord(name string, recordID int64) error {
|
||||
func (ep *ExoscaleClientStub) DeleteRecord(ctx context.Context, name string, recordID int64) error {
|
||||
deleteExoscale = append(deleteExoscale, deleteRecordExoscale{name: name, recordID: recordID})
|
||||
return nil
|
||||
}
|
||||
func (ep *ExoscaleClientStub) GetRecords(name string) ([]egoscale.DNSRecord, error) {
|
||||
func (ep *ExoscaleClientStub) GetRecords(ctx context.Context, name string) ([]egoscale.DNSRecord, error) {
|
||||
init := []egoscale.DNSRecord{
|
||||
{ID: 0, Name: "v4.barfoo.com", RecordType: "ALIAS"},
|
||||
{ID: 1, Name: "v1.foo.com", RecordType: "TXT"},
|
||||
@ -78,15 +78,15 @@ func (ep *ExoscaleClientStub) GetRecords(name string) ([]egoscale.DNSRecord, err
|
||||
|
||||
return rec, nil
|
||||
}
|
||||
func (ep *ExoscaleClientStub) UpdateRecord(name string, rec egoscale.UpdateDNSRecord) (*egoscale.DNSRecord, error) {
|
||||
func (ep *ExoscaleClientStub) UpdateRecord(ctx context.Context, name string, rec egoscale.UpdateDNSRecord) (*egoscale.DNSRecord, error) {
|
||||
updateExoscale = append(updateExoscale, updateRecordExoscale{name: name, updateDNSRecord: rec})
|
||||
return nil, nil
|
||||
}
|
||||
func (ep *ExoscaleClientStub) CreateRecord(name string, rec egoscale.DNSRecord) (*egoscale.DNSRecord, error) {
|
||||
func (ep *ExoscaleClientStub) CreateRecord(ctx context.Context, name string, rec egoscale.DNSRecord) (*egoscale.DNSRecord, error) {
|
||||
createExoscale = append(createExoscale, createRecordExoscale{name: name, rec: rec})
|
||||
return nil, nil
|
||||
}
|
||||
func (ep *ExoscaleClientStub) GetDomains() ([]egoscale.DNSDomain, error) {
|
||||
func (ep *ExoscaleClientStub) GetDomains(ctx context.Context) ([]egoscale.DNSDomain, error) {
|
||||
dom := []egoscale.DNSDomain{
|
||||
{ID: 1, Name: "foo.com"},
|
||||
{ID: 2, Name: "bar.com"},
|
||||
|
Loading…
Reference in New Issue
Block a user