mirror of
https://github.com/kubernetes-sigs/external-dns.git
synced 2026-05-05 06:36:11 +02:00
Use AdjustEndpoint method for Scaleway DNS
Signed-off-by: Patrik Cyvoct <patrik@ptrk.io>
This commit is contained in:
parent
444f5d5a9d
commit
cece24dbc8
@ -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 {
|
||||
|
||||
@ -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{
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user