1
0
mirror of https://github.com/StackExchange/dnscontrol.git synced 2024-05-11 05:55:12 +00:00

ORACLE: resolve "change to A" test fail (#1912)

Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
This commit is contained in:
Nick Gregory
2023-01-09 11:29:11 -05:00
committed by GitHub
parent 0403b2c82d
commit 6f2b183b25

View File

@@ -147,14 +147,14 @@ func (o *oracleProvider) GetNameservers(domain string) ([]*models.Nameserver, er
return models.ToNameservers(nss) return models.ToNameservers(nss)
} }
func (o *oracleProvider) GetZoneRecords(domain string) (models.Records, error) { func (o *oracleProvider) GetZoneRecords(zone string) (models.Records, error) {
ctx, cancel := context.WithTimeout(context.Background(), time.Minute) ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
defer cancel() defer cancel()
records := models.Records{} records := models.Records{}
request := dns.GetZoneRecordsRequest{ request := dns.GetZoneRecordsRequest{
ZoneNameOrId: &domain, ZoneNameOrId: &zone,
CompartmentId: &o.compartment, CompartmentId: &o.compartment,
} }
@@ -175,13 +175,13 @@ func (o *oracleProvider) GetZoneRecords(domain string) (models.Records, error) {
TTL: uint32(*record.Ttl), TTL: uint32(*record.Ttl),
Original: record, Original: record,
} }
rc.SetLabelFromFQDN(*record.Domain, domain) rc.SetLabelFromFQDN(*record.Domain, zone)
switch rc.Type { switch rc.Type {
case "ALIAS": case "ALIAS":
err = rc.SetTarget(*record.Rdata) err = rc.SetTarget(*record.Rdata)
default: default:
err = rc.PopulateFromString(*record.Rtype, *record.Rdata, domain) err = rc.PopulateFromString(*record.Rtype, *record.Rdata, zone)
} }
if err != nil { if err != nil {
@@ -240,7 +240,6 @@ func (o *oracleProvider) GetDomainCorrections(dc *models.DomainConfig) ([]*model
} }
} }
var corrections []*models.Correction
var create, dels, modify diff.Changeset var create, dels, modify diff.Changeset
if !diff2.EnableDiff2 { if !diff2.EnableDiff2 {
differ := diff.New(dc) differ := diff.New(dc)
@@ -253,10 +252,6 @@ func (o *oracleProvider) GetDomainCorrections(dc *models.DomainConfig) ([]*model
return nil, err return nil, err
} }
if err != nil {
return nil, err
}
/* /*
Oracle's API doesn't have a way to update an existing record. Oracle's API doesn't have a way to update an existing record.
You can either update an existing RRSet, Domain (FQDN), or Zone in which you have to supply You can either update an existing RRSet, Domain (FQDN), or Zone in which you have to supply
@@ -265,60 +260,44 @@ func (o *oracleProvider) GetDomainCorrections(dc *models.DomainConfig) ([]*model
for any size zone. for any size zone.
*/ */
desc := ""
createRecords := models.Records{}
deleteRecords := models.Records{}
if len(create) > 0 { if len(create) > 0 {
createRecords := models.Records{} for _, rec := range create {
desc := "" createRecords = append(createRecords, rec.Desired)
for _, d := range create { desc += rec.String() + "\n"
createRecords = append(createRecords, d.Desired)
desc += d.String() + "\n"
} }
desc = desc[:len(desc)-1] desc = desc[:len(desc)-1]
corrections = append(corrections, &models.Correction{
Msg: desc,
F: func() error {
return o.patch(createRecords, nil, domain)
},
})
} }
if len(dels) > 0 { if len(dels) > 0 {
deleteRecords := models.Records{} for _, rec := range dels {
desc := "" deleteRecords = append(deleteRecords, rec.Existing)
for _, d := range dels { desc += rec.String() + "\n"
deleteRecords = append(deleteRecords, d.Existing)
desc += d.String() + "\n"
} }
desc = desc[:len(desc)-1] desc = desc[:len(desc)-1]
corrections = append(corrections, &models.Correction{
Msg: desc,
F: func() error {
return o.patch(nil, deleteRecords, domain)
},
})
} }
if len(modify) > 0 { if len(modify) > 0 {
createRecords := models.Records{} for _, rec := range modify {
deleteRecords := models.Records{} createRecords = append(createRecords, rec.Desired)
desc := "" deleteRecords = append(deleteRecords, rec.Existing)
for _, d := range modify { desc += rec.String() + "\n"
createRecords = append(createRecords, d.Desired)
deleteRecords = append(deleteRecords, d.Existing)
desc += d.String() + "\n"
} }
desc = desc[:len(desc)-1] desc = desc[:len(desc)-1]
}
corrections = append(corrections, &models.Correction{ if len(createRecords) > 0 || len(deleteRecords) > 0 {
return []*models.Correction{{
Msg: desc, Msg: desc,
F: func() error { F: func() error {
return o.patch(createRecords, deleteRecords, domain) return o.patch(createRecords, deleteRecords, domain)
}, },
}) }}, nil
} }
return []*models.Correction{}, nil
return corrections, nil
} }
func (o *oracleProvider) patch(createRecords, deleteRecords models.Records, domain string) error { func (o *oracleProvider) patch(createRecords, deleteRecords models.Records, domain string) error {
@@ -355,10 +334,18 @@ func (o *oracleProvider) patch(createRecords, deleteRecords models.Records, doma
} }
func convertToRecordOperation(rec *models.RecordConfig, op dns.RecordOperationOperationEnum) dns.RecordOperation { func convertToRecordOperation(rec *models.RecordConfig, op dns.RecordOperationOperationEnum) dns.RecordOperation {
if rec.Original != nil {
return dns.RecordOperation{
RecordHash: rec.Original.(dns.Record).RecordHash,
Operation: op,
}
}
fqdn := rec.GetLabelFQDN() fqdn := rec.GetLabelFQDN()
rtype := rec.Type rtype := rec.Type
rdata := rec.GetTargetCombined() rdata := rec.GetTargetCombined()
ttl := int(rec.TTL) ttl := int(rec.TTL)
return dns.RecordOperation{ return dns.RecordOperation{
Domain: &fqdn, Domain: &fqdn,
Rtype: &rtype, Rtype: &rtype,