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:
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user