mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2025-10-11 06:16:04 +08:00
VULTR: Adopt diff2 in compatibility mode and fix handling of some integrations tests (#1981)
This commit is contained in:
parent
22c6797f83
commit
8f09e3b03f
1 changed files with 67 additions and 40 deletions
|
@ -7,6 +7,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"golang.org/x/net/idna"
|
||||||
"golang.org/x/oauth2"
|
"golang.org/x/oauth2"
|
||||||
|
|
||||||
"github.com/StackExchange/dnscontrol/v3/models"
|
"github.com/StackExchange/dnscontrol/v3/models"
|
||||||
|
@ -111,6 +112,20 @@ func (api *vultrProvider) GetZoneRecords(domain string) (models.Records, error)
|
||||||
func (api *vultrProvider) GetDomainCorrections(dc *models.DomainConfig) ([]*models.Correction, error) {
|
func (api *vultrProvider) GetDomainCorrections(dc *models.DomainConfig) ([]*models.Correction, error) {
|
||||||
dc.Punycode()
|
dc.Punycode()
|
||||||
|
|
||||||
|
for _, rec := range dc.Records {
|
||||||
|
switch rec.Type { // #rtype_variations
|
||||||
|
case "ALIAS", "MX", "NS", "CNAME", "PTR", "SRV", "URL", "URL301", "FRAME", "R53_ALIAS", "NS1_URLFWD", "AKAMAICDN", "CLOUDNS_WR":
|
||||||
|
// These rtypes are hostnames, therefore need to be converted (unlike, for example, an AAAA record)
|
||||||
|
t, err := idna.ToUnicode(rec.GetTargetField())
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
rec.SetTarget(t)
|
||||||
|
default:
|
||||||
|
// Nothing to do.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
curRecords, err := api.GetZoneRecords(dc.Name)
|
curRecords, err := api.GetZoneRecords(dc.Name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -119,10 +134,14 @@ func (api *vultrProvider) GetDomainCorrections(dc *models.DomainConfig) ([]*mode
|
||||||
models.PostProcessRecords(curRecords)
|
models.PostProcessRecords(curRecords)
|
||||||
|
|
||||||
var corrections []*models.Correction
|
var corrections []*models.Correction
|
||||||
if !diff2.EnableDiff2 || true { // Remove "|| true" when diff2 version arrives
|
var create, delete, modify diff.Changeset
|
||||||
|
if !diff2.EnableDiff2 {
|
||||||
differ := diff.New(dc)
|
differ := diff.New(dc)
|
||||||
_, create, delete, modify, err := differ.IncrementalDiff(curRecords)
|
_, create, delete, modify, err = differ.IncrementalDiff(curRecords)
|
||||||
|
} else {
|
||||||
|
differ := diff.NewCompat(dc)
|
||||||
|
_, create, delete, modify, err = differ.IncrementalDiff(curRecords)
|
||||||
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -158,11 +177,6 @@ func (api *vultrProvider) GetDomainCorrections(dc *models.DomainConfig) ([]*mode
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
return corrections, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Insert Future diff2 version here.
|
|
||||||
|
|
||||||
return corrections, nil
|
return corrections, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -220,6 +234,16 @@ func toRecordConfig(domain string, r govultr.DomainRecord) (*models.RecordConfig
|
||||||
}
|
}
|
||||||
rc.SetLabel(r.Name, domain)
|
rc.SetLabel(r.Name, domain)
|
||||||
|
|
||||||
|
switch rtype := r.Type; rtype {
|
||||||
|
case "ALIAS", "MX", "NS", "CNAME", "PTR", "SRV", "URL", "URL301", "FRAME", "R53_ALIAS", "NS1_URLFWD", "AKAMAICDN", "CLOUDNS_WR":
|
||||||
|
var err error
|
||||||
|
data, err = idna.ToUnicode(data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
}
|
||||||
|
|
||||||
switch rtype := r.Type; rtype {
|
switch rtype := r.Type; rtype {
|
||||||
case "CNAME", "NS":
|
case "CNAME", "NS":
|
||||||
rc.Type = r.Type
|
rc.Type = r.Type
|
||||||
|
@ -289,6 +313,9 @@ func toVultrRecord(dc *models.DomainConfig, rc *models.RecordConfig, vultrID str
|
||||||
}
|
}
|
||||||
switch rtype := rc.Type; rtype { // #rtype_variations
|
switch rtype := rc.Type; rtype { // #rtype_variations
|
||||||
case "SRV":
|
case "SRV":
|
||||||
|
if data == "" {
|
||||||
|
data = "."
|
||||||
|
}
|
||||||
r.Data = fmt.Sprintf("%v %v %s", rc.SrvWeight, rc.SrvPort, data)
|
r.Data = fmt.Sprintf("%v %v %s", rc.SrvWeight, rc.SrvPort, data)
|
||||||
case "CAA":
|
case "CAA":
|
||||||
r.Data = fmt.Sprintf(`%v %s "%s"`, rc.CaaFlag, rc.CaaTag, rc.GetTargetField())
|
r.Data = fmt.Sprintf(`%v %s "%s"`, rc.CaaFlag, rc.CaaTag, rc.GetTargetField())
|
||||||
|
|
Loading…
Add table
Reference in a new issue