From 26c7c356f45fb1431643357662188d22e43ae78a Mon Sep 17 00:00:00 2001 From: Patrick Gaskin Date: Thu, 8 Oct 2020 16:12:56 -0400 Subject: [PATCH] VULTR: Update govultr to v1.0.0 (fixes #892) (#897) --- go.mod | 2 +- go.sum | 8 ++++---- providers/vultr/convert_test.go | 17 +++++++++++------ providers/vultr/vultrProvider.go | 21 +++++++++++++++------ 4 files changed, 31 insertions(+), 17 deletions(-) diff --git a/go.mod b/go.mod index 8702106b3..1ab7ec897 100644 --- a/go.mod +++ b/go.mod @@ -48,7 +48,7 @@ require ( github.com/tdewolff/parse v2.3.4+incompatible // indirect github.com/tdewolff/test v1.0.6 // indirect github.com/urfave/cli/v2 v2.2.0 - github.com/vultr/govultr v0.2.0 + github.com/vultr/govultr v1.0.0 golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0 golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43 golang.org/x/tools v0.0.0-20201007032633-0806396f153e // indirect diff --git a/go.sum b/go.sum index 08bc6959a..0f1b79aae 100644 --- a/go.sum +++ b/go.sum @@ -214,8 +214,8 @@ github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uP github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= github.com/hashicorp/go-retryablehttp v0.5.4/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= -github.com/hashicorp/go-retryablehttp v0.6.3 h1:tuulM+WnToeqa05z83YLmKabZxrySOmJAd4mJ+s2Nfg= -github.com/hashicorp/go-retryablehttp v0.6.3/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= +github.com/hashicorp/go-retryablehttp v0.6.7 h1:8/CAEZt/+F7kR7GevNHulKkUjLht3CPmn7egmhieNKo= +github.com/hashicorp/go-retryablehttp v0.6.7/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= github.com/hashicorp/go-rootcerts v1.0.1 h1:DMo4fmknnz0E0evoNYnV48RjWndOsmd6OW+09R3cEP8= github.com/hashicorp/go-rootcerts v1.0.1/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-sockaddr v1.0.2 h1:ztczhD1jLxIRjVejw8gFomI1BQZOe2WoVOu0SyteCQc= @@ -335,8 +335,8 @@ github.com/tdewolff/test v1.0.6 h1:76mzYJQ83Op284kMT+63iCNCI7NEERsIN8dLM+RiKr4= github.com/tdewolff/test v1.0.6/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE= github.com/urfave/cli/v2 v2.2.0 h1:JTTnM6wKzdA0Jqodd966MVj4vWbbquZykeX1sKbe2C4= github.com/urfave/cli/v2 v2.2.0/go.mod h1:SE9GqnLQmjVa0iPEY0f1w3ygNIYcIJ0OKPMoW2caLfQ= -github.com/vultr/govultr v0.2.0 h1:CZSNNCk+PHz9hzmfH2PFGkDgc3qNetwZqtcaqL8shlg= -github.com/vultr/govultr v0.2.0/go.mod h1:glSLa57Jdj5s860EEc6+DEBbb/t3aUOKnB4gVPmDVlQ= +github.com/vultr/govultr v1.0.0 h1:yeJrYp9wyA4xXaQZ7eOL2u1wKn2JU79HjRevwvpxbJ4= +github.com/vultr/govultr v1.0.0/go.mod h1:wZZXZbYbqyY1n3AldoeYNZK4Wnmmoq6dNFkvd5TV3ss= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= diff --git a/providers/vultr/convert_test.go b/providers/vultr/convert_test.go index 1a3bf0c53..4da5b1ea0 100644 --- a/providers/vultr/convert_test.go +++ b/providers/vultr/convert_test.go @@ -29,14 +29,15 @@ func TestConversion(t *testing.T) { Type: "SRV", Name: "_ssh_.tcp", Data: "5 22 ssh.example.com", - Priority: 5, + Priority: intPtr(5), TTL: 300, }, { - Type: "MX", - Name: "", - Data: "mail.example.com", - TTL: 300, + Type: "MX", + Name: "", + Data: "mail.example.com", + Priority: intPtr(0), + TTL: 300, }, { Type: "NS", @@ -66,8 +67,12 @@ func TestConversion(t *testing.T) { converted := toVultrRecord(dc, rc, 0) - if converted.Type != record.Type || converted.Name != record.Name || converted.Data != record.Data || converted.Priority != record.Priority || converted.TTL != record.TTL { + if converted.Type != record.Type || converted.Name != record.Name || converted.Data != record.Data || ((converted.Priority == nil) != (record.Priority == nil) || (converted.Priority != nil && *converted.Priority != *record.Priority)) || converted.TTL != record.TTL { t.Error("Vultr record conversion mismatch", record, rc, converted) } } } + +func intPtr(v int) *int { + return &v +} diff --git a/providers/vultr/vultrProvider.go b/providers/vultr/vultrProvider.go index d07b4a293..a5118f9d8 100644 --- a/providers/vultr/vultrProvider.go +++ b/providers/vultr/vultrProvider.go @@ -119,7 +119,7 @@ func (api *Provider) GetDomainCorrections(dc *models.DomainConfig) ([]*models.Co corrections = append(corrections, &models.Correction{ Msg: mod.String(), F: func() error { - return api.client.DNSRecord.Create(context.Background(), dc.Name, r.Type, r.Name, r.Data, r.TTL, r.Priority) + return api.client.DNSRecord.Create(context.Background(), dc.Name, r.Type, r.Name, r.Data, r.TTL, vultrPriority(r)) }, }) } @@ -191,10 +191,10 @@ func toRecordConfig(domain string, r *govultr.DNSRecord) (*models.RecordConfig, if !strings.HasSuffix(data, ".") { data = data + "." } - return rc, rc.SetTargetMX(uint16(r.Priority), data) + return rc, rc.SetTargetMX(uint16(vultrPriority(r)), data) case "SRV": // Vultr returns SRV records in the format "[weight] [port] [target]". - return rc, rc.SetTargetSRVPriorityString(uint16(r.Priority), data) + return rc, rc.SetTargetSRVPriorityString(uint16(vultrPriority(r)), data) case "TXT": // Remove quotes if it is a TXT record. if !strings.HasPrefix(data, `"`) || !strings.HasSuffix(data, `"`) { @@ -225,13 +225,15 @@ func toVultrRecord(dc *models.DomainConfig, rc *models.RecordConfig, vultrID int data = fmt.Sprintf(`"%s"`, data) } - priority := 0 + var priority *int if rc.Type == "MX" { - priority = int(rc.MxPreference) + tmp := int(rc.MxPreference) + priority = &tmp } if rc.Type == "SRV" { - priority = int(rc.SrvPriority) + tmp := int(rc.SrvPriority) + priority = &tmp } r := &govultr.DNSRecord{ @@ -254,3 +256,10 @@ func toVultrRecord(dc *models.DomainConfig, rc *models.RecordConfig, vultrID int return r } + +func vultrPriority(r *govultr.DNSRecord) int { + if r.Priority == nil { + return 0 + } + return *r.Priority +}