exoscale: add context support

Signed-off-by: Yoan Blanc <yoan@dosimple.ch>
This commit is contained in:
Yoan Blanc 2019-09-16 16:12:01 +02:00
parent 894360a1dd
commit ab08d84c0e
No known key found for this signature in database
GPG Key ID: 6058CF4574298812
4 changed files with 25 additions and 23 deletions

2
go.mod
View File

@ -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
View File

@ -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=

View File

@ -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
}

View File

@ -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"},