diff --git a/providers/gcloud/gcloudProvider.go b/providers/gcloud/gcloudProvider.go index 5387f3926..22227394a 100644 --- a/providers/gcloud/gcloudProvider.go +++ b/providers/gcloud/gcloudProvider.go @@ -106,6 +106,8 @@ func New(cfg map[string]string, metadata json.RawMessage) (providers.DNSServiceP client: dcli, nameServerSet: nss, project: cfg["project_id"], + oldRRsMap: map[string]map[key]*gdns.ResourceRecordSet{}, + zoneNameMap: map[string]string{}, } return g, g.loadZoneInfo() } @@ -192,6 +194,10 @@ func (g *gcloudProvider) getZoneSets(domain string) (models.Records, map[key]*gd existingRecords = append(existingRecords, rt) } } + + g.oldRRsMap[domain] = oldRRs + g.zoneNameMap[domain] = zoneName + return existingRecords, oldRRs, zoneName, err } @@ -200,11 +206,12 @@ func (g *gcloudProvider) GetDomainCorrections(dc *models.DomainConfig) ([]*model return nil, fmt.Errorf("punycode error: %w", err) } existingRecords, oldRRs, zoneName, err := g.getZoneSets(dc.Name) + _, _ = oldRRs, zoneName if err != nil { return nil, fmt.Errorf("getzonesets error: %w", err) } - g.oldRRsMap[dc.Name] = oldRRs - g.zoneNameMap[dc.Name] = zoneName + //g.oldRRsMap[dc.Name] = oldRRs + //g.zoneNameMap[dc.Name] = zoneName // Normalize models.PostProcessRecords(existingRecords) diff --git a/providers/rwth/dns.go b/providers/rwth/dns.go index 85d6aee51..ca1e9a15a 100644 --- a/providers/rwth/dns.go +++ b/providers/rwth/dns.go @@ -50,10 +50,17 @@ func (api *rwthProvider) GetDomainCorrections(dc *models.DomainConfig) ([]*model } // Normalize models.PostProcessRecords(existingRecords) + + return api.GetZoneRecordsCorrections(dc, existingRecords) +} + +func (api *rwthProvider) GetZoneRecordsCorrections(dc *models.DomainConfig, existingRecords models.Records) ([]*models.Correction, error) { txtutil.SplitSingleLongTxt(dc.Records) // Autosplit long TXT records + domain := dc.Name var corrections []*models.Correction var create, del, modify diff.Changeset + var err error if !diff2.EnableDiff2 { differ := diff.New(dc) _, create, del, modify, err = differ.IncrementalDiff(existingRecords) diff --git a/providers/softlayer/softlayerProvider.go b/providers/softlayer/softlayerProvider.go index 736828631..a3726d64b 100644 --- a/providers/softlayer/softlayerProvider.go +++ b/providers/softlayer/softlayerProvider.go @@ -70,13 +70,20 @@ func (s *softlayerProvider) GetZoneRecords(domain string) (models.Records, error func (s *softlayerProvider) GetDomainCorrections(dc *models.DomainConfig) ([]*models.Correction, error) { domain, err := s.getDomain(&dc.Name) - if err != nil { return nil, err } actual, err := s.getExistingRecords(domain) + if err != nil { + return nil, err + } + return s.GetZoneRecordsCorrections(dc, actual) +} + +func (s *softlayerProvider) GetZoneRecordsCorrections(dc *models.DomainConfig, actual models.Records) ([]*models.Correction, error) { + domain, err := s.getDomain(&dc.Name) if err != nil { return nil, err } @@ -119,6 +126,8 @@ func (s *softlayerProvider) GetDomainCorrections(dc *models.DomainConfig) ([]*mo } func (s *softlayerProvider) getDomain(name *string) (*datatypes.Dns_Domain, error) { + // FIXME(tlim) Memoize this + domains, err := services.GetAccountService(s.Session). Filter(filter.Path("domains.name").Eq(name).Build()). Mask("resourceRecords"). diff --git a/providers/transip/transipProvider.go b/providers/transip/transipProvider.go index e9ac54787..5de31df92 100644 --- a/providers/transip/transipProvider.go +++ b/providers/transip/transipProvider.go @@ -104,10 +104,15 @@ func (n *transipProvider) GetDomainCorrections(dc *models.DomainConfig) ([]*mode return nil, err } - removeOtherNS(dc) - models.PostProcessRecords(curRecords) + return n.GetZoneRecordsCorrections(dc, curRecords) +} + +func (n *transipProvider) GetZoneRecordsCorrections(dc *models.DomainConfig, curRecords models.Records) ([]*models.Correction, error) { + + removeOtherNS(dc) + var corrections []*models.Correction if !diff2.EnableDiff2 || true { // Remove "|| true" when diff2 version arrives diff --git a/providers/vultr/vultrProvider.go b/providers/vultr/vultrProvider.go index e30611922..d27b5b867 100644 --- a/providers/vultr/vultrProvider.go +++ b/providers/vultr/vultrProvider.go @@ -110,8 +110,20 @@ func (api *vultrProvider) GetZoneRecords(domain string) (models.Records, error) // GetDomainCorrections gets the corrections for a DomainConfig. func (api *vultrProvider) GetDomainCorrections(dc *models.DomainConfig) ([]*models.Correction, error) { + curRecords, err := api.GetZoneRecords(dc.Name) + if err != nil { + return nil, err + } + + models.PostProcessRecords(curRecords) + dc.Punycode() + return api.GetZoneRecordsCorrections(dc, curRecords) +} + +func (api *vultrProvider) GetZoneRecordsCorrections(dc *models.DomainConfig, curRecords models.Records) ([]*models.Correction, error) { + 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": @@ -126,13 +138,6 @@ func (api *vultrProvider) GetDomainCorrections(dc *models.DomainConfig) ([]*mode } } - curRecords, err := api.GetZoneRecords(dc.Name) - if err != nil { - return nil, err - } - - models.PostProcessRecords(curRecords) - var corrections []*models.Correction if !diff2.EnableDiff2 { differ := diff.New(dc)