mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2024-05-11 05:55:12 +00:00
86 lines
2.9 KiB
Go
86 lines
2.9 KiB
Go
package diff2
|
|
|
|
// import (
|
|
// "github.com/StackExchange/dnscontrol/v3/models"
|
|
// "github.com/StackExchange/dnscontrol/v3/pkg/diff"
|
|
// )
|
|
|
|
// // Provide an interface that is backwards compatible with pkg/diff.
|
|
|
|
// // // /diff/IncrementalDiffCompat(). It not as efficient as converting
|
|
// // to the diff2.By*() functions. However, using this is better than
|
|
// // staying with pkg/diff.
|
|
// func CompatIncrementalDiff(dc *models.DomainConfig, existing []*models.RecordConfig) (unchanged, create, toDelete, modify diff.Changeset, err error) {
|
|
// unchanged = diff.Changeset{}
|
|
// create = diff.Changeset{}
|
|
// toDelete = diff.Changeset{}
|
|
// modify = diff.Changeset{}
|
|
|
|
// instructions, err := ByRecord(existing, dc, nil)
|
|
// if err != nil {
|
|
// return nil, nil, nil, nil, err
|
|
// }
|
|
|
|
// d := diff.New(dc, nil)
|
|
|
|
// for _, inst := range instructions {
|
|
// //cor := Correlation{d: d}
|
|
// cor := diff.Correlation{d: d}
|
|
// switch inst.Type {
|
|
// case CREATE:
|
|
// cor.Desired = inst.New[0]
|
|
// create = append(create, cor)
|
|
// case CHANGE:
|
|
// cor.Existing = inst.Old[0]
|
|
// cor.Desired = inst.New[0]
|
|
// modify = append(modify, cor)
|
|
// case DELETE:
|
|
// cor.Existing = inst.Old[0]
|
|
// toDelete = append(toDelete, cor)
|
|
// }
|
|
// }
|
|
|
|
// return
|
|
// }
|
|
|
|
// // func (d *Differ) ChangedGroups(existing []*models.RecordConfig) (map[models.RecordKey][]string, error) {
|
|
// // changedKeys := map[models.RecordKey][]string{}
|
|
// // _, create, toDelete, modify, err := d.IncrementalDiff(existing)
|
|
// // if err != nil {
|
|
// // return nil, err
|
|
// // }
|
|
// // for _, c := range create {
|
|
// // changedKeys[c.Desired.Key()] = append(changedKeys[c.Desired.Key()], c.String())
|
|
// // }
|
|
// // for _, d := range toDelete {
|
|
// // changedKeys[d.Existing.Key()] = append(changedKeys[d.Existing.Key()], d.String())
|
|
// // }
|
|
// // for _, m := range modify {
|
|
// // changedKeys[m.Desired.Key()] = append(changedKeys[m.Desired.Key()], m.String())
|
|
// // }
|
|
// // return changedKeys, nil
|
|
// // }
|
|
|
|
// // func (c Correlation) String() string {
|
|
// // if c.Existing == nil {
|
|
// // return fmt.Sprintf("CREATE %s %s %s", c.Desired.Type, c.Desired.GetLabelFQDN(), c.d.content(c.Desired))
|
|
// // }
|
|
// // if c.Desired == nil {
|
|
// // return fmt.Sprintf("DELETE %s %s %s", c.Existing.Type, c.Existing.GetLabelFQDN(), c.d.content(c.Existing))
|
|
// // }
|
|
// // return fmt.Sprintf("MODIFY %s %s: (%s) -> (%s)", c.Existing.Type, c.Existing.GetLabelFQDN(), c.d.content(c.Existing), c.d.content(c.Desired))
|
|
// // }
|
|
|
|
// // // get normalized content for record. target, ttl, mxprio, and specified metadata
|
|
// // func (d *Differ) content(r *models.RecordConfig) string {
|
|
|
|
// // // get the extra values maps to add to the comparison.
|
|
// // var allMaps []map[string]string
|
|
// // for _, f := range d.extraValues {
|
|
// // valueMap := f(r)
|
|
// // allMaps = append(allMaps, valueMap)
|
|
// // }
|
|
|
|
// // return r.ToDiffable(allMaps...)
|
|
// // }
|