From 3388e3ddf1b6e5b6dea381ef3ce55df245bfc738 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nick=20J=C3=BCttner?= Date: Sat, 6 Jun 2020 22:29:24 +0200 Subject: [PATCH] improve linter quality for external-dns --- .golangci.yml | 86 +++++++++++++++++++++----- Makefile | 2 +- controller/controller.go | 8 +-- controller/controller_test.go | 4 +- internal/config/config.go | 4 +- internal/testutils/endpoint.go | 1 - internal/testutils/init.go | 2 +- provider/akamai/akamai.go | 3 - provider/alibabacloud/alibaba_cloud.go | 41 ++++-------- provider/aws/aws.go | 5 +- provider/coredns/coredns.go | 3 +- provider/digitalocean/digital_ocean.go | 2 +- provider/dnsimple/dnsimple.go | 4 +- provider/dyn/dyn.go | 7 +-- provider/linode/linode.go | 1 - provider/ns1/ns1.go | 1 - provider/oci/oci.go | 4 +- provider/ovh/ovh.go | 1 - provider/pdns/pdns.go | 25 +------- provider/rcode0/rcode0.go | 20 ------ provider/rfc2136/rfc2136.go | 3 - provider/vinyldns/vinyldns.go | 2 +- provider/vultr/vultr.go | 4 -- source/gateway.go | 1 - source/source.go | 2 +- 25 files changed, 108 insertions(+), 128 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 3c9495ef9..91412ced9 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,23 +1,81 @@ -run: - concurrency: 4 - - modules-download-mode: readonly - linters-settings: + exhaustive: + default-signifies-exhaustive: false + goimports: + local-prefixes: github.com/kubernetes-sigs/external-dns golint: - min-confidence: 0.9 - - gocyclo: - min-complexity: 15 + min-confidence: 0.9 + maligned: + suggest-new: true + misspell: + locale: US linters: + # please, do not use `enable-all`: it's deprecated and will be removed soon. + # inverted configuration with `enable-all` and `disable` is not scalable during updates of golangci-lint disable-all: true enable: + - deadcode + - depguard + - dogsled + - gofmt + - goimports + - golint + - goprintffuncname + - gosimple - govet - ineffassign - - golint - - goimports - - misspell - - unconvert - - megacheck - interfacer + - misspell + - rowserrcheck + - staticcheck + - structcheck + - stylecheck + - typecheck + - unconvert + - unused + - varcheck + - whitespace + +issues: + # Excluding configuration per-path, per-linter, per-text and per-source + exclude-rules: + - path: _test\.go + linters: + - deadcode + - depguard + - dogsled + - gofmt + - goimports + - golint + - goprintffuncname + - gosimple + - govet + - ineffassign + - interfacer + - misspell + - nolintlint + - rowserrcheck + - staticcheck + - structcheck + - stylecheck + - typecheck + - unconvert + - unused + - varcheck + - whitespace + + +#run: +# skip-dirs: +# - test/testdata_etc +# - internal/cache +# - internal/renameio +# - internal/robustio + +# golangci.com configuration +# https://github.com/golangci/golangci/wiki/Configuration +#service: +# golangci-lint-version: 1.23.x # use the fixed version to not introduce new linters unexpectedly +# prepare: +# - echo "here I can run custom commands, but no preparation needed for this repo" diff --git a/Makefile b/Makefile index 4ce25e241..acd5aa8ea 100644 --- a/Makefile +++ b/Makefile @@ -31,7 +31,7 @@ cover-html: cover # Run all the linters lint: - golangci-lint run --timeout=5m ./... + golangci-lint run --timeout=15m ./... # The verify target runs tasks similar to the CI tasks, but without code coverage diff --git a/controller/controller.go b/controller/controller.go index 6220d1d14..2f2c7181b 100644 --- a/controller/controller.go +++ b/controller/controller.go @@ -160,14 +160,14 @@ func (c *Controller) RunOnce(ctx context.Context) error { return nil } -// MIN_INTERVAL is used as window for batching events -const MIN_INTERVAL = 5 * time.Second +// MinInterval is used as window for batching events +const MinInterval = 5 * time.Second // RunOnceThrottled makes sure execution happens at most once per interval. func (c *Controller) ScheduleRunOnce(now time.Time) { c.nextRunAtMux.Lock() defer c.nextRunAtMux.Unlock() - c.nextRunAt = now.Add(MIN_INTERVAL) + c.nextRunAt = now.Add(MinInterval) } func (c *Controller) ShouldRunOnce(now time.Time) bool { @@ -180,7 +180,7 @@ func (c *Controller) ShouldRunOnce(now time.Time) bool { return true } -// Run runs RunOnce in a loop with a delay until context is cancelled +// Run runs RunOnce in a loop with a delay until context is canceled func (c *Controller) Run(ctx context.Context) { ticker := time.NewTicker(time.Second) defer ticker.Stop() diff --git a/controller/controller_test.go b/controller/controller_test.go index b93dbc8d8..22c2b4b15 100644 --- a/controller/controller_test.go +++ b/controller/controller_test.go @@ -174,8 +174,8 @@ func TestShouldRunOnce(t *testing.T) { assert.False(t, ctrl.ShouldRunOnce(now)) assert.False(t, ctrl.ShouldRunOnce(now.Add(100*time.Microsecond))) - // But after MIN_INTERVAL we should run reconciliation - now = now.Add(MIN_INTERVAL) + // But after MinInterval we should run reconciliation + now = now.Add(MinInterval) assert.True(t, ctrl.ShouldRunOnce(now)) // But just one time diff --git a/internal/config/config.go b/internal/config/config.go index d223e94df..7a05f36e2 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -1,4 +1,4 @@ package config -// FAST_POLL used for fast testing -var FAST_POLL = false +// FastPoll used for fast testing +var FastPoll = false diff --git a/internal/testutils/endpoint.go b/internal/testutils/endpoint.go index b1507f588..62e5c5465 100644 --- a/internal/testutils/endpoint.go +++ b/internal/testutils/endpoint.go @@ -39,7 +39,6 @@ func (b byAllFields) Less(i, j int) bool { return b[i].RecordType <= b[j].RecordType } return b[i].Targets.String() <= b[j].Targets.String() - } return false } diff --git a/internal/testutils/init.go b/internal/testutils/init.go index b2f5a54bd..63456d199 100644 --- a/internal/testutils/init.go +++ b/internal/testutils/init.go @@ -11,7 +11,7 @@ import ( ) func init() { - config.FAST_POLL = true + config.FastPoll = true if os.Getenv("DEBUG") == "" { logrus.SetOutput(ioutil.Discard) log.SetOutput(ioutil.Discard) diff --git a/provider/akamai/akamai.go b/provider/akamai/akamai.go index e612d127a..d90a53d49 100644 --- a/provider/akamai/akamai.go +++ b/provider/akamai/akamai.go @@ -293,7 +293,6 @@ func (p *AkamaiProvider) newAkamaiRecord(dnsName, recordType string, targets ... func (p *AkamaiProvider) createRecords(zoneNameIDMapper provider.ZoneIDName, endpoints []*endpoint.Endpoint) (created []*endpoint.Endpoint, failed []*endpoint.Endpoint) { for _, endpoint := range endpoints { - if !p.domainFilter.Match(endpoint.DNSName) { log.Debugf("Skipping creation at Akamai of endpoint DNSName: '%s' RecordType: '%s', it does not match against Domain filters", endpoint.DNSName, endpoint.RecordType) continue @@ -324,7 +323,6 @@ func (p *AkamaiProvider) createRecords(zoneNameIDMapper provider.ZoneIDName, end func (p *AkamaiProvider) deleteRecords(zoneNameIDMapper provider.ZoneIDName, endpoints []*endpoint.Endpoint) (deleted []*endpoint.Endpoint, failed []*endpoint.Endpoint) { for _, endpoint := range endpoints { - if !p.domainFilter.Match(endpoint.DNSName) { log.Debugf("Skipping deletion at Akamai of endpoint: '%s' type: '%s', it does not match against Domain filters", endpoint.DNSName, endpoint.RecordType) continue @@ -353,7 +351,6 @@ func (p *AkamaiProvider) deleteRecords(zoneNameIDMapper provider.ZoneIDName, end func (p *AkamaiProvider) updateNewRecords(zoneNameIDMapper provider.ZoneIDName, endpoints []*endpoint.Endpoint) (updated []*endpoint.Endpoint, failed []*endpoint.Endpoint) { for _, endpoint := range endpoints { - if !p.domainFilter.Match(endpoint.DNSName) { log.Debugf("Skipping update at Akamai of endpoint DNSName: '%s' RecordType: '%s', it does not match against Domain filters", endpoint.DNSName, endpoint.RecordType) continue diff --git a/provider/alibabacloud/alibaba_cloud.go b/provider/alibabacloud/alibaba_cloud.go index 84a71fbf2..64bb0c171 100644 --- a/provider/alibabacloud/alibaba_cloud.go +++ b/provider/alibabacloud/alibaba_cloud.go @@ -100,17 +100,17 @@ func NewAlibabaCloudProvider(configFile string, domainFilter endpoint.DomainFilt if configFile != "" { contents, err := ioutil.ReadFile(configFile) if err != nil { - return nil, fmt.Errorf("Failed to read Alibaba Cloud config file '%s': %v", configFile, err) + return nil, fmt.Errorf("failed to read Alibaba Cloud config file '%s': %v", configFile, err) } err = yaml.Unmarshal(contents, &cfg) if err != nil { - return nil, fmt.Errorf("Failed to parse Alibaba Cloud config file '%s': %v", configFile, err) + return nil, fmt.Errorf("failed to parse Alibaba Cloud config file '%s': %v", configFile, err) } } else { var tmpError error cfg, tmpError = getCloudConfigFromStsToken() if tmpError != nil { - return nil, fmt.Errorf("Failed to getCloudConfigFromStsToken: %v", tmpError) + return nil, fmt.Errorf("failed to getCloudConfigFromStsToken: %v", tmpError) } } @@ -182,19 +182,19 @@ func getCloudConfigFromStsToken() (alibabaCloudConfig, error) { roleName := "" var err error if roleName, err = m.RoleName(); err != nil { - return cfg, fmt.Errorf("Failed to get role name from Metadata Service: %v", err) + return cfg, fmt.Errorf("failed to get role name from Metadata Service: %v", err) } vpcID, err := m.VpcID() if err != nil { - return cfg, fmt.Errorf("Failed to get VPC ID from Metadata Service: %v", err) + return cfg, fmt.Errorf("failed to get VPC ID from Metadata Service: %v", err) } regionID, err := m.Region() if err != nil { - return cfg, fmt.Errorf("Failed to get Region ID from Metadata Service: %v", err) + return cfg, fmt.Errorf("failed to get Region ID from Metadata Service: %v", err) } role, err := m.RamRoleToken(roleName) if err != nil { - return cfg, fmt.Errorf("Failed to get STS Token from Metadata Service: %v", err) + return cfg, fmt.Errorf("failed to get STS Token from Metadata Service: %v", err) } cfg.RegionID = regionID cfg.RoleName = roleName @@ -317,7 +317,6 @@ func (p *AlibabaCloudProvider) getDNSName(rr, domain string) string { // // Returns the current records or an error if the operation failed. func (p *AlibabaCloudProvider) recordsForDNS() (endpoints []*endpoint.Endpoint, _ error) { - records, err := p.records() if err != nil { return nil, err @@ -346,7 +345,6 @@ func (p *AlibabaCloudProvider) recordsForDNS() (endpoints []*endpoint.Endpoint, } func getNextPageNumber(pageNumber, pageSize, totalCount int) int { - if pageNumber*pageSize >= totalCount { return 0 } @@ -365,18 +363,13 @@ func (p *AlibabaCloudProvider) getRecordKeyByEndpoint(endpoint *endpoint.Endpoin } func (p *AlibabaCloudProvider) groupRecords(records []alidns.Record) (endpointMap map[string][]alidns.Record) { - endpointMap = make(map[string][]alidns.Record) - for _, record := range records { - key := p.getRecordKey(record) recordList := endpointMap[key] endpointMap[key] = append(recordList, record) - } - return endpointMap } @@ -451,18 +444,15 @@ func (p *AlibabaCloudProvider) getDomainRecords(domainName string) ([]alidns.Rec } for _, record := range response.DomainRecords.Record { - domainName := record.DomainName recordType := record.Type if !p.domainFilter.Match(domainName) { continue } - if !provider.SupportedRecordType(recordType) { continue } - //TODO filter Locked record results = append(results, record) } @@ -624,7 +614,6 @@ func (p *AlibabaCloudProvider) equals(record alidns.Record, endpoint *endpoint.E } func (p *AlibabaCloudProvider) updateRecords(recordMap map[string][]alidns.Record, endpoints []*endpoint.Endpoint) error { - for _, endpoint := range endpoints { key := p.getRecordKeyByEndpoint(endpoint) records := recordMap[key] @@ -669,7 +658,6 @@ func (p *AlibabaCloudProvider) updateRecords(recordMap map[string][]alidns.Recor } func (p *AlibabaCloudProvider) splitDNSName(endpoint *endpoint.Endpoint) (rr string, domain string) { - name := strings.TrimSuffix(endpoint.DNSName, ".") found := false @@ -729,7 +717,6 @@ func (p *AlibabaCloudProvider) matchVPC(zoneID string) bool { } func (p *AlibabaCloudProvider) privateZones() ([]pvtz.Zone, error) { - var zones []pvtz.Zone request := pvtz.CreateDescribeZonesRequest() @@ -784,7 +771,6 @@ func (p *AlibabaCloudProvider) getPrivateZones() (map[string]*alibabaPrivateZone } for _, zone := range zones { - request := pvtz.CreateDescribeZoneRecordsRequest() request.ZoneId = zone.ZoneId request.PageSize = requests.NewInteger(defaultAlibabaCloudPageSize) @@ -801,7 +787,6 @@ func (p *AlibabaCloudProvider) getPrivateZones() (map[string]*alibabaPrivateZone } for _, record := range response.Records.Record { - recordType := record.Type if !provider.SupportedRecordType(recordType) { @@ -831,7 +816,6 @@ func (p *AlibabaCloudProvider) getPrivateZones() (map[string]*alibabaPrivateZone } func (p *AlibabaCloudProvider) groupPrivateZoneRecords(zone *alibabaPrivateZone) (endpointMap map[string][]pvtz.Record) { - endpointMap = make(map[string][]pvtz.Record) for _, record := range zone.records { @@ -847,7 +831,6 @@ func (p *AlibabaCloudProvider) groupPrivateZoneRecords(zone *alibabaPrivateZone) // // Returns the current records or an error if the operation failed. func (p *AlibabaCloudProvider) privateZoneRecords() (endpoints []*endpoint.Endpoint, _ error) { - zones, err := p.getPrivateZones() if err != nil { return nil, err @@ -881,7 +864,7 @@ func (p *AlibabaCloudProvider) createPrivateZoneRecord(zones map[string]*alibaba rr, domain := p.splitDNSName(endpoint) zone := zones[domain] if zone == nil { - err := fmt.Errorf("Failed to find private zone '%s'", domain) + err := fmt.Errorf("failed to find private zone '%s'", domain) log.Errorf("Failed to create %s record named '%s' to '%s' for Alibaba Cloud Private Zone: %v", endpoint.RecordType, endpoint.DNSName, target, err) return err } @@ -912,7 +895,7 @@ func (p *AlibabaCloudProvider) createPrivateZoneRecord(zones map[string]*alibaba if err == nil { log.Infof("Create %s record named '%s' to '%s' with ttl %d for Alibaba Cloud Private Zone: Record ID=%d", endpoint.RecordType, endpoint.DNSName, target, ttl, response.RecordId) } else { - log.Errorf("Failed to create %s record named '%s' to '%s' with ttl %d for Alibaba Cloud Private Zone: %v", endpoint.RecordType, endpoint.DNSName, target, ttl, err) + log.Errorf("failed to create %s record named '%s' to '%s' with ttl %d for Alibaba Cloud Private Zone: %v", endpoint.RecordType, endpoint.DNSName, target, ttl, err) } return err } @@ -927,7 +910,6 @@ func (p *AlibabaCloudProvider) createPrivateZoneRecords(zones map[string]*alibab } func (p *AlibabaCloudProvider) deletePrivateZoneRecord(recordID int) error { - if p.dryRun { log.Infof("Dry run: Delete record id '%d' in Alibaba Cloud Private Zone", recordID) } @@ -951,7 +933,7 @@ func (p *AlibabaCloudProvider) deletePrivateZoneRecords(zones map[string]*alibab zone := zones[domain] if zone == nil { - err := fmt.Errorf("Failed to find private zone '%s'", domain) + err := fmt.Errorf("failed to find private zone '%s'", domain) log.Errorf("Failed to delete %s record named '%s' for Alibaba Cloud Private Zone: %v", endpoint.RecordType, endpoint.DNSName, err) continue } @@ -1035,12 +1017,11 @@ func (p *AlibabaCloudProvider) equalsPrivateZone(record pvtz.Record, endpoint *e } func (p *AlibabaCloudProvider) updatePrivateZoneRecords(zones map[string]*alibabaPrivateZone, endpoints []*endpoint.Endpoint) error { - for _, endpoint := range endpoints { rr, domain := p.splitDNSName(endpoint) zone := zones[domain] if zone == nil { - err := fmt.Errorf("Failed to find private zone '%s'", domain) + err := fmt.Errorf("failed to find private zone '%s'", domain) log.Errorf("Failed to update %s record named '%s' for Alibaba Cloud Private Zone: %v", endpoint.RecordType, endpoint.DNSName, err) continue } diff --git a/provider/aws/aws.go b/provider/aws/aws.go index 533c06fcc..99a18ac2f 100644 --- a/provider/aws/aws.go +++ b/provider/aws/aws.go @@ -433,7 +433,7 @@ func (p *AWSProvider) submitChanges(ctx context.Context, changes []*route53.Chan } if _, err := p.client.ChangeResourceRecordSetsWithContext(ctx, params); err != nil { - log.Errorf("Failure in zone %s [Id: %s]", aws.StringValue(zones[z].Name), z) + log.Errorf("failure in zone %s [Id: %s]", aws.StringValue(zones[z].Name), z) log.Error(err) //TODO(ideahitme): consider changing the interface in cases when this error might be a concern for other components failedUpdate = true } else { @@ -453,7 +453,7 @@ func (p *AWSProvider) submitChanges(ctx context.Context, changes []*route53.Chan } if len(failedZones) > 0 { - return fmt.Errorf("Failed to submit all changes for the following zones: %v", failedZones) + return fmt.Errorf("failed to submit all changes for the following zones: %v", failedZones) } return nil @@ -737,7 +737,6 @@ func isAWSAlias(ep *endpoint.Endpoint, addrs []*endpoint.Endpoint) string { if hostedZone := canonicalHostedZone(addr.Targets[0]); hostedZone != "" { return hostedZone } - } } } diff --git a/provider/coredns/coredns.go b/provider/coredns/coredns.go index a54b4831b..8c23f5a6b 100644 --- a/provider/coredns/coredns.go +++ b/provider/coredns/coredns.go @@ -86,7 +86,7 @@ type Service struct { // answer. Group string `json:"group,omitempty"` - // Etcd key where we found this service and ignored from json un-/marshalling + // Etcd key where we found this service and ignored from json un-/marshaling Key string `json:"-"` } @@ -397,7 +397,6 @@ func (p coreDNSProvider) ApplyChanges(ctx context.Context, changes *plan.Changes } } } - } index := 0 for _, ep := range group { diff --git a/provider/digitalocean/digital_ocean.go b/provider/digitalocean/digital_ocean.go index f9b5bbaec..66caddba9 100644 --- a/provider/digitalocean/digital_ocean.go +++ b/provider/digitalocean/digital_ocean.go @@ -62,7 +62,7 @@ type DigitalOceanChange struct { func NewDigitalOceanProvider(ctx context.Context, domainFilter endpoint.DomainFilter, dryRun bool) (*DigitalOceanProvider, error) { token, ok := os.LookupEnv("DO_TOKEN") if !ok { - return nil, fmt.Errorf("No token found") + return nil, fmt.Errorf("no token found") } oauthClient := oauth2.NewClient(ctx, oauth2.StaticTokenSource(&oauth2.Token{ AccessToken: token, diff --git a/provider/dnsimple/dnsimple.go b/provider/dnsimple/dnsimple.go index da9ae44be..8e357d1ab 100644 --- a/provider/dnsimple/dnsimple.go +++ b/provider/dnsimple/dnsimple.go @@ -101,7 +101,7 @@ const ( func NewDnsimpleProvider(domainFilter endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, dryRun bool) (provider.Provider, error) { oauthToken := os.Getenv("DNSIMPLE_OAUTH") if len(oauthToken) == 0 { - return nil, fmt.Errorf("No dnsimple oauth token provided") + return nil, fmt.Errorf("no dnsimple oauth token provided") } ts := oauth2.StaticTokenSource(&oauth2.Token{AccessToken: oauthToken}) @@ -319,7 +319,7 @@ func (p *dnsimpleProvider) GetRecordID(ctx context.Context, zone string, recordN break } } - return 0, fmt.Errorf("No record id found") + return 0, fmt.Errorf("no record id found") } // dnsimpleSuitableZone returns the most suitable zone for a given hostname and a set of zones. diff --git a/provider/dyn/dyn.go b/provider/dyn/dyn.go index 4ad78962f..1bc19fc3f 100644 --- a/provider/dyn/dyn.go +++ b/provider/dyn/dyn.go @@ -158,7 +158,6 @@ func NewDynProvider(config DynConfig) (provider.Provider, error) { func filterAndFixLinks(links []string, filter endpoint.DomainFilter) []string { var result []string for _, link := range links { - // link looks like /REST/CNAMERecord/acme.com/exchange.acme.com/349386875 // strip /REST/ @@ -292,7 +291,6 @@ func (d *dynProviderState) allRecordsToEndpoints(records *dynectsoap.GetAllRecor } return result - } func errorOrValue(err error, value interface{}) interface{} { @@ -394,7 +392,6 @@ func (d *dynProviderState) fetchAllRecordsInZone(zone string) (*dynectsoap.GetAl } return &records, nil - } // buildLinkToRecord build a resource link. The symmetry of the dyn API is used to save @@ -570,7 +567,7 @@ func (d *dynProviderState) commit(client *dynect.Client) error { case 1: return errs[0] default: - return fmt.Errorf("Multiple errors committing: %+v", errs) + return fmt.Errorf("multiple errors committing: %+v", errs) } } @@ -681,7 +678,7 @@ func (d *dynProviderState) ApplyChanges(ctx context.Context, changes *plan.Chang case 1: return errs[0] default: - return fmt.Errorf("Multiple errors committing: %+v", errs) + return fmt.Errorf("multiple errors committing: %+v", errs) } if needsCommit { diff --git a/provider/linode/linode.go b/provider/linode/linode.go index 207727245..3ecd2e55f 100644 --- a/provider/linode/linode.go +++ b/provider/linode/linode.go @@ -447,7 +447,6 @@ func (p *LinodeProvider) ApplyChanges(ctx context.Context, changes *plan.Changes DomainRecord: record, }) } - } } diff --git a/provider/ns1/ns1.go b/provider/ns1/ns1.go index 0af8fa483..53e3d43b5 100644 --- a/provider/ns1/ns1.go +++ b/provider/ns1/ns1.go @@ -152,7 +152,6 @@ func (p *NS1Provider) Records(ctx context.Context) ([]*endpoint.Endpoint, error) var endpoints []*endpoint.Endpoint for _, zone := range zones { - // TODO handle Header Codes zoneData, _, err := p.client.GetZone(zone.String()) if err != nil { diff --git a/provider/oci/oci.go b/provider/oci/oci.go index 02f11fce9..759caebf1 100644 --- a/provider/oci/oci.go +++ b/provider/oci/oci.go @@ -84,7 +84,7 @@ func LoadOCIConfig(path string) (*OCIConfig, error) { return &cfg, nil } -// NewOCIProvider initialises a new OCI DNS based Provider. +// NewOCIProvider initializes a new OCI DNS based Provider. func NewOCIProvider(cfg OCIConfig, domainFilter endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, dryRun bool) (*OCIProvider, error) { var client ociDNSClient client, err := dns.NewDnsClientWithConfigurationProvider(common.NewRawConfigurationProvider( @@ -96,7 +96,7 @@ func NewOCIProvider(cfg OCIConfig, domainFilter endpoint.DomainFilter, zoneIDFil &cfg.Auth.Passphrase, )) if err != nil { - return nil, errors.Wrap(err, "initialising OCI DNS API client") + return nil, errors.Wrap(err, "initializing OCI DNS API client") } return &OCIProvider{ diff --git a/provider/ovh/ovh.go b/provider/ovh/ovh.go index f115b9cad..a32260e1b 100644 --- a/provider/ovh/ovh.go +++ b/provider/ovh/ovh.go @@ -97,7 +97,6 @@ func NewOVHProvider(ctx context.Context, domainFilter endpoint.DomainFilter, end // Records returns the list of records in all relevant zones. func (p *OVHProvider) Records(ctx context.Context) ([]*endpoint.Endpoint, error) { - _, records, err := p.zonesRecords(ctx) if err != nil { return nil, err diff --git a/provider/pdns/pdns.go b/provider/pdns/pdns.go index 03bbfe4e9..8ecd9d823 100644 --- a/provider/pdns/pdns.go +++ b/provider/pdns/pdns.go @@ -117,7 +117,6 @@ func (tlsConfig *TLSConfig) setHTTPClient(pdnsClientConfig *pgo.Configuration) e // Function for debug printing func stringifyHTTPResponseBody(r *http.Response) (body string) { - if r == nil { return "" } @@ -126,7 +125,6 @@ func stringifyHTTPResponseBody(r *http.Response) (body string) { buf.ReadFrom(r.Body) body = buf.String() return body - } // PDNSAPIProvider : Interface used and extended by the PDNSAPIClient struct as @@ -162,7 +160,6 @@ func (c *PDNSAPIClient) ListZones() (zones []pgo.Zone, resp *http.Response, err log.Errorf("Unable to fetch zones. %v", err) return zones, resp, err - } // PartitionZones : Method returns a slice of zones that adhere to the domain filter and a slice of ones that does not adhere to the filter @@ -191,14 +188,12 @@ func (c *PDNSAPIClient) ListZone(zoneID string) (zone pgo.Zone, resp *http.Respo log.Debugf("Retrying ListZone() ... %d", i) time.Sleep(retryAfterTime * (1 << uint(i))) continue - } return zone, resp, err } log.Errorf("Unable to list zone. %v", err) return zone, resp, err - } // PatchZone : Method used to update the contents of a particular zone from PowerDNS @@ -211,7 +206,6 @@ func (c *PDNSAPIClient) PatchZone(zoneID string, zoneStruct pgo.Zone) (resp *htt log.Debugf("Retrying PatchZone() ... %d", i) time.Sleep(retryAfterTime * (1 << uint(i))) continue - } return resp, err } @@ -228,11 +222,10 @@ type PDNSProvider struct { // NewPDNSProvider initializes a new PowerDNS based Provider. func NewPDNSProvider(ctx context.Context, config PDNSConfig) (*PDNSProvider, error) { - // Do some input validation if config.APIKey == "" { - return nil, errors.New("Missing API Key for PDNS. Specify using --pdns-api-key=") + return nil, errors.New("missing API Key for PDNS. Specify using --pdns-api-key=") } // We do not support dry running, exit safely instead of surprising the user @@ -259,7 +252,6 @@ func NewPDNSProvider(ctx context.Context, config PDNSConfig) (*PDNSProvider, err domainFilter: config.DomainFilter, }, } - return provider, nil } @@ -272,13 +264,11 @@ func (p *PDNSProvider) convertRRSetToEndpoints(rr pgo.RrSet) (endpoints []*endpo endpoints = append(endpoints, endpoint.NewEndpointWithTTL(rr.Name, rr.Type_, endpoint.TTL(rr.Ttl), record.Content)) } } - return endpoints, nil } // ConvertEndpointsToZones marshals endpoints into pdns compatible Zone structs func (p *PDNSProvider) ConvertEndpointsToZones(eps []*endpoint.Endpoint, changetype pdnsChangeType) (zonelist []pgo.Zone, _ error) { - zonelist = []pgo.Zone{} endpoints := make([]*endpoint.Endpoint, len(eps)) copy(endpoints, eps) @@ -319,7 +309,7 @@ func (p *PDNSProvider) ConvertEndpointsToZones(eps []*endpoint.Endpoint, changet // external-dns v5.0.0-alpha onwards records := []pgo.Record{} for _, t := range ep.Targets { - if "CNAME" == ep.RecordType { + if ep.RecordType == "CNAME" { t = provider.EnsureTrailingDot(t) } @@ -335,7 +325,7 @@ func (p *PDNSProvider) ConvertEndpointsToZones(eps []*endpoint.Endpoint, changet // DELETEs explicitly forbid a TTL, therefore only PATCHes need the TTL if changetype == PdnsReplace { if int64(ep.RecordTTL) > int64(math.MaxInt32) { - return nil, errors.New("Value of record TTL overflows, limited to int32") + return nil, errors.New("value of record TTL overflows, limited to int32") } if ep.RecordTTL == 0 { // No TTL was specified for the record, we use the default @@ -353,13 +343,10 @@ func (p *PDNSProvider) ConvertEndpointsToZones(eps []*endpoint.Endpoint, changet // If we didn't pop anything, we move to the next item in the list i++ } - } - if len(zone.Rrsets) > 0 { zonelist = append(zonelist, zone) } - } // residualZones is unsorted by name length like its counterpart @@ -377,7 +364,6 @@ func (p *PDNSProvider) ConvertEndpointsToZones(eps []*endpoint.Endpoint, changet } } } - // If we still have some endpoints left, it means we couldn't find a matching zone (filtered or residual) for them // We warn instead of hard fail here because we don't want a misconfig to cause everything to go down if len(endpoints) > 0 { @@ -402,20 +388,17 @@ func (p *PDNSProvider) mutateRecords(endpoints []*endpoint.Endpoint, changetype } else { log.Debugf("Struct for PatchZone:\n%s", string(jso)) } - resp, err := p.client.PatchZone(zone.Id, zone) if err != nil { log.Debugf("PDNS API response: %s", stringifyHTTPResponseBody(resp)) return err } - } return nil } // Records returns all DNS records controlled by the configured PDNS server (for all zones) func (p *PDNSProvider) Records(ctx context.Context) (endpoints []*endpoint.Endpoint, _ error) { - zones, _, err := p.client.ListZones() if err != nil { return nil, err @@ -445,7 +428,6 @@ func (p *PDNSProvider) Records(ctx context.Context) (endpoints []*endpoint.Endpo // ApplyChanges takes a list of changes (endpoints) and updates the PDNS server // by sending the correct HTTP PATCH requests to a matching zone func (p *PDNSProvider) ApplyChanges(ctx context.Context, changes *plan.Changes) error { - startTime := time.Now() // Create @@ -493,7 +475,6 @@ func (p *PDNSProvider) ApplyChanges(ctx context.Context, changes *plan.Changes) return err } } - log.Debugf("Changes pushed out to PowerDNS in %s\n", time.Since(startTime)) return nil } diff --git a/provider/rcode0/rcode0.go b/provider/rcode0/rcode0.go index e7822deb0..571857c21 100644 --- a/provider/rcode0/rcode0.go +++ b/provider/rcode0/rcode0.go @@ -46,7 +46,6 @@ type RcodeZeroProvider struct { // // Returns the provider or an error if a provider could not be created. func NewRcodeZeroProvider(domainFilter endpoint.DomainFilter, dryRun bool, txtEnc bool) (*RcodeZeroProvider, error) { - client, err := rc0.NewClient(os.Getenv("RC0_API_KEY")) if err != nil { @@ -78,7 +77,6 @@ func NewRcodeZeroProvider(domainFilter endpoint.DomainFilter, dryRun bool, txtEn // Zones returns filtered zones if filter is set func (p *RcodeZeroProvider) Zones() ([]*rc0.Zone, error) { - var result []*rc0.Zone zones, err := p.fetchZones() @@ -99,7 +97,6 @@ func (p *RcodeZeroProvider) Zones() ([]*rc0.Zone, error) { // // Decrypts TXT records if TXT-Encrypt flag is set and key is provided func (p *RcodeZeroProvider) Records(ctx context.Context) ([]*endpoint.Endpoint, error) { - zones, err := p.Zones() if err != nil { return nil, err @@ -108,7 +105,6 @@ func (p *RcodeZeroProvider) Records(ctx context.Context) ([]*endpoint.Endpoint, var endpoints []*endpoint.Endpoint for _, zone := range zones { - rrset, err := p.fetchRecords(zone.Domain) if err != nil { @@ -116,25 +112,19 @@ func (p *RcodeZeroProvider) Records(ctx context.Context) ([]*endpoint.Endpoint, } for _, r := range rrset { - if provider.SupportedRecordType(r.Type) { - if p.TXTEncrypt && (p.Key != nil) && strings.EqualFold(r.Type, "TXT") { p.Client.RRSet.DecryptTXT(p.Key, r) } - if len(r.Records) > 1 { - for _, _r := range r.Records { if !_r.Disabled { endpoints = append(endpoints, endpoint.NewEndpointWithTTL(r.Name, r.Type, endpoint.TTL(r.TTL), _r.Content)) } } - } else if !r.Records[0].Disabled { endpoints = append(endpoints, endpoint.NewEndpointWithTTL(r.Name, r.Type, endpoint.TTL(r.TTL), r.Records[0].Content)) } - } } } @@ -144,7 +134,6 @@ func (p *RcodeZeroProvider) Records(ctx context.Context) ([]*endpoint.Endpoint, // ApplyChanges applies a given set of changes in a given zone. func (p *RcodeZeroProvider) ApplyChanges(ctx context.Context, changes *plan.Changes) error { - combinedChanges := make([]*rc0.RRSetChange, 0, len(changes.Create)+len(changes.UpdateNew)+len(changes.Delete)) combinedChanges = append(combinedChanges, p.NewRcodezeroChanges(rc0.ChangeTypeADD, changes.Create)...) @@ -156,7 +145,6 @@ func (p *RcodeZeroProvider) ApplyChanges(ctx context.Context, changes *plan.Chan // Helper function func rcodezeroChangesByZone(zones []*rc0.Zone, changeSet []*rc0.RRSetChange) map[string][]*rc0.RRSetChange { - changes := make(map[string][]*rc0.RRSetChange) zoneNameIDMapper := provider.ZoneIDName{} for _, z := range zones { @@ -178,7 +166,6 @@ func rcodezeroChangesByZone(zones []*rc0.Zone, changeSet []*rc0.RRSetChange) map // Helper function func (p *RcodeZeroProvider) fetchRecords(zoneName string) ([]*rc0.RRType, error) { - var allRecords []*rc0.RRType listOptions := rc0.NewListOptions() @@ -204,7 +191,6 @@ func (p *RcodeZeroProvider) fetchRecords(zoneName string) ([]*rc0.RRType, error) // Helper function func (p *RcodeZeroProvider) fetchZones() ([]*rc0.Zone, error) { - var allZones []*rc0.Zone listOptions := rc0.NewListOptions() @@ -230,7 +216,6 @@ func (p *RcodeZeroProvider) fetchZones() ([]*rc0.Zone, error) { // // Changes are submitted by change type. func (p *RcodeZeroProvider) submitChanges(changes []*rc0.RRSetChange) error { - if len(changes) == 0 { return nil } @@ -242,11 +227,8 @@ func (p *RcodeZeroProvider) submitChanges(changes []*rc0.RRSetChange) error { // separate into per-zone change sets to be passed to the API. changesByZone := rcodezeroChangesByZone(zones, changes) - for zoneName, changes := range changesByZone { - for _, change := range changes { - logFields := log.Fields{ "record": change.Name, "content": change.Records[0].Content, @@ -308,7 +290,6 @@ func (p *RcodeZeroProvider) submitChanges(changes []*rc0.RRSetChange) error { // NewRcodezeroChanges returns a RcodeZero specific array with rrset change objects. func (p *RcodeZeroProvider) NewRcodezeroChanges(action string, endpoints []*endpoint.Endpoint) []*rc0.RRSetChange { - changes := make([]*rc0.RRSetChange, 0, len(endpoints)) for _, _endpoint := range endpoints { @@ -320,7 +301,6 @@ func (p *RcodeZeroProvider) NewRcodezeroChanges(action string, endpoints []*endp // NewRcodezeroChange returns a RcodeZero specific rrset change object. func (p *RcodeZeroProvider) NewRcodezeroChange(action string, endpoint *endpoint.Endpoint) *rc0.RRSetChange { - change := &rc0.RRSetChange{ Type: endpoint.RecordType, ChangeType: action, diff --git a/provider/rfc2136/rfc2136.go b/provider/rfc2136/rfc2136.go index 2fb032750..00481f81f 100644 --- a/provider/rfc2136/rfc2136.go +++ b/provider/rfc2136/rfc2136.go @@ -213,7 +213,6 @@ func (r rfc2136Provider) ApplyChanges(ctx context.Context, changes *plan.Changes m.SetUpdate(r.zoneName) for _, ep := range changes.Create { - if !r.domainFilter.Match(ep.DNSName) { log.Debugf("Skipping record %s because it was filtered out by the specified --domain-filter", ep.DNSName) continue @@ -222,7 +221,6 @@ func (r rfc2136Provider) ApplyChanges(ctx context.Context, changes *plan.Changes r.AddRecord(m, ep) } for _, ep := range changes.UpdateNew { - if !r.domainFilter.Match(ep.DNSName) { log.Debugf("Skipping record %s because it was filtered out by the specified --domain-filter", ep.DNSName) continue @@ -231,7 +229,6 @@ func (r rfc2136Provider) ApplyChanges(ctx context.Context, changes *plan.Changes r.UpdateRecord(m, ep) } for _, ep := range changes.Delete { - if !r.domainFilter.Match(ep.DNSName) { log.Debugf("Skipping record %s because it was filtered out by the specified --domain-filter", ep.DNSName) continue diff --git a/provider/vinyldns/vinyldns.go b/provider/vinyldns/vinyldns.go index ac6a2212f..e0cbaef90 100644 --- a/provider/vinyldns/vinyldns.go +++ b/provider/vinyldns/vinyldns.go @@ -206,7 +206,7 @@ func (p *vinyldnsProvider) findRecordSetID(zoneID string, recordSetName string) } } - return "", fmt.Errorf("Record not found") + return "", fmt.Errorf("record not found") } func (p *vinyldnsProvider) ApplyChanges(ctx context.Context, changes *plan.Changes) error { diff --git a/provider/vultr/vultr.go b/provider/vultr/vultr.go index 5bfcc28da..5de422421 100644 --- a/provider/vultr/vultr.go +++ b/provider/vultr/vultr.go @@ -156,7 +156,6 @@ func (p *VultrProvider) submitChanges(ctx context.Context, changes []*VultrChang for zoneName, changes := range zoneChanges { for _, change := range changes { - log.WithFields(log.Fields{ "record": change.ResourceRecordSet.Name, "type": change.ResourceRecordSet.Type, @@ -202,7 +201,6 @@ func (p *VultrProvider) submitChanges(ctx context.Context, changes []*VultrChang } } } - return nil } @@ -221,7 +219,6 @@ func newVultrChanges(action string, endpoints []*endpoint.Endpoint) []*VultrChan changes := make([]*VultrChanges, 0, len(endpoints)) ttl := vultrTTL for _, e := range endpoints { - if e.RecordTTL.IsConfigured() { ttl = int(e.RecordTTL) } @@ -256,7 +253,6 @@ func seperateChangesByZone(zones []govultr.DNSDomain, changes []*VultrChanges) m continue } change[zone] = append(change[zone], c) - } return change } diff --git a/source/gateway.go b/source/gateway.go index ef0df03c3..1ef00d9e5 100644 --- a/source/gateway.go +++ b/source/gateway.go @@ -283,7 +283,6 @@ func (sc *gatewaySource) endpointsFromGateway(hostnames []string, gateway networ } func (sc *gatewaySource) hostNamesFromGateway(gateway networkingv1alpha3.Gateway) ([]string, error) { - var hostnames []string for _, server := range gateway.Spec.Servers { for _, host := range server.Hosts { diff --git a/source/source.go b/source/source.go index bd9889e90..d8394ebfb 100644 --- a/source/source.go +++ b/source/source.go @@ -228,7 +228,7 @@ func matchLabelSelector(selector labels.Selector, srcAnnotations map[string]stri } func poll(interval time.Duration, timeout time.Duration, condition wait.ConditionFunc) error { - if config.FAST_POLL { + if config.FastPoll { time.Sleep(5 * time.Millisecond) ok, err := condition()