From 4083a0ce7ec3314909713448dd8848a4e2d5153d Mon Sep 17 00:00:00 2001 From: Tom Limoncelli Date: Mon, 2 Jan 2023 08:27:33 -0500 Subject: [PATCH] HETZNER: Adopt diff2 in compatibility mode (#1888) --- providers/hetzner/hetznerProvider.go | 121 +++++++++++++-------------- 1 file changed, 60 insertions(+), 61 deletions(-) diff --git a/providers/hetzner/hetznerProvider.go b/providers/hetzner/hetznerProvider.go index f244a64e1..2d25fe331 100644 --- a/providers/hetzner/hetznerProvider.go +++ b/providers/hetzner/hetznerProvider.go @@ -103,70 +103,69 @@ func (api *hetznerProvider) GetDomainCorrections(dc *models.DomainConfig) ([]*mo txtutil.SplitSingleLongTxt(dc.Records) // Autosplit long TXT records var corrections []*models.Correction - if !diff2.EnableDiff2 || true { // Remove "|| true" when diff2 version arrives - + var create, del, modify diff.Changeset + if !diff2.EnableDiff2 { differ := diff.New(dc) - _, create, del, modify, err := differ.IncrementalDiff(existingRecords) - if err != nil { - return nil, err - } - - zone, err := api.getZone(domain) - if err != nil { - return nil, err - } - - for _, m := range del { - record := m.Existing.Original.(*record) - corr := &models.Correction{ - Msg: m.String(), - F: func() error { - return api.deleteRecord(*record) - }, - } - corrections = append(corrections, corr) - } - - var createRecords []record - createDescription := []string{"Batch creation of records:"} - for _, m := range create { - record := fromRecordConfig(m.Desired, zone) - createRecords = append(createRecords, *record) - createDescription = append(createDescription, m.String()) - } - if len(createRecords) > 0 { - corr := &models.Correction{ - Msg: strings.Join(createDescription, "\n\t"), - F: func() error { - return api.bulkCreateRecords(createRecords) - }, - } - corrections = append(corrections, corr) - } - - var modifyRecords []record - modifyDescription := []string{"Batch modification of records:"} - for _, m := range modify { - id := m.Existing.Original.(*record).ID - record := fromRecordConfig(m.Desired, zone) - record.ID = id - modifyRecords = append(modifyRecords, *record) - modifyDescription = append(modifyDescription, m.String()) - } - if len(modifyRecords) > 0 { - corr := &models.Correction{ - Msg: strings.Join(modifyDescription, "\n\t"), - F: func() error { - return api.bulkUpdateRecords(modifyRecords) - }, - } - corrections = append(corrections, corr) - } - - return corrections, nil + _, create, del, modify, err = differ.IncrementalDiff(existingRecords) + } else { + differ := diff.NewCompat(dc) + _, create, del, modify, err = differ.IncrementalDiff(existingRecords) + } + if err != nil { + return nil, err } - // Insert Future diff2 version here. + zone, err := api.getZone(domain) + if err != nil { + return nil, err + } + + for _, m := range del { + record := m.Existing.Original.(*record) + corr := &models.Correction{ + Msg: m.String(), + F: func() error { + return api.deleteRecord(*record) + }, + } + corrections = append(corrections, corr) + } + + var createRecords []record + createDescription := []string{"Batch creation of records:"} + for _, m := range create { + record := fromRecordConfig(m.Desired, zone) + createRecords = append(createRecords, *record) + createDescription = append(createDescription, m.String()) + } + if len(createRecords) > 0 { + corr := &models.Correction{ + Msg: strings.Join(createDescription, "\n\t"), + F: func() error { + return api.bulkCreateRecords(createRecords) + }, + } + corrections = append(corrections, corr) + } + + var modifyRecords []record + modifyDescription := []string{"Batch modification of records:"} + for _, m := range modify { + id := m.Existing.Original.(*record).ID + record := fromRecordConfig(m.Desired, zone) + record.ID = id + modifyRecords = append(modifyRecords, *record) + modifyDescription = append(modifyDescription, m.String()) + } + if len(modifyRecords) > 0 { + corr := &models.Correction{ + Msg: strings.Join(modifyDescription, "\n\t"), + F: func() error { + return api.bulkUpdateRecords(modifyRecords) + }, + } + corrections = append(corrections, corr) + } return corrections, nil }