mirror of
https://github.com/kubernetes-sigs/external-dns.git
synced 2025-08-06 09:36:58 +02:00
added UpdateNew
This commit is contained in:
parent
635427f528
commit
14cefa0717
@ -15,6 +15,7 @@ type EgoscaleClientI interface {
|
||||
GetDomains() ([]egoscale.DNSDomain, error)
|
||||
CreateRecord(string, egoscale.DNSRecord) (*egoscale.DNSRecord, error)
|
||||
DeleteRecord(string, int64) error
|
||||
UpdateRecord(string, egoscale.UpdateDNSRecord) (*egoscale.DNSRecord, error)
|
||||
}
|
||||
|
||||
// ExoscaleProvider initialized as dns provider with no records
|
||||
@ -96,9 +97,35 @@ func (ep *ExoscaleProvider) ApplyChanges(changes *plan.Changes) error {
|
||||
}
|
||||
}
|
||||
for _, epoint := range changes.UpdateNew {
|
||||
log.Debugf("UPDATE-NEW (ignored) for epoint: %+v", epoint)
|
||||
if ep.domain.Match(epoint.DNSName) {
|
||||
if zoneID, name := ep.filter.EndpointZoneID(epoint, zones); zoneID != 0 {
|
||||
records, err := ep.client.GetRecords(zones[zoneID])
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for _, r := range records {
|
||||
if r.Name == name {
|
||||
rec := egoscale.UpdateDNSRecord{
|
||||
ID: r.ID,
|
||||
DomainID: r.DomainID,
|
||||
Name: name,
|
||||
RecordType: epoint.RecordType,
|
||||
TTL: int(epoint.RecordTTL),
|
||||
Content: epoint.Targets[0],
|
||||
Prio: r.Prio,
|
||||
}
|
||||
if _, err := ep.client.UpdateRecord(zones[zoneID], rec); err != nil {
|
||||
return err
|
||||
}
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for _, epoint := range changes.UpdateOld {
|
||||
// Since Exoscale "Patches", we ignore UpdateOld
|
||||
// We leave this logging here for information
|
||||
log.Debugf("UPDATE-OLD (ignored) for epoint: %+v", epoint)
|
||||
}
|
||||
for _, epoint := range changes.Delete {
|
||||
|
@ -36,8 +36,14 @@ type deleteRecordExoscale struct {
|
||||
recordID int64
|
||||
}
|
||||
|
||||
type updateRecordExoscale struct {
|
||||
name string
|
||||
updateDNSRecord egoscale.UpdateDNSRecord
|
||||
}
|
||||
|
||||
var createExoscale []createRecordExoscale
|
||||
var deleteExoscale []deleteRecordExoscale
|
||||
var updateExoscale []updateRecordExoscale
|
||||
|
||||
type ExoscaleClientStub struct {
|
||||
}
|
||||
@ -70,6 +76,10 @@ func (ep *ExoscaleClientStub) GetRecords(name string) ([]egoscale.DNSRecord, err
|
||||
|
||||
return rec, nil
|
||||
}
|
||||
func (ep *ExoscaleClientStub) UpdateRecord(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) {
|
||||
createExoscale = append(createExoscale, createRecordExoscale{name: name, rec: rec})
|
||||
return nil, nil
|
||||
@ -171,4 +181,8 @@ func TestExoscaleApplyChanges(t *testing.T) {
|
||||
assert.Equal(t, 1, len(deleteExoscale))
|
||||
assert.Equal(t, "foo.com", deleteExoscale[0].name)
|
||||
assert.Equal(t, int64(1), deleteExoscale[0].recordID)
|
||||
|
||||
assert.Equal(t, 1, len(updateExoscale))
|
||||
assert.Equal(t, "foo.com", updateExoscale[0].name)
|
||||
assert.Equal(t, int64(1), updateExoscale[0].updateDNSRecord.ID)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user