diff --git a/provider/scaleway/scaleway.go b/provider/scaleway/scaleway.go index 66f505ced..12cbf1620 100644 --- a/provider/scaleway/scaleway.go +++ b/provider/scaleway/scaleway.go @@ -84,6 +84,21 @@ func NewScalewayProvider(ctx context.Context, domainFilter endpoint.DomainFilter }, nil } +// AdjustEndpoints is used to normalize the endoints +func (p *ScalewayProvider) AdjustEndpoints(endpoints []*endpoint.Endpoint) []*endpoint.Endpoint { + eps := make([]*endpoint.Endpoint, len(endpoints)) + for i := range endpoints { + eps[i] = endpoints[i] + if !eps[i].RecordTTL.IsConfigured() { + eps[i].RecordTTL = endpoint.TTL(scalewyRecordTTL) + } + if _, ok := eps[i].GetProviderSpecificProperty(scalewayPriorityKey); !ok { + eps[i] = eps[i].WithProviderSpecific(scalewayPriorityKey, fmt.Sprintf("%d", scalewayDefaultPriority)) + } + } + return eps +} + // Zones returns the list of hosted zones. func (p *ScalewayProvider) Zones(ctx context.Context) ([]*domain.DNSZone, error) { res := []*domain.DNSZone{} @@ -192,6 +207,7 @@ func (p *ScalewayProvider) generateApplyRequests(ctx context.Context, changes *p recordsToDelete[zoneName] = []*domain.RecordChange{} } + log.Debugf("Following records present in updateOld") for _, c := range changes.UpdateOld { zone, _ := zoneNameMapper.FindZone(c.DNSName) if zone == "" { @@ -199,8 +215,10 @@ func (p *ScalewayProvider) generateApplyRequests(ctx context.Context, changes *p continue } recordsToDelete[zone] = append(recordsToDelete[zone], endpointToScalewayRecordsChangeDelete(zone, c)...) + log.Debugf("%s", c.String()) } + log.Debugf("Following records present in delete") for _, c := range changes.Delete { zone, _ := zoneNameMapper.FindZone(c.DNSName) if zone == "" { @@ -208,8 +226,10 @@ func (p *ScalewayProvider) generateApplyRequests(ctx context.Context, changes *p continue } recordsToDelete[zone] = append(recordsToDelete[zone], endpointToScalewayRecordsChangeDelete(zone, c)...) + log.Debugf("%s", c.String()) } + log.Debugf("Following records present in create") for _, c := range changes.Create { zone, _ := zoneNameMapper.FindZone(c.DNSName) if zone == "" { @@ -217,7 +237,10 @@ func (p *ScalewayProvider) generateApplyRequests(ctx context.Context, changes *p continue } recordsToAdd[zone].Records = append(recordsToAdd[zone].Records, endpointToScalewayRecords(zone, c)...) + log.Debugf("%s", c.String()) } + + log.Debugf("Following records present in updateNew") for _, c := range changes.UpdateNew { zone, _ := zoneNameMapper.FindZone(c.DNSName) if zone == "" { @@ -225,6 +248,7 @@ func (p *ScalewayProvider) generateApplyRequests(ctx context.Context, changes *p continue } recordsToAdd[zone].Records = append(recordsToAdd[zone].Records, endpointToScalewayRecords(zone, c)...) + log.Debugf("%s", c.String()) } for _, zone := range dnsZones { @@ -310,10 +334,10 @@ func endpointToScalewayRecordsChangeDelete(zoneName string, ep *endpoint.Endpoin } func logChanges(req *domain.UpdateDNSZoneRecordsRequest) { - log.Infof("Updating zone %s", req.DNSZone) if !log.IsLevelEnabled(log.InfoLevel) { return } + log.Infof("Updating zone %s", req.DNSZone) for _, change := range req.Changes { if change.Add != nil { for _, add := range change.Add.Records { diff --git a/provider/scaleway/scaleway_test.go b/provider/scaleway/scaleway_test.go index 3db50301b..c9ca99112 100644 --- a/provider/scaleway/scaleway_test.go +++ b/provider/scaleway/scaleway_test.go @@ -158,6 +158,90 @@ func TestScalewayProvider_NewScalewayProvider(t *testing.T) { } } +func TestScalewayProvider_AdjustEndpoints(t *testing.T) { + provider := &ScalewayProvider{} + + before := []*endpoint.Endpoint{ + { + DNSName: "one.example.com", + RecordTTL: 300, + RecordType: "A", + Targets: []string{"1.1.1.1"}, + ProviderSpecific: endpoint.ProviderSpecific{ + { + Name: scalewayPriorityKey, + Value: "0", + }, + }, + }, + { + DNSName: "two.example.com", + RecordTTL: 0, + RecordType: "A", + Targets: []string{"1.1.1.1"}, + ProviderSpecific: endpoint.ProviderSpecific{ + { + Name: scalewayPriorityKey, + Value: "10", + }, + }, + }, + { + DNSName: "three.example.com", + RecordTTL: 600, + RecordType: "A", + Targets: []string{"1.1.1.1"}, + ProviderSpecific: endpoint.ProviderSpecific{}, + }, + } + + expected := []*endpoint.Endpoint{ + { + DNSName: "one.example.com", + RecordTTL: 300, + RecordType: "A", + Targets: []string{"1.1.1.1"}, + ProviderSpecific: endpoint.ProviderSpecific{ + { + Name: scalewayPriorityKey, + Value: "0", + }, + }, + }, + { + DNSName: "two.example.com", + RecordTTL: 300, + RecordType: "A", + Targets: []string{"1.1.1.1"}, + ProviderSpecific: endpoint.ProviderSpecific{ + { + Name: scalewayPriorityKey, + Value: "10", + }, + }, + }, + { + DNSName: "three.example.com", + RecordTTL: 600, + RecordType: "A", + Targets: []string{"1.1.1.1"}, + ProviderSpecific: endpoint.ProviderSpecific{ + { + Name: scalewayPriorityKey, + Value: "0", + }, + }, + }, + } + + after := provider.AdjustEndpoints(before) + for i := range after { + if !checkRecordEquality(after[i], expected[i]) { + t.Errorf("got record %s instead of %s", after[i], expected[i]) + } + } +} + func TestScalewayProvider_Zones(t *testing.T) { mocked := mockScalewayDomain{nil} provider := &ScalewayProvider{