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)
|
GetDomains() ([]egoscale.DNSDomain, error)
|
||||||
CreateRecord(string, egoscale.DNSRecord) (*egoscale.DNSRecord, error)
|
CreateRecord(string, egoscale.DNSRecord) (*egoscale.DNSRecord, error)
|
||||||
DeleteRecord(string, int64) error
|
DeleteRecord(string, int64) error
|
||||||
|
UpdateRecord(string, egoscale.UpdateDNSRecord) (*egoscale.DNSRecord, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ExoscaleProvider initialized as dns provider with no records
|
// 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 {
|
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 {
|
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)
|
log.Debugf("UPDATE-OLD (ignored) for epoint: %+v", epoint)
|
||||||
}
|
}
|
||||||
for _, epoint := range changes.Delete {
|
for _, epoint := range changes.Delete {
|
||||||
|
@ -36,8 +36,14 @@ type deleteRecordExoscale struct {
|
|||||||
recordID int64
|
recordID int64
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type updateRecordExoscale struct {
|
||||||
|
name string
|
||||||
|
updateDNSRecord egoscale.UpdateDNSRecord
|
||||||
|
}
|
||||||
|
|
||||||
var createExoscale []createRecordExoscale
|
var createExoscale []createRecordExoscale
|
||||||
var deleteExoscale []deleteRecordExoscale
|
var deleteExoscale []deleteRecordExoscale
|
||||||
|
var updateExoscale []updateRecordExoscale
|
||||||
|
|
||||||
type ExoscaleClientStub struct {
|
type ExoscaleClientStub struct {
|
||||||
}
|
}
|
||||||
@ -70,6 +76,10 @@ func (ep *ExoscaleClientStub) GetRecords(name string) ([]egoscale.DNSRecord, err
|
|||||||
|
|
||||||
return rec, nil
|
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) {
|
func (ep *ExoscaleClientStub) CreateRecord(name string, rec egoscale.DNSRecord) (*egoscale.DNSRecord, error) {
|
||||||
createExoscale = append(createExoscale, createRecordExoscale{name: name, rec: rec})
|
createExoscale = append(createExoscale, createRecordExoscale{name: name, rec: rec})
|
||||||
return nil, nil
|
return nil, nil
|
||||||
@ -171,4 +181,8 @@ func TestExoscaleApplyChanges(t *testing.T) {
|
|||||||
assert.Equal(t, 1, len(deleteExoscale))
|
assert.Equal(t, 1, len(deleteExoscale))
|
||||||
assert.Equal(t, "foo.com", deleteExoscale[0].name)
|
assert.Equal(t, "foo.com", deleteExoscale[0].name)
|
||||||
assert.Equal(t, int64(1), deleteExoscale[0].recordID)
|
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