From 2cd1cee7bdda932baf8d35a22e99bd59cb3ae1c6 Mon Sep 17 00:00:00 2001 From: ivan katliarchuk Date: Sat, 31 Jan 2026 18:16:02 +0000 Subject: [PATCH 1/9] chore(linter): enable unparam Signed-off-by: ivan katliarchuk --- .golangci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.golangci.yml b/.golangci.yml index 844fcf29a2..e54be82938 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -18,6 +18,7 @@ linters: - staticcheck - unconvert - unused + - unparam # https://golangci-lint.run/docs/linters/configuration/#unparam - usestdlibvars # A linter that detect the possibility to use variables/constants from the Go standard library. https://golangci-lint.run/docs/linters/configuration/#usestdlibvars - whitespace - decorder # Check declaration order and count of types, constants, variables and functions. https://golangci-lint.run/docs/linters/configuration/#decorder From 5ee01257a03634cf2a1220d960fbc74310ef9f4a Mon Sep 17 00:00:00 2001 From: ivan katliarchuk Date: Sat, 31 Jan 2026 19:20:24 +0000 Subject: [PATCH 2/9] chore(linter): enable unparam Signed-off-by: ivan katliarchuk --- .golangci.yml | 2 +- controller/execute_test.go | 31 +++-- provider/alibabacloud/alibaba_cloud.go | 36 +++--- provider/aws/aws_fixtures_test.go | 8 +- provider/aws/aws_utils_test.go | 4 +- provider/azure/azure_privatedns_test.go | 51 ++++----- provider/azure/azure_test.go | 19 +--- provider/civo/civo_test.go | 10 +- provider/coredns/coredns.go | 18 +-- provider/digitalocean/digital_ocean_test.go | 10 +- provider/google/google_test.go | 14 +-- provider/pdns/pdns.go | 9 +- provider/pdns/pdns_test.go | 6 +- registry/awssd/registry_test.go | 18 +-- registry/txt/encryption_test.go | 8 +- registry/txt/registry_test.go | 120 ++++++++++---------- registry/txt/utils_test.go | 8 +- source/ambassador_host.go | 10 +- source/contour_httpproxy.go | 9 +- source/contour_httpproxy_test.go | 3 +- source/f5_transportserver.go | 9 +- source/f5_virtualserver.go | 9 +- source/gateway_grpcroute_test.go | 6 +- source/gateway_httproute_test.go | 86 +++++++------- source/gateway_tcproute_test.go | 4 +- source/gateway_tlsroute_test.go | 6 +- source/gateway_udproute_test.go | 4 +- source/istio_gateway.go | 9 +- source/istio_gateway_test.go | 15 +-- source/kong_tcpingress.go | 9 +- source/node_test.go | 8 +- source/service_test.go | 14 +-- 32 files changed, 254 insertions(+), 319 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index e54be82938..bfea5fb47d 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -17,7 +17,7 @@ linters: - errorlint # Checking for unchecked errors in Go code https://golangci-lint.run/docs/linters/configuration/#errorlint - staticcheck - unconvert - - unused + - unused # https://golangci-lint.run/docs/linters/configuration/#unused - unparam # https://golangci-lint.run/docs/linters/configuration/#unparam - usestdlibvars # A linter that detect the possibility to use variables/constants from the Go standard library. https://golangci-lint.run/docs/linters/configuration/#usestdlibvars - whitespace diff --git a/controller/execute_test.go b/controller/execute_test.go index 0148f3fa3d..4d7399fcbd 100644 --- a/controller/execute_test.go +++ b/controller/execute_test.go @@ -295,8 +295,8 @@ func TestHelperProcess(_ *testing.T) { Execute() } -// runExecuteSubprocess runs Execute in a separate process and returns exit code and output. -func runExecuteSubprocess(t *testing.T, args []string) (int, string, error) { +// runExecuteSubprocess runs Execute in a separate process and returns exit code. +func runExecuteSubprocess(t *testing.T, args []string) (int, error) { t.Helper() // make sure the subprocess does not run forever ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) @@ -310,23 +310,22 @@ func runExecuteSubprocess(t *testing.T, args []string) (int, string, error) { cmd.Stdout = &buf cmd.Stderr = &buf err := cmd.Run() - output := buf.String() if errors.Is(ctx.Err(), context.DeadlineExceeded) { - return -1, output, ctx.Err() + return -1, ctx.Err() } if err == nil { - return 0, output, nil + return 0, nil } ee := &exec.ExitError{} if errors.As(err, &ee) { - return ee.ExitCode(), output, nil + return ee.ExitCode(), nil } - return -1, output, err + return -1, err } func TestExecuteOnceDryRunExitsZero(t *testing.T) { // Use :0 for an ephemeral metrics port. - code, _, err := runExecuteSubprocess(t, []string{ + code, err := runExecuteSubprocess(t, []string{ "--source", "fake", "--provider", "inmemory", "--once", @@ -338,7 +337,7 @@ func TestExecuteOnceDryRunExitsZero(t *testing.T) { } func TestExecuteUnknownProviderExitsNonZero(t *testing.T) { - code, _, err := runExecuteSubprocess(t, []string{ + code, err := runExecuteSubprocess(t, []string{ "--source", "fake", "--provider", "unknown", "--metrics-address", ":0", @@ -348,7 +347,7 @@ func TestExecuteUnknownProviderExitsNonZero(t *testing.T) { } func TestExecuteValidationErrorNoSources(t *testing.T) { - code, _, err := runExecuteSubprocess(t, []string{ + code, err := runExecuteSubprocess(t, []string{ "--provider", "inmemory", "--metrics-address", ":0", }) @@ -357,7 +356,7 @@ func TestExecuteValidationErrorNoSources(t *testing.T) { } func TestExecuteFlagParsingErrorInvalidLogFormat(t *testing.T) { - code, _, err := runExecuteSubprocess(t, []string{ + code, err := runExecuteSubprocess(t, []string{ "--log-format", "invalid", // Provide minimal required flags to keep errors focused on parsing "--source", "fake", @@ -370,7 +369,7 @@ func TestExecuteFlagParsingErrorInvalidLogFormat(t *testing.T) { // Config validation failure triggers log.Fatalf. func TestExecuteConfigValidationErrorExitsNonZero(t *testing.T) { - code, _, err := runExecuteSubprocess(t, []string{ + code, err := runExecuteSubprocess(t, []string{ "--source", "fake", // Choose a provider with validation that fails without required flags "--provider", "azure", @@ -385,7 +384,7 @@ func TestExecuteConfigValidationErrorExitsNonZero(t *testing.T) { func TestExecuteBuildSourceErrorExitsNonZero(t *testing.T) { // Use a valid source name (ingress) and an invalid kubeconfig path to // force client creation failure inside buildSource. - code, _, err := runExecuteSubprocess(t, []string{ + code, err := runExecuteSubprocess(t, []string{ "--source", "ingress", "--kubeconfig", "this/path/does/not/exist", "--provider", "inmemory", @@ -398,7 +397,7 @@ func TestExecuteBuildSourceErrorExitsNonZero(t *testing.T) { // RunOnce error exits non-zero. func TestExecuteRunOnceErrorExitsNonZero(t *testing.T) { // Connector source dials a TCP server; use a closed port to fail. - code, _, err := runExecuteSubprocess(t, []string{ + code, err := runExecuteSubprocess(t, []string{ "--source", "connector", "--connector-source-server", "127.0.0.1:1", "--provider", "inmemory", @@ -411,7 +410,7 @@ func TestExecuteRunOnceErrorExitsNonZero(t *testing.T) { // Run loop error exits non-zero. func TestExecuteRunLoopErrorExitsNonZero(t *testing.T) { - code, _, err := runExecuteSubprocess(t, []string{ + code, err := runExecuteSubprocess(t, []string{ "--source", "connector", "--connector-source-server", "127.0.0.1:1", "--provider", "inmemory", @@ -423,7 +422,7 @@ func TestExecuteRunLoopErrorExitsNonZero(t *testing.T) { // buildController registry-creation failure triggers log.Fatal. func TestExecuteBuildControllerErrorExitsNonZero(t *testing.T) { - code, _, err := runExecuteSubprocess(t, []string{ + code, err := runExecuteSubprocess(t, []string{ "--source", "fake", "--provider", "inmemory", "--registry", "dynamodb", diff --git a/provider/alibabacloud/alibaba_cloud.go b/provider/alibabacloud/alibaba_cloud.go index 7560d4caad..6570f6c298 100644 --- a/provider/alibabacloud/alibaba_cloud.go +++ b/provider/alibabacloud/alibaba_cloud.go @@ -343,8 +343,8 @@ func (p *AlibabaCloudProvider) recordsForDNS() ([]*endpoint.Endpoint, error) { return endpoints, nil } -func getNextPageNumber(pageNumber, pageSize, totalCount int64) int64 { - if pageNumber*pageSize >= totalCount { +func getNextPageNumber(pageNumber, totalCount int64) int64 { + if pageNumber*defaultAlibabaCloudPageSize >= totalCount { return 0 } return pageNumber + 1 @@ -417,7 +417,7 @@ func (p *AlibabaCloudProvider) getDomainList() ([]string, error) { for _, tmpDomain := range resp.Domains.Domain { domainNames = append(domainNames, tmpDomain.DomainName) } - nextPage := getNextPageNumber(resp.PageNumber, defaultAlibabaCloudPageSize, resp.TotalCount) + nextPage := getNextPageNumber(resp.PageNumber, resp.TotalCount) if nextPage == 0 { break } else { @@ -454,7 +454,7 @@ func (p *AlibabaCloudProvider) getDomainRecords(domainName string) ([]alidns.Rec // TODO filter Locked record results = append(results, record) } - nextPage := getNextPageNumber(response.PageNumber, defaultAlibabaCloudPageSize, response.TotalCount) + nextPage := getNextPageNumber(response.PageNumber, response.TotalCount) if nextPage == 0 { break } else { @@ -544,13 +544,12 @@ func (p *AlibabaCloudProvider) createRecord(endpoint *endpoint.Endpoint, target return err } -func (p *AlibabaCloudProvider) createRecords(endpoints []*endpoint.Endpoint, hostedZoneDomains []string) error { +func (p *AlibabaCloudProvider) createRecords(endpoints []*endpoint.Endpoint, hostedZoneDomains []string) { for _, endpoint := range endpoints { for _, target := range endpoint.Targets { p.createRecord(endpoint, target, hostedZoneDomains) } } - return nil } func (p *AlibabaCloudProvider) deleteRecord(recordID string) error { @@ -591,7 +590,7 @@ func (p *AlibabaCloudProvider) updateRecord(record alidns.Record, endpoint *endp return err } -func (p *AlibabaCloudProvider) deleteRecords(recordMap map[string][]alidns.Record, endpoints []*endpoint.Endpoint) error { +func (p *AlibabaCloudProvider) deleteRecords(recordMap map[string][]alidns.Record, endpoints []*endpoint.Endpoint) { for _, endpoint := range endpoints { key := p.getRecordKeyByEndpoint(endpoint) records := recordMap[key] @@ -611,7 +610,6 @@ func (p *AlibabaCloudProvider) deleteRecords(recordMap map[string][]alidns.Recor log.Errorf("Failed to find %s record named '%s' to delete for Alibaba Cloud DNS", endpoint.RecordType, endpoint.DNSName) } } - return nil } func (p *AlibabaCloudProvider) equals(record alidns.Record, endpoint *endpoint.Endpoint) bool { @@ -628,7 +626,7 @@ func (p *AlibabaCloudProvider) equals(record alidns.Record, endpoint *endpoint.E return ttl1 == ttl2 } -func (p *AlibabaCloudProvider) updateRecords(recordMap map[string][]alidns.Record, endpoints []*endpoint.Endpoint, hostedZoneDomains []string) error { +func (p *AlibabaCloudProvider) updateRecords(recordMap map[string][]alidns.Record, endpoints []*endpoint.Endpoint, hostedZoneDomains []string) { for _, endpoint := range endpoints { key := p.getRecordKeyByEndpoint(endpoint) records := recordMap[key] @@ -669,7 +667,6 @@ func (p *AlibabaCloudProvider) updateRecords(recordMap map[string][]alidns.Recor } } } - return nil } func (p *AlibabaCloudProvider) splitDNSName(dnsName string, hostedZoneDomains []string) (string, string) { @@ -747,7 +744,7 @@ func (p *AlibabaCloudProvider) privateZones() ([]pvtz.Zone, error) { } zones = append(zones, zone) } - nextPage := getNextPageNumber(int64(response.PageNumber), defaultAlibabaCloudPageSize, int64(response.TotalItems)) + nextPage := getNextPageNumber(int64(response.PageNumber), int64(response.TotalItems)) if nextPage == 0 { break } else { @@ -799,7 +796,7 @@ func (p *AlibabaCloudProvider) getPrivateZones() (map[string]*alibabaPrivateZone // TODO filter Locked records = append(records, record) } - nextPage := getNextPageNumber(int64(response.PageNumber), defaultAlibabaCloudPageSize, int64(response.TotalItems)) + nextPage := getNextPageNumber(int64(response.PageNumber), int64(response.TotalItems)) if nextPage == 0 { break } else { @@ -906,13 +903,12 @@ func (p *AlibabaCloudProvider) createPrivateZoneRecord(zones map[string]*alibaba return err } -func (p *AlibabaCloudProvider) createPrivateZoneRecords(zones map[string]*alibabaPrivateZone, endpoints []*endpoint.Endpoint) error { +func (p *AlibabaCloudProvider) createPrivateZoneRecords(zones map[string]*alibabaPrivateZone, endpoints []*endpoint.Endpoint) { for _, endpoint := range endpoints { for _, target := range endpoint.Targets { _ = p.createPrivateZoneRecord(zones, endpoint, target) } } - return nil } func (p *AlibabaCloudProvider) deletePrivateZoneRecord(recordID int64) error { @@ -934,15 +930,14 @@ func (p *AlibabaCloudProvider) deletePrivateZoneRecord(recordID int64) error { return err } -func (p *AlibabaCloudProvider) deletePrivateZoneRecords(zones map[string]*alibabaPrivateZone, endpoints []*endpoint.Endpoint) error { +func (p *AlibabaCloudProvider) deletePrivateZoneRecords(zones map[string]*alibabaPrivateZone, endpoints []*endpoint.Endpoint) { zoneNames := keys(zones) for _, endpoint := range endpoints { rr, domain := p.splitDNSName(endpoint.DNSName, zoneNames) zone := zones[domain] if zone == nil { - 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) + log.Errorf("Failed to delete %s record named '%s' for Alibaba Cloud Private Zone: failed to find private zone '%s'", endpoint.RecordType, endpoint.DNSName, domain) continue } found := false @@ -962,7 +957,6 @@ func (p *AlibabaCloudProvider) deletePrivateZoneRecords(zones map[string]*alibab log.Errorf("Failed to find %s record named '%s' to delete for Alibaba Cloud Private Zone", endpoint.RecordType, endpoint.DNSName) } } - return nil } // ApplyChanges applies the given changes. @@ -1021,14 +1015,13 @@ func (p *AlibabaCloudProvider) equalsPrivateZone(record pvtz.Record, endpoint *e return ttl1 == ttl2 } -func (p *AlibabaCloudProvider) updatePrivateZoneRecords(zones map[string]*alibabaPrivateZone, endpoints []*endpoint.Endpoint) error { +func (p *AlibabaCloudProvider) updatePrivateZoneRecords(zones map[string]*alibabaPrivateZone, endpoints []*endpoint.Endpoint) { zoneNames := keys(zones) for _, endpoint := range endpoints { rr, domain := p.splitDNSName(endpoint.DNSName, zoneNames) zone := zones[domain] if zone == nil { - 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) + log.Errorf("Failed to update %s record named '%s' for Alibaba Cloud Private Zone: failed to find private zone '%s'", endpoint.RecordType, endpoint.DNSName, domain) continue } @@ -1070,7 +1063,6 @@ func (p *AlibabaCloudProvider) updatePrivateZoneRecords(zones map[string]*alibab } } } - return nil } func keys[T any](value map[string]T) []string { diff --git a/provider/aws/aws_fixtures_test.go b/provider/aws/aws_fixtures_test.go index 056d277e64..4bfbd71021 100644 --- a/provider/aws/aws_fixtures_test.go +++ b/provider/aws/aws_fixtures_test.go @@ -30,7 +30,7 @@ import ( func TestAWSRecordsV1(t *testing.T) { var zones HostedZones - unmarshalTestHelper("/fixtures/160-plus-zones.yaml", &zones, t) + unmarshalZonesFixture(&zones, t) stub := NewRoute53APIFixtureStub(&zones) provider := providerFilters(stub, @@ -49,7 +49,7 @@ func TestAWSRecordsV1(t *testing.T) { func TestAWSZonesFilterWithTags(t *testing.T) { var zones HostedZones - unmarshalTestHelper("/fixtures/160-plus-zones.yaml", &zones, t) + unmarshalZonesFixture(&zones, t) stub := NewRoute53APIFixtureStub(&zones) provider := providerFilters(stub, @@ -78,7 +78,7 @@ func TestAWSZonesFiltersWithTags(t *testing.T) { tName := fmt.Sprintf("filters=%s and zones=%d", strings.Join(tt.filters, ","), tt.want) t.Run(tName, func(t *testing.T) { var zones HostedZones - unmarshalTestHelper("/fixtures/160-plus-zones.yaml", &zones, t) + unmarshalZonesFixture(&zones, t) stub := NewRoute53APIFixtureStub(&zones) provider := providerFilters(stub, @@ -94,7 +94,7 @@ func TestAWSZonesFiltersWithTags(t *testing.T) { func TestAWSZonesSecondRequestHitsTheCache(t *testing.T) { var zones HostedZones - unmarshalTestHelper("/fixtures/160-plus-zones.yaml", &zones, t) + unmarshalZonesFixture(&zones, t) stub := NewRoute53APIFixtureStub(&zones) provider := providerFilters(stub) diff --git a/provider/aws/aws_utils_test.go b/provider/aws/aws_utils_test.go index c9ddd53800..6d57718eb8 100644 --- a/provider/aws/aws_utils_test.go +++ b/provider/aws/aws_utils_test.go @@ -142,10 +142,10 @@ func (r Route53APIFixtureStub) ListTagsForResources(_ context.Context, input *ro return &route53.ListTagsForResourcesOutput{ResourceTagSets: sets}, nil } -func unmarshalTestHelper(input string, obj any, t *testing.T) { +func unmarshalZonesFixture(obj any, t *testing.T) { t.Helper() path, _ := os.Getwd() - file, err := os.Open(path + input) + file, err := os.Open(path + "/fixtures/160-plus-zones.yaml") assert.NoError(t, err) defer file.Close() dec := yaml.NewDecoder(file) diff --git a/provider/azure/azure_privatedns_test.go b/provider/azure/azure_privatedns_test.go index 20bfd11d88..15f4a7e010 100644 --- a/provider/azure/azure_privatedns_test.go +++ b/provider/azure/azure_privatedns_test.go @@ -192,8 +192,8 @@ func privateOthersRecordSetPropertiesGetter(_ []string, ttl int64) *privatedns.R } } -func createPrivateMockRecordSet(name, recordType string, values ...string) *privatedns.RecordSet { - return createPrivateMockRecordSetMultiWithTTL(name, recordType, 0, values...) +func createPrivateMockRecordSet(recordType string, values ...string) *privatedns.RecordSet { + return createPrivateMockRecordSetMultiWithTTL("@", recordType, 0, values...) } func createPrivateMockRecordSetWithTTL(name, recordType, value string, ttl int64) *privatedns.RecordSet { @@ -225,10 +225,10 @@ func createPrivateMockRecordSetMultiWithTTL(name, recordType string, ttl int64, } // newMockedAzurePrivateDNSProvider creates an AzureProvider comprising the mocked clients for zones and recordsets -func newMockedAzurePrivateDNSProvider(domainFilter *endpoint.DomainFilter, zoneNameFilter *endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, dryRun bool, resourceGroup string, zones []*privatedns.PrivateZone, recordSets []*privatedns.RecordSet, maxRetriesCount int) (*AzurePrivateDNSProvider, error) { +func newMockedAzurePrivateDNSProvider(domainFilter *endpoint.DomainFilter, zoneNameFilter *endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, dryRun bool, resourceGroup string, zones []*privatedns.PrivateZone, recordSets []*privatedns.RecordSet, maxRetriesCount int) *AzurePrivateDNSProvider { zonesClient := newMockPrivateZonesClient(zones) recordSetsClient := newMockPrivateRecordSectsClient(recordSets) - return newAzurePrivateDNSProvider(domainFilter, zoneNameFilter, zoneIDFilter, dryRun, resourceGroup, &zonesClient, &recordSetsClient, maxRetriesCount), nil + return newAzurePrivateDNSProvider(domainFilter, zoneNameFilter, zoneIDFilter, dryRun, resourceGroup, &zonesClient, &recordSetsClient, maxRetriesCount) } func newAzurePrivateDNSProvider(domainFilter *endpoint.DomainFilter, zoneNameFilter *endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, dryRun bool, resourceGroup string, privateZonesClient PrivateZonesClient, privateRecordsClient PrivateRecordSetsClient, maxRetriesCount int) *AzurePrivateDNSProvider { @@ -246,25 +246,22 @@ func newAzurePrivateDNSProvider(domainFilter *endpoint.DomainFilter, zoneNameFil } func TestAzurePrivateDNSRecord(t *testing.T) { - provider, err := newMockedAzurePrivateDNSProvider(endpoint.NewDomainFilter([]string{"example.com"}), endpoint.NewDomainFilter([]string{}), provider.NewZoneIDFilter([]string{""}), true, "k8s", + provider := newMockedAzurePrivateDNSProvider(endpoint.NewDomainFilter([]string{"example.com"}), endpoint.NewDomainFilter([]string{}), provider.NewZoneIDFilter([]string{""}), true, "k8s", []*privatedns.PrivateZone{ createMockPrivateZone("example.com", "/privateDnsZones/example.com"), }, []*privatedns.RecordSet{ - createPrivateMockRecordSet("@", "NS", "ns1-03.azure-dns.com."), - createPrivateMockRecordSet("@", "SOA", "Email: azuredns-hostmaster.microsoft.com"), - createPrivateMockRecordSet("@", endpoint.RecordTypeA, "123.123.123.122"), - createPrivateMockRecordSet("@", endpoint.RecordTypeAAAA, "2001::123:123:123:122"), - createPrivateMockRecordSet("@", endpoint.RecordTypeTXT, "heritage=external-dns,external-dns/owner=default"), + createPrivateMockRecordSet("NS", "ns1-03.azure-dns.com."), + createPrivateMockRecordSet("SOA", "Email: azuredns-hostmaster.microsoft.com"), + createPrivateMockRecordSet(endpoint.RecordTypeA, "123.123.123.122"), + createPrivateMockRecordSet(endpoint.RecordTypeAAAA, "2001::123:123:123:122"), + createPrivateMockRecordSet(endpoint.RecordTypeTXT, "heritage=external-dns,external-dns/owner=default"), createPrivateMockRecordSetWithTTL("nginx", endpoint.RecordTypeA, "123.123.123.123", 3600), createPrivateMockRecordSetWithTTL("nginx", endpoint.RecordTypeAAAA, "2001::123:123:123:123", 3600), createPrivateMockRecordSetWithTTL("nginx", endpoint.RecordTypeTXT, "heritage=external-dns,external-dns/owner=default", recordTTL), createPrivateMockRecordSetWithTTL("hack", endpoint.RecordTypeCNAME, "hack.azurewebsites.net", 10), createPrivateMockRecordSetWithTTL("mail", endpoint.RecordTypeMX, "10 example.com", 4000), }, 3) - if err != nil { - t.Fatal(err) - } actual, err := provider.Records(context.Background()) if err != nil { @@ -285,25 +282,22 @@ func TestAzurePrivateDNSRecord(t *testing.T) { } func TestAzurePrivateDNSMultiRecord(t *testing.T) { - provider, err := newMockedAzurePrivateDNSProvider(endpoint.NewDomainFilter([]string{"example.com"}), endpoint.NewDomainFilter([]string{}), provider.NewZoneIDFilter([]string{""}), true, "k8s", + provider := newMockedAzurePrivateDNSProvider(endpoint.NewDomainFilter([]string{"example.com"}), endpoint.NewDomainFilter([]string{}), provider.NewZoneIDFilter([]string{""}), true, "k8s", []*privatedns.PrivateZone{ createMockPrivateZone("example.com", "/privateDnsZones/example.com"), }, []*privatedns.RecordSet{ - createPrivateMockRecordSet("@", "NS", "ns1-03.azure-dns.com."), - createPrivateMockRecordSet("@", "SOA", "Email: azuredns-hostmaster.microsoft.com"), - createPrivateMockRecordSet("@", endpoint.RecordTypeA, "123.123.123.122", "234.234.234.233"), - createPrivateMockRecordSet("@", endpoint.RecordTypeAAAA, "2001::123:123:123:122", "2001::234:234:234:233"), - createPrivateMockRecordSet("@", endpoint.RecordTypeTXT, "heritage=external-dns,external-dns/owner=default"), + createPrivateMockRecordSet("NS", "ns1-03.azure-dns.com."), + createPrivateMockRecordSet("SOA", "Email: azuredns-hostmaster.microsoft.com"), + createPrivateMockRecordSet(endpoint.RecordTypeA, "123.123.123.122", "234.234.234.233"), + createPrivateMockRecordSet(endpoint.RecordTypeAAAA, "2001::123:123:123:122", "2001::234:234:234:233"), + createPrivateMockRecordSet(endpoint.RecordTypeTXT, "heritage=external-dns,external-dns/owner=default"), createPrivateMockRecordSetMultiWithTTL("nginx", endpoint.RecordTypeA, 3600, "123.123.123.123", "234.234.234.234"), createPrivateMockRecordSetMultiWithTTL("nginx", endpoint.RecordTypeAAAA, 3600, "2001::123:123:123:123", "2001::234:234:234:234"), createPrivateMockRecordSetWithTTL("nginx", endpoint.RecordTypeTXT, "heritage=external-dns,external-dns/owner=default", recordTTL), createPrivateMockRecordSetWithTTL("hack", endpoint.RecordTypeCNAME, "hack.azurewebsites.net", 10), createPrivateMockRecordSetMultiWithTTL("mail", endpoint.RecordTypeMX, 4000, "10 example.com", "20 backup.example.com"), }, 3) - if err != nil { - t.Fatal(err) - } actual, err := provider.Records(context.Background()) if err != nil { @@ -438,25 +432,22 @@ func testAzurePrivateDNSApplyChangesInternal(t *testing.T, dryRun bool, client P } func TestAzurePrivateDNSNameFilter(t *testing.T) { - provider, err := newMockedAzurePrivateDNSProvider(endpoint.NewDomainFilter([]string{"nginx.example.com"}), endpoint.NewDomainFilter([]string{"example.com"}), provider.NewZoneIDFilter([]string{""}), true, "k8s", + provider := newMockedAzurePrivateDNSProvider(endpoint.NewDomainFilter([]string{"nginx.example.com"}), endpoint.NewDomainFilter([]string{"example.com"}), provider.NewZoneIDFilter([]string{""}), true, "k8s", []*privatedns.PrivateZone{ createMockPrivateZone("example.com", "/privateDnsZones/example.com"), }, []*privatedns.RecordSet{ - createPrivateMockRecordSet("@", "NS", "ns1-03.azure-dns.com."), - createPrivateMockRecordSet("@", "SOA", "Email: azuredns-hostmaster.microsoft.com"), - createPrivateMockRecordSet("@", endpoint.RecordTypeA, "123.123.123.122"), - createPrivateMockRecordSet("@", endpoint.RecordTypeTXT, "heritage=external-dns,external-dns/owner=default"), + createPrivateMockRecordSet("NS", "ns1-03.azure-dns.com."), + createPrivateMockRecordSet("SOA", "Email: azuredns-hostmaster.microsoft.com"), + createPrivateMockRecordSet(endpoint.RecordTypeA, "123.123.123.122"), + createPrivateMockRecordSet(endpoint.RecordTypeTXT, "heritage=external-dns,external-dns/owner=default"), createPrivateMockRecordSetWithTTL("test.nginx", endpoint.RecordTypeA, "123.123.123.123", 3600), createPrivateMockRecordSetWithTTL("nginx", endpoint.RecordTypeA, "123.123.123.123", 3600), createPrivateMockRecordSetWithTTL("nginx", endpoint.RecordTypeTXT, "heritage=external-dns,external-dns/owner=default", recordTTL), createPrivateMockRecordSetWithTTL("mail.nginx", endpoint.RecordTypeMX, "20 example.com", recordTTL), createPrivateMockRecordSetWithTTL("hack", endpoint.RecordTypeCNAME, "hack.azurewebsites.net", 10), }, 3) - if err != nil { - t.Fatal(err) - } ctx := context.Background() actual, err := provider.Records(ctx) diff --git a/provider/azure/azure_test.go b/provider/azure/azure_test.go index 2079301096..908c895332 100644 --- a/provider/azure/azure_test.go +++ b/provider/azure/azure_test.go @@ -238,10 +238,10 @@ func createMockRecordSetMultiWithTTL(name, recordType string, ttl int64, values } // newMockedAzureProvider creates an AzureProvider comprising the mocked clients for zones and recordsets -func newMockedAzureProvider(domainFilter *endpoint.DomainFilter, zoneNameFilter *endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, dryRun bool, resourceGroup string, userAssignedIdentityClientID string, activeDirectoryAuthorityHost string, zones []*dns.Zone, recordSets []*dns.RecordSet, maxRetriesCount int) (*AzureProvider, error) { +func newMockedAzureProvider(domainFilter *endpoint.DomainFilter, zoneNameFilter *endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, dryRun bool, resourceGroup string, userAssignedIdentityClientID string, activeDirectoryAuthorityHost string, zones []*dns.Zone, recordSets []*dns.RecordSet, maxRetriesCount int) *AzureProvider { zonesClient := newMockZonesClient(zones) recordSetsClient := newMockRecordSetsClient(recordSets) - return newAzureProvider(domainFilter, zoneNameFilter, zoneIDFilter, dryRun, resourceGroup, userAssignedIdentityClientID, activeDirectoryAuthorityHost, &zonesClient, &recordSetsClient, maxRetriesCount), nil + return newAzureProvider(domainFilter, zoneNameFilter, zoneIDFilter, dryRun, resourceGroup, userAssignedIdentityClientID, activeDirectoryAuthorityHost, &zonesClient, &recordSetsClient, maxRetriesCount) } func newAzureProvider(domainFilter *endpoint.DomainFilter, zoneNameFilter *endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, dryRun bool, resourceGroup string, userAssignedIdentityClientID string, activeDirectoryAuthorityHost string, zonesClient ZonesClient, recordsClient RecordSetsClient, maxRetriesCount int) *AzureProvider { @@ -265,7 +265,7 @@ func validateAzureEndpoints(t *testing.T, endpoints []*endpoint.Endpoint, expect } func TestAzureRecord(t *testing.T) { - provider, err := newMockedAzureProvider(endpoint.NewDomainFilter([]string{"example.com"}), endpoint.NewDomainFilter([]string{}), provider.NewZoneIDFilter([]string{""}), true, "k8s", "", "", + provider := newMockedAzureProvider(endpoint.NewDomainFilter([]string{"example.com"}), endpoint.NewDomainFilter([]string{}), provider.NewZoneIDFilter([]string{""}), true, "k8s", "", "", []*dns.Zone{ createMockZone("example.com", "/dnszones/example.com"), }, @@ -283,9 +283,6 @@ func TestAzureRecord(t *testing.T) { createMockRecordSetWithTTL("hack", endpoint.RecordTypeCNAME, "hack.azurewebsites.net", 10), createMockRecordSetMultiWithTTL("mail", endpoint.RecordTypeMX, 4000, "10 example.com"), }, 3) - if err != nil { - t.Fatal(err) - } ctx := context.Background() actual, err := provider.Records(ctx) @@ -310,7 +307,7 @@ func TestAzureRecord(t *testing.T) { } func TestAzureMultiRecord(t *testing.T) { - provider, err := newMockedAzureProvider(endpoint.NewDomainFilter([]string{"example.com"}), endpoint.NewDomainFilter([]string{}), provider.NewZoneIDFilter([]string{""}), true, "k8s", "", "", + provider := newMockedAzureProvider(endpoint.NewDomainFilter([]string{"example.com"}), endpoint.NewDomainFilter([]string{}), provider.NewZoneIDFilter([]string{""}), true, "k8s", "", "", []*dns.Zone{ createMockZone("example.com", "/dnszones/example.com"), }, @@ -328,9 +325,6 @@ func TestAzureMultiRecord(t *testing.T) { createMockRecordSetWithTTL("hack", endpoint.RecordTypeCNAME, "hack.azurewebsites.net", 10), createMockRecordSetMultiWithTTL("mail", endpoint.RecordTypeMX, 4000, "10 example.com", "20 backup.example.com"), }, 3) - if err != nil { - t.Fatal(err) - } ctx := context.Background() actual, err := provider.Records(ctx) @@ -483,7 +477,7 @@ func testAzureApplyChangesInternal(t *testing.T, dryRun bool, client RecordSetsC } func TestAzureNameFilter(t *testing.T) { - provider, err := newMockedAzureProvider(endpoint.NewDomainFilter([]string{"nginx.example.com"}), endpoint.NewDomainFilter([]string{"example.com"}), provider.NewZoneIDFilter([]string{""}), true, "k8s", "", "", + provider := newMockedAzureProvider(endpoint.NewDomainFilter([]string{"nginx.example.com"}), endpoint.NewDomainFilter([]string{"example.com"}), provider.NewZoneIDFilter([]string{""}), true, "k8s", "", "", []*dns.Zone{ createMockZone("example.com", "/dnszones/example.com"), }, @@ -501,9 +495,6 @@ func TestAzureNameFilter(t *testing.T) { createMockRecordSetWithTTL("hack", endpoint.RecordTypeCNAME, "hack.azurewebsites.net", 10), createMockRecordSetWithTTL("hack", endpoint.RecordTypeNS, "ns1.example.com.", 3600), }, 3) - if err != nil { - t.Fatal(err) - } ctx := context.Background() actual, err := provider.Records(ctx) diff --git a/provider/civo/civo_test.go b/provider/civo/civo_test.go index 7e2a2fbd66..d812346371 100644 --- a/provider/civo/civo_test.go +++ b/provider/civo/civo_test.go @@ -1176,7 +1176,7 @@ func TestCivoChangesEmpty(t *testing.T) { // This function is an adapted copy of the testify package's ElementsMatch function with the // call to ObjectsAreEqual replaced with cmp.Equal which better handles struct's with pointers to // other structs. It also ignores ordering when comparing unlike cmp.Equal. -func elementsMatch(t *testing.T, listA, listB any, msgAndArgs ...any) bool { +func elementsMatch(t *testing.T, listA, listB any) bool { switch { case listA == nil && listB == nil: return true @@ -1190,11 +1190,11 @@ func elementsMatch(t *testing.T, listA, listB any, msgAndArgs ...any) bool { bKind := reflect.TypeOf(listB).Kind() if aKind != reflect.Array && aKind != reflect.Slice { - return assert.Fail(t, fmt.Sprintf("%q has an unsupported type %s", listA, aKind), msgAndArgs...) + return assert.Fail(t, fmt.Sprintf("%q has an unsupported type %s", listA, aKind)) } if bKind != reflect.Array && bKind != reflect.Slice { - return assert.Fail(t, fmt.Sprintf("%q has an unsupported type %s", listB, bKind), msgAndArgs...) + return assert.Fail(t, fmt.Sprintf("%q has an unsupported type %s", listB, bKind)) } aValue := reflect.ValueOf(listA) @@ -1204,7 +1204,7 @@ func elementsMatch(t *testing.T, listA, listB any, msgAndArgs ...any) bool { bLen := bValue.Len() if aLen != bLen { - return assert.Fail(t, fmt.Sprintf("lengths don't match: %d != %d", aLen, bLen), msgAndArgs...) + return assert.Fail(t, fmt.Sprintf("lengths don't match: %d != %d", aLen, bLen)) } // Mark indexes in bValue that we already used @@ -1223,7 +1223,7 @@ func elementsMatch(t *testing.T, listA, listB any, msgAndArgs ...any) bool { } } if !found { - return assert.Fail(t, fmt.Sprintf("element %s appears more times in %s than in %s", element, aValue, bValue), msgAndArgs...) + return assert.Fail(t, fmt.Sprintf("element %s appears more times in %s than in %s", element, aValue, bValue)) } } diff --git a/provider/coredns/coredns.go b/provider/coredns/coredns.go index 10044dafe7..a5d1ece1a1 100644 --- a/provider/coredns/coredns.go +++ b/provider/coredns/coredns.go @@ -24,6 +24,7 @@ import ( "math/rand" "net" "os" + "slices" "strings" "time" @@ -288,15 +289,9 @@ func findEp(slice []*endpoint.Endpoint, dnsName string) (*endpoint.Endpoint, boo return nil, false } -// findLabelInTargets takes an ep.Targets string slice and looks for an element in it. If found it will -// return its string value, otherwise it will return empty string and a bool of false. -func findLabelInTargets(targets []string, label string) (string, bool) { - for _, target := range targets { - if target == label { - return target, true - } - } - return "", false +// findLabelInTargets takes an ep.Targets string slice and looks for an element in it. +func findLabelInTargets(targets []string, label string) bool { + return slices.Contains(targets, label) } // Records returns all DNS records found in CoreDNS etcd backend. Depending on the record fields @@ -444,7 +439,7 @@ func (p coreDNSProvider) createServicesForEndpoint(ctx context.Context, dnsName if shouldSkipLabel(label) { continue } - if _, ok := findLabelInTargets(ep.Targets, label); !ok { + if !findLabelInTargets(ep.Targets, label) { key := p.etcdKeyFor(labelPrefix + "." + dnsName) log.Infof("Delete key %s", key) if p.dryRun { @@ -460,8 +455,7 @@ func (p coreDNSProvider) createServicesForEndpoint(ctx context.Context, dnsName func shouldSkipLabel(label string) bool { skip := []string{"originalText", "prefix", "resource"} - _, ok := findLabelInTargets(skip, label) - return ok + return findLabelInTargets(skip, label) } // updateTXTRecords updates the TXT records in the provided services slice based on the given group of endpoints. diff --git a/provider/digitalocean/digital_ocean_test.go b/provider/digitalocean/digital_ocean_test.go index 24ed00eadd..4de5ac0480 100644 --- a/provider/digitalocean/digital_ocean_test.go +++ b/provider/digitalocean/digital_ocean_test.go @@ -194,7 +194,7 @@ func isEmpty(xs any) bool { // This function is an adapted copy of the testify package's ElementsMatch function with the // call to ObjectsAreEqual replaced with cmp.Equal which better handles struct's with pointers to // other structs. It also ignores ordering when comparing unlike cmp.Equal. -func elementsMatch(t *testing.T, listA, listB any, msgAndArgs ...any) bool { +func elementsMatch(t *testing.T, listA, listB any) bool { switch { case listA == nil && listB == nil: return true @@ -208,11 +208,11 @@ func elementsMatch(t *testing.T, listA, listB any, msgAndArgs ...any) bool { bKind := reflect.TypeOf(listB).Kind() if aKind != reflect.Array && aKind != reflect.Slice { - return assert.Fail(t, fmt.Sprintf("%q has an unsupported type %s", listA, aKind), msgAndArgs...) + return assert.Fail(t, fmt.Sprintf("%q has an unsupported type %s", listA, aKind)) } if bKind != reflect.Array && bKind != reflect.Slice { - return assert.Fail(t, fmt.Sprintf("%q has an unsupported type %s", listB, bKind), msgAndArgs...) + return assert.Fail(t, fmt.Sprintf("%q has an unsupported type %s", listB, bKind)) } aValue := reflect.ValueOf(listA) @@ -222,7 +222,7 @@ func elementsMatch(t *testing.T, listA, listB any, msgAndArgs ...any) bool { bLen := bValue.Len() if aLen != bLen { - return assert.Fail(t, fmt.Sprintf("lengths don't match: %d != %d", aLen, bLen), msgAndArgs...) + return assert.Fail(t, fmt.Sprintf("lengths don't match: %d != %d", aLen, bLen)) } // Mark indexes in bValue that we already used @@ -241,7 +241,7 @@ func elementsMatch(t *testing.T, listA, listB any, msgAndArgs ...any) bool { } } if !found { - return assert.Fail(t, fmt.Sprintf("element %s appears more times in %s than in %s", element, aValue, bValue), msgAndArgs...) + return assert.Fail(t, fmt.Sprintf("element %s appears more times in %s than in %s", element, aValue, bValue)) } } diff --git a/provider/google/google_test.go b/provider/google/google_test.go index 1ea5696e48..6802f6789c 100644 --- a/provider/google/google_test.go +++ b/provider/google/google_test.go @@ -208,7 +208,7 @@ func hasTrailingDot(target string) bool { } func TestGoogleZonesIDFilter(t *testing.T) { - provider := newGoogleProviderZoneOverlap(t, endpoint.NewDomainFilter([]string{"cluster.local."}), provider.NewZoneIDFilter([]string{"10002"}), provider.NewZoneTypeFilter(""), false, []*endpoint.Endpoint{}) + provider := newGoogleProviderZoneOverlap(t, endpoint.NewDomainFilter([]string{"cluster.local."}), provider.NewZoneIDFilter([]string{"10002"}), provider.NewZoneTypeFilter(""), []*endpoint.Endpoint{}) zones, err := provider.Zones(context.Background()) require.NoError(t, err) @@ -219,7 +219,7 @@ func TestGoogleZonesIDFilter(t *testing.T) { } func TestGoogleZonesNameFilter(t *testing.T) { - provider := newGoogleProviderZoneOverlap(t, endpoint.NewDomainFilter([]string{"cluster.local."}), provider.NewZoneIDFilter([]string{"internal-2"}), provider.NewZoneTypeFilter(""), false, []*endpoint.Endpoint{}) + provider := newGoogleProviderZoneOverlap(t, endpoint.NewDomainFilter([]string{"cluster.local."}), provider.NewZoneIDFilter([]string{"internal-2"}), provider.NewZoneTypeFilter(""), []*endpoint.Endpoint{}) zones, err := provider.Zones(context.Background()) require.NoError(t, err) @@ -230,7 +230,7 @@ func TestGoogleZonesNameFilter(t *testing.T) { } func TestGoogleZonesVisibilityFilterPublic(t *testing.T) { - provider := newGoogleProviderZoneOverlap(t, endpoint.NewDomainFilter([]string{"cluster.local."}), provider.NewZoneIDFilter([]string{"split-horizon-1"}), provider.NewZoneTypeFilter("public"), false, []*endpoint.Endpoint{}) + provider := newGoogleProviderZoneOverlap(t, endpoint.NewDomainFilter([]string{"cluster.local."}), provider.NewZoneIDFilter([]string{"split-horizon-1"}), provider.NewZoneTypeFilter("public"), []*endpoint.Endpoint{}) zones, err := provider.Zones(context.Background()) require.NoError(t, err) @@ -241,7 +241,7 @@ func TestGoogleZonesVisibilityFilterPublic(t *testing.T) { } func TestGoogleZonesVisibilityFilterPrivate(t *testing.T) { - provider := newGoogleProviderZoneOverlap(t, endpoint.NewDomainFilter([]string{"cluster.local."}), provider.NewZoneIDFilter([]string{"split-horizon-1"}), provider.NewZoneTypeFilter("public"), false, []*endpoint.Endpoint{}) + provider := newGoogleProviderZoneOverlap(t, endpoint.NewDomainFilter([]string{"cluster.local."}), provider.NewZoneIDFilter([]string{"split-horizon-1"}), provider.NewZoneTypeFilter("public"), []*endpoint.Endpoint{}) zones, err := provider.Zones(context.Background()) require.NoError(t, err) @@ -252,7 +252,7 @@ func TestGoogleZonesVisibilityFilterPrivate(t *testing.T) { } func TestGoogleZonesVisibilityFilterPrivatePeering(t *testing.T) { - provider := newGoogleProviderZoneOverlap(t, endpoint.NewDomainFilter([]string{"svc.local."}), provider.NewZoneIDFilter([]string{""}), provider.NewZoneTypeFilter("private"), false, []*endpoint.Endpoint{}) + provider := newGoogleProviderZoneOverlap(t, endpoint.NewDomainFilter([]string{"svc.local."}), provider.NewZoneIDFilter([]string{""}), provider.NewZoneTypeFilter("private"), []*endpoint.Endpoint{}) zones, err := provider.Zones(context.Background()) require.NoError(t, err) @@ -676,7 +676,7 @@ func validateChangeRecord(t *testing.T, record *dns.ResourceRecordSet, expected assert.Equal(t, expected.Type, record.Type) } -func newGoogleProviderZoneOverlap(t *testing.T, domainFilter *endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, zoneTypeFilter provider.ZoneTypeFilter, dryRun bool, _ []*endpoint.Endpoint) *GoogleProvider { +func newGoogleProviderZoneOverlap(t *testing.T, domainFilter *endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, zoneTypeFilter provider.ZoneTypeFilter, _ []*endpoint.Endpoint) *GoogleProvider { provider := &GoogleProvider{ project: "zalando-external-dns-test", dryRun: false, @@ -738,8 +738,6 @@ func newGoogleProviderZoneOverlap(t *testing.T, domainFilter *endpoint.DomainFil PeeringConfig: &dns.ManagedZonePeeringConfig{TargetNetwork: nil}, }) - provider.dryRun = dryRun - return provider } diff --git a/provider/pdns/pdns.go b/provider/pdns/pdns.go index 0c06b63aff..a033e130f4 100644 --- a/provider/pdns/pdns.go +++ b/provider/pdns/pdns.go @@ -268,7 +268,7 @@ func NewPDNSProvider(ctx context.Context, config PDNSConfig) (*PDNSProvider, err return provider, nil } -func (p *PDNSProvider) convertRRSetToEndpoints(rr pgo.RrSet) ([]*endpoint.Endpoint, error) { +func (p *PDNSProvider) convertRRSetToEndpoints(rr pgo.RrSet) []*endpoint.Endpoint { endpoints := make([]*endpoint.Endpoint, 0) targets := make([]string, 0) rrType_ := rr.Type_ @@ -283,7 +283,7 @@ func (p *PDNSProvider) convertRRSetToEndpoints(rr pgo.RrSet) ([]*endpoint.Endpoi rrType_ = endpoint.RecordTypeCNAME } endpoints = append(endpoints, endpoint.NewEndpointWithTTL(rr.Name, rrType_, endpoint.TTL(rr.Ttl), targets...)) - return endpoints, nil + return endpoints } // ConvertEndpointsToZones marshals endpoints into pdns compatible Zone structs @@ -439,10 +439,7 @@ func (p *PDNSProvider) Records(_ context.Context) ([]*endpoint.Endpoint, error) } for _, rr := range z.Rrsets { - e, err := p.convertRRSetToEndpoints(rr) - if err != nil { - return nil, err - } + e := p.convertRRSetToEndpoints(rr) endpoints = append(endpoints, e...) } } diff --git a/provider/pdns/pdns_test.go b/provider/pdns/pdns_test.go index 4bdae51035..c099c212aa 100644 --- a/provider/pdns/pdns_test.go +++ b/provider/pdns/pdns_test.go @@ -877,16 +877,14 @@ func (suite *NewPDNSProviderTestSuite) TestPDNSRRSetToEndpoints() { /* given an RRSet with three records, we test: - We correctly create corresponding endpoints */ - eps, err := p.convertRRSetToEndpoints(RRSetMultipleRecords) - suite.Require().NoError(err) + eps := p.convertRRSetToEndpoints(RRSetMultipleRecords) suite.Equal(endpointsMultipleRecords, eps) /* Given an RRSet with two records, one of which is disabled, we test: - We can correctly convert the RRSet into a list of valid endpoints - We correctly discard/ignore the disabled record. */ - eps, err = p.convertRRSetToEndpoints(RRSetDisabledRecord) - suite.Require().NoError(err) + eps = p.convertRRSetToEndpoints(RRSetDisabledRecord) suite.Equal(endpointsDisabledRecord, eps) } diff --git a/registry/awssd/registry_test.go b/registry/awssd/registry_test.go index dedfd6a4a2..209d046fe2 100644 --- a/registry/awssd/registry_test.go +++ b/registry/awssd/registry_test.go @@ -56,7 +56,7 @@ func TestAWSSDRegistry_NewAWSSDRegistry(t *testing.T) { _, err := NewAWSSDRegistry(p, "") require.Error(t, err) - _, err = NewAWSSDRegistry(p, "owner") + _, err = NewAWSSDRegistry(p, "test-owner") require.NoError(t, err) } @@ -102,7 +102,7 @@ func TestAWSSDRegistryTest_Records(t *testing.T) { }, } - r, _ := NewAWSSDRegistry(p, "owner") + r, _ := NewAWSSDRegistry(p, "records-owner") records, _ := r.Records(context.Background()) assert.True(t, testutils.SameEndpoints(records, expectedRecords)) @@ -111,16 +111,16 @@ func TestAWSSDRegistryTest_Records(t *testing.T) { func TestAWSSDRegistry_Records_ApplyChanges(t *testing.T) { changes := &plan.Changes{ Create: []*endpoint.Endpoint{ - newEndpointWithOwner("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", endpoint.RecordTypeCNAME, "owner"), + newEndpointWithOwner("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", endpoint.RecordTypeCNAME), }, Delete: []*endpoint.Endpoint{ - newEndpointWithOwner("foobar.test-zone.example.org", "1.2.3.4", endpoint.RecordTypeA, "owner"), + newEndpointWithOwner("foobar.test-zone.example.org", "1.2.3.4", endpoint.RecordTypeA), }, UpdateNew: []*endpoint.Endpoint{ - newEndpointWithOwner("tar.test-zone.example.org", "new-tar.loadbalancer.com", endpoint.RecordTypeCNAME, "owner"), + newEndpointWithOwner("tar.test-zone.example.org", "new-tar.loadbalancer.com", endpoint.RecordTypeCNAME), }, UpdateOld: []*endpoint.Endpoint{ - newEndpointWithOwner("tar.test-zone.example.org", "tar.loadbalancer.com", endpoint.RecordTypeCNAME, "owner"), + newEndpointWithOwner("tar.test-zone.example.org", "tar.loadbalancer.com", endpoint.RecordTypeCNAME), }, } expected := &plan.Changes{ @@ -152,7 +152,7 @@ func TestAWSSDRegistry_Records_ApplyChanges(t *testing.T) { } assert.True(t, testutils.SamePlanChanges(mGot, mExpected)) }) - r, err := NewAWSSDRegistry(p, "owner") + r, err := NewAWSSDRegistry(p, "apply-changes-owner") require.NoError(t, err) err = r.ApplyChanges(context.Background(), changes) @@ -166,8 +166,8 @@ func newEndpointWithOwnerAndDescription(dnsName, target, recordType, ownerID str return e } -func newEndpointWithOwner(dnsName, target, recordType, ownerID string) *endpoint.Endpoint { +func newEndpointWithOwner(dnsName, target, recordType string) *endpoint.Endpoint { e := endpoint.NewEndpoint(dnsName, recordType, target) - e.Labels[endpoint.OwnerLabelKey] = ownerID + e.Labels[endpoint.OwnerLabelKey] = "owner" return e } diff --git a/registry/txt/encryption_test.go b/registry/txt/encryption_test.go index 72305ba54b..c2751cc096 100644 --- a/registry/txt/encryption_test.go +++ b/registry/txt/encryption_test.go @@ -149,9 +149,9 @@ func TestApplyRecordsWithEncryption(t *testing.T) { _ = r.ApplyChanges(ctx, &plan.Changes{ Create: []*endpoint.Endpoint{ newEndpointWithOwner("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", endpoint.RecordTypeCNAME, "owner"), - newEndpointWithOwnerAndOwnedRecord("new-record-2.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", endpoint.RecordTypeTXT, "", "new-record-1.test-zone.example.org"), + newTXTEndpointWithOwnedRecord("new-record-2.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", "new-record-1.test-zone.example.org"), newEndpointWithOwner("example.org", "new-loadbalancer-3.org", endpoint.RecordTypeCNAME, "owner"), - newEndpointWithOwnerAndOwnedRecord("main.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", endpoint.RecordTypeTXT, "", "example"), + newTXTEndpointWithOwnedRecord("main.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", "example"), newEndpointWithOwner("tar.org", "tar.loadbalancer.com", endpoint.RecordTypeCNAME, "owner-2"), newEndpointWithOwner("thing3.org", "1.2.3.4", endpoint.RecordTypeA, "owner"), newEndpointWithOwner("thing4.org", "2001:DB8::2", endpoint.RecordTypeAAAA, "owner"), @@ -206,9 +206,9 @@ func TestApplyRecordsWithEncryptionKeyChanged(t *testing.T) { _ = r.ApplyChanges(ctx, &plan.Changes{ Create: []*endpoint.Endpoint{ newEndpointWithOwner("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", endpoint.RecordTypeCNAME, "owner"), - newEndpointWithOwnerAndOwnedRecord("new-record-2.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", endpoint.RecordTypeTXT, "", "new-record-1.test-zone.example.org"), + newTXTEndpointWithOwnedRecord("new-record-2.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", "new-record-1.test-zone.example.org"), newEndpointWithOwner("example.org", "new-loadbalancer-3.org", endpoint.RecordTypeCNAME, "owner"), - newEndpointWithOwnerAndOwnedRecord("main.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", endpoint.RecordTypeTXT, "", "example"), + newTXTEndpointWithOwnedRecord("main.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", "example"), newEndpointWithOwner("tar.org", "tar.loadbalancer.com", endpoint.RecordTypeCNAME, "owner-2"), newEndpointWithOwner("thing3.org", "1.2.3.4", endpoint.RecordTypeA, "owner"), newEndpointWithOwner("thing4.org", "2001:DB8::2", endpoint.RecordTypeAAAA, "owner"), diff --git a/registry/txt/registry_test.go b/registry/txt/registry_test.go index da17c30cdb..ae8e9948ed 100644 --- a/registry/txt/registry_test.go +++ b/registry/txt/registry_test.go @@ -50,13 +50,13 @@ func TestTXTRegistry(t *testing.T) { func testTXTRegistryNew(t *testing.T) { p := inmemory.NewInMemoryProvider() - _, err := NewTXTRegistry(p, "txt", "", "", time.Hour, "", []string{}, []string{}, false, nil, "") + _, err := NewTXTRegistry(p, "txt.", "", "", time.Hour, "", []string{}, []string{}, false, nil, "") require.Error(t, err) _, err = NewTXTRegistry(p, "", "txt", "", time.Hour, "", []string{}, []string{}, false, nil, "") require.Error(t, err) - r, err := NewTXTRegistry(p, "txt", "", "owner", time.Hour, "", []string{}, []string{}, false, nil, "") + r, err := NewTXTRegistry(p, "txt.", "", "owner", time.Hour, "", []string{}, []string{}, false, nil, "") require.NoError(t, err) assert.Equal(t, p, r.provider) @@ -706,17 +706,17 @@ func testTXTRegistryApplyChangesWithPrefix(t *testing.T) { changes := &plan.Changes{ Create: []*endpoint.Endpoint{ - newEndpointWithOwnerResource("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", endpoint.RecordTypeCNAME, "", "ingress/default/my-ingress"), - newEndpointWithOwnerResource("multiple.test-zone.example.org", "lb3.loadbalancer.com", endpoint.RecordTypeCNAME, "", "ingress/default/my-ingress").WithSetIdentifier("test-set-3"), - newEndpointWithOwnerResource("example", "new-loadbalancer-1.lb.com", endpoint.RecordTypeCNAME, "", "ingress/default/my-ingress"), + newEndpointWithOwnerResource("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", "owner", "ingress/default/my-ingress"), + newEndpointWithOwnerResource("multiple.test-zone.example.org", "lb3.loadbalancer.com", "owner", "ingress/default/my-ingress").WithSetIdentifier("test-set-3"), + newEndpointWithOwnerResource("example", "new-loadbalancer-1.lb.com", "owner", "ingress/default/my-ingress"), }, Delete: []*endpoint.Endpoint{ newEndpointWithOwner("foobar.test-zone.example.org", "foobar.loadbalancer.com", endpoint.RecordTypeCNAME, "owner"), newEndpointWithOwner("multiple.test-zone.example.org", "lb1.loadbalancer.com", endpoint.RecordTypeCNAME, "owner").WithSetIdentifier("test-set-1"), }, UpdateNew: []*endpoint.Endpoint{ - newEndpointWithOwnerResource("tar.test-zone.example.org", "new-tar.loadbalancer.com", endpoint.RecordTypeCNAME, "owner", "ingress/default/my-ingress-2"), - newEndpointWithOwnerResource("multiple.test-zone.example.org", "new.loadbalancer.com", endpoint.RecordTypeCNAME, "owner", "ingress/default/my-ingress-2").WithSetIdentifier("test-set-2"), + newEndpointWithOwnerResource("tar.test-zone.example.org", "new-tar.loadbalancer.com", "owner", "ingress/default/my-ingress-2"), + newEndpointWithOwnerResource("multiple.test-zone.example.org", "new.loadbalancer.com", "owner", "ingress/default/my-ingress-2").WithSetIdentifier("test-set-2"), }, UpdateOld: []*endpoint.Endpoint{ newEndpointWithOwner("tar.test-zone.example.org", "tar.loadbalancer.com", endpoint.RecordTypeCNAME, "owner"), @@ -725,31 +725,31 @@ func testTXTRegistryApplyChangesWithPrefix(t *testing.T) { } expected := &plan.Changes{ Create: []*endpoint.Endpoint{ - newEndpointWithOwnerResource("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", endpoint.RecordTypeCNAME, "owner", "ingress/default/my-ingress"), + newEndpointWithOwnerResource("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", "owner", "ingress/default/my-ingress"), - newEndpointWithOwnerAndOwnedRecord("txt.cname-new-record-1.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner,external-dns/resource=ingress/default/my-ingress\"", endpoint.RecordTypeTXT, "", "new-record-1.test-zone.example.org"), - newEndpointWithOwnerResource("multiple.test-zone.example.org", "lb3.loadbalancer.com", endpoint.RecordTypeCNAME, "owner", "ingress/default/my-ingress").WithSetIdentifier("test-set-3"), - newEndpointWithOwnerAndOwnedRecord("txt.cname-multiple.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner,external-dns/resource=ingress/default/my-ingress\"", endpoint.RecordTypeTXT, "", "multiple.test-zone.example.org").WithSetIdentifier("test-set-3"), - newEndpointWithOwnerResource("example", "new-loadbalancer-1.lb.com", endpoint.RecordTypeCNAME, "owner", "ingress/default/my-ingress"), - newEndpointWithOwnerAndOwnedRecord("txt.cname-example", "\"heritage=external-dns,external-dns/owner=owner,external-dns/resource=ingress/default/my-ingress\"", endpoint.RecordTypeTXT, "", "example"), + newTXTEndpointWithOwnedRecord("txt.cname-new-record-1.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner,external-dns/resource=ingress/default/my-ingress\"", "new-record-1.test-zone.example.org"), + newEndpointWithOwnerResource("multiple.test-zone.example.org", "lb3.loadbalancer.com", "owner", "ingress/default/my-ingress").WithSetIdentifier("test-set-3"), + newTXTEndpointWithOwnedRecord("txt.cname-multiple.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner,external-dns/resource=ingress/default/my-ingress\"", "multiple.test-zone.example.org").WithSetIdentifier("test-set-3"), + newEndpointWithOwnerResource("example", "new-loadbalancer-1.lb.com", "owner", "ingress/default/my-ingress"), + newTXTEndpointWithOwnedRecord("txt.cname-example", "\"heritage=external-dns,external-dns/owner=owner,external-dns/resource=ingress/default/my-ingress\"", "example"), }, Delete: []*endpoint.Endpoint{ newEndpointWithOwner("foobar.test-zone.example.org", "foobar.loadbalancer.com", endpoint.RecordTypeCNAME, "owner"), - newEndpointWithOwnerAndOwnedRecord("txt.cname-foobar.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", endpoint.RecordTypeTXT, "", "foobar.test-zone.example.org"), + newTXTEndpointWithOwnedRecord("txt.cname-foobar.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", "foobar.test-zone.example.org"), newEndpointWithOwner("multiple.test-zone.example.org", "lb1.loadbalancer.com", endpoint.RecordTypeCNAME, "owner").WithSetIdentifier("test-set-1"), - newEndpointWithOwnerAndOwnedRecord("txt.cname-multiple.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", endpoint.RecordTypeTXT, "", "multiple.test-zone.example.org").WithSetIdentifier("test-set-1"), + newTXTEndpointWithOwnedRecord("txt.cname-multiple.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", "multiple.test-zone.example.org").WithSetIdentifier("test-set-1"), }, UpdateNew: []*endpoint.Endpoint{ - newEndpointWithOwnerResource("tar.test-zone.example.org", "new-tar.loadbalancer.com", endpoint.RecordTypeCNAME, "owner", "ingress/default/my-ingress-2"), - newEndpointWithOwnerAndOwnedRecord("txt.cname-tar.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner,external-dns/resource=ingress/default/my-ingress-2\"", endpoint.RecordTypeTXT, "", "tar.test-zone.example.org"), - newEndpointWithOwnerResource("multiple.test-zone.example.org", "new.loadbalancer.com", endpoint.RecordTypeCNAME, "owner", "ingress/default/my-ingress-2").WithSetIdentifier("test-set-2"), - newEndpointWithOwnerAndOwnedRecord("txt.cname-multiple.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner,external-dns/resource=ingress/default/my-ingress-2\"", endpoint.RecordTypeTXT, "", "multiple.test-zone.example.org").WithSetIdentifier("test-set-2"), + newEndpointWithOwnerResource("tar.test-zone.example.org", "new-tar.loadbalancer.com", "owner", "ingress/default/my-ingress-2"), + newTXTEndpointWithOwnedRecord("txt.cname-tar.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner,external-dns/resource=ingress/default/my-ingress-2\"", "tar.test-zone.example.org"), + newEndpointWithOwnerResource("multiple.test-zone.example.org", "new.loadbalancer.com", "owner", "ingress/default/my-ingress-2").WithSetIdentifier("test-set-2"), + newTXTEndpointWithOwnedRecord("txt.cname-multiple.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner,external-dns/resource=ingress/default/my-ingress-2\"", "multiple.test-zone.example.org").WithSetIdentifier("test-set-2"), }, UpdateOld: []*endpoint.Endpoint{ newEndpointWithOwner("tar.test-zone.example.org", "tar.loadbalancer.com", endpoint.RecordTypeCNAME, "owner"), - newEndpointWithOwnerAndOwnedRecord("txt.cname-tar.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", endpoint.RecordTypeTXT, "", "tar.test-zone.example.org"), + newTXTEndpointWithOwnedRecord("txt.cname-tar.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", "tar.test-zone.example.org"), newEndpointWithOwner("multiple.test-zone.example.org", "lb2.loadbalancer.com", endpoint.RecordTypeCNAME, "owner").WithSetIdentifier("test-set-2"), - newEndpointWithOwnerAndOwnedRecord("txt.cname-multiple.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", endpoint.RecordTypeTXT, "", "multiple.test-zone.example.org").WithSetIdentifier("test-set-2"), + newTXTEndpointWithOwnedRecord("txt.cname-multiple.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", "multiple.test-zone.example.org").WithSetIdentifier("test-set-2"), }, } p.OnApplyChanges = func(ctx context.Context, got *plan.Changes) { @@ -783,10 +783,10 @@ func testTXTRegistryApplyChangesWithTemplatedPrefix(t *testing.T) { _ = p.ApplyChanges(ctx, &plan.Changes{ Create: []*endpoint.Endpoint{}, }) - r, _ := NewTXTRegistry(p, "prefix%{record_type}.", "", "owner", time.Hour, "", []string{}, []string{}, false, nil, "") + r, _ := NewTXTRegistry(p, "prefix%{record_type}.", "", "owner-1", time.Hour, "", []string{}, []string{}, false, nil, "") changes := &plan.Changes{ Create: []*endpoint.Endpoint{ - newEndpointWithOwnerResource("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", endpoint.RecordTypeCNAME, "", "ingress/default/my-ingress"), + newEndpointWithOwnerResource("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", "owner-1", "ingress/default/my-ingress"), }, Delete: []*endpoint.Endpoint{}, UpdateOld: []*endpoint.Endpoint{}, @@ -794,8 +794,8 @@ func testTXTRegistryApplyChangesWithTemplatedPrefix(t *testing.T) { } expected := &plan.Changes{ Create: []*endpoint.Endpoint{ - newEndpointWithOwnerResource("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", endpoint.RecordTypeCNAME, "owner", "ingress/default/my-ingress"), - newEndpointWithOwnerAndOwnedRecord("prefixcname.new-record-1.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner,external-dns/resource=ingress/default/my-ingress\"", endpoint.RecordTypeTXT, "", "new-record-1.test-zone.example.org"), + newEndpointWithOwnerResource("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", "owner-1", "ingress/default/my-ingress"), + newTXTEndpointWithOwnedRecord("prefixcname.new-record-1.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner-1,external-dns/resource=ingress/default/my-ingress\"", "new-record-1.test-zone.example.org"), }, } p.OnApplyChanges = func(ctx context.Context, got *plan.Changes) { @@ -826,10 +826,10 @@ func testTXTRegistryApplyChangesWithTemplatedSuffix(t *testing.T) { p.OnApplyChanges = func(ctx context.Context, _ *plan.Changes) { assert.Equal(t, ctxEndpoints, ctx.Value(provider.RecordsContextKey)) } - r, _ := NewTXTRegistry(p, "", "-%{record_type}suffix", "owner", time.Hour, "", []string{}, []string{}, false, nil, "") + r, _ := NewTXTRegistry(p, "", "-%{record_type}suffix", "owner-2", time.Hour, "", []string{}, []string{}, false, nil, "") changes := &plan.Changes{ Create: []*endpoint.Endpoint{ - newEndpointWithOwnerResource("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", endpoint.RecordTypeCNAME, "", "ingress/default/my-ingress"), + newEndpointWithOwnerResource("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", "owner-2", "ingress/default/my-ingress"), }, Delete: []*endpoint.Endpoint{}, UpdateOld: []*endpoint.Endpoint{}, @@ -837,8 +837,8 @@ func testTXTRegistryApplyChangesWithTemplatedSuffix(t *testing.T) { } expected := &plan.Changes{ Create: []*endpoint.Endpoint{ - newEndpointWithOwnerResource("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", endpoint.RecordTypeCNAME, "owner", "ingress/default/my-ingress"), - newEndpointWithOwnerAndOwnedRecord("new-record-1-cnamesuffix.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner,external-dns/resource=ingress/default/my-ingress\"", endpoint.RecordTypeTXT, "", "new-record-1.test-zone.example.org"), + newEndpointWithOwnerResource("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", "owner-2", "ingress/default/my-ingress"), + newTXTEndpointWithOwnedRecord("new-record-1-cnamesuffix.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner-2,external-dns/resource=ingress/default/my-ingress\"", "new-record-1.test-zone.example.org"), }, } p.OnApplyChanges = func(ctx context.Context, got *plan.Changes) { @@ -895,18 +895,18 @@ func testTXTRegistryApplyChangesWithSuffix(t *testing.T) { changes := &plan.Changes{ Create: []*endpoint.Endpoint{ - newEndpointWithOwnerResource("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", endpoint.RecordTypeCNAME, "", "ingress/default/my-ingress"), - newEndpointWithOwnerResource("multiple.test-zone.example.org", "lb3.loadbalancer.com", endpoint.RecordTypeCNAME, "", "ingress/default/my-ingress").WithSetIdentifier("test-set-3"), - newEndpointWithOwnerResource("example", "new-loadbalancer-1.lb.com", endpoint.RecordTypeCNAME, "", "ingress/default/my-ingress"), - newEndpointWithOwnerResource("*.wildcard.test-zone.example.org", "new-loadbalancer-1.lb.com", endpoint.RecordTypeCNAME, "", "ingress/default/my-ingress"), + newEndpointWithOwnerResource("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", "owner", "ingress/default/my-ingress"), + newEndpointWithOwnerResource("multiple.test-zone.example.org", "lb3.loadbalancer.com", "owner", "ingress/default/my-ingress").WithSetIdentifier("test-set-3"), + newEndpointWithOwnerResource("example", "new-loadbalancer-1.lb.com", "owner", "ingress/default/my-ingress"), + newEndpointWithOwnerResource("*.wildcard.test-zone.example.org", "new-loadbalancer-1.lb.com", "owner", "ingress/default/my-ingress"), }, Delete: []*endpoint.Endpoint{ newEndpointWithOwner("foobar.test-zone.example.org", "foobar.loadbalancer.com", endpoint.RecordTypeCNAME, "owner"), newEndpointWithOwner("multiple.test-zone.example.org", "lb1.loadbalancer.com", endpoint.RecordTypeCNAME, "owner").WithSetIdentifier("test-set-1"), }, UpdateNew: []*endpoint.Endpoint{ - newEndpointWithOwnerResource("tar.test-zone.example.org", "new-tar.loadbalancer.com", endpoint.RecordTypeCNAME, "owner", "ingress/default/my-ingress-2"), - newEndpointWithOwnerResource("multiple.test-zone.example.org", "new.loadbalancer.com", endpoint.RecordTypeCNAME, "owner", "ingress/default/my-ingress-2").WithSetIdentifier("test-set-2"), + newEndpointWithOwnerResource("tar.test-zone.example.org", "new-tar.loadbalancer.com", "owner", "ingress/default/my-ingress-2"), + newEndpointWithOwnerResource("multiple.test-zone.example.org", "new.loadbalancer.com", "owner", "ingress/default/my-ingress-2").WithSetIdentifier("test-set-2"), }, UpdateOld: []*endpoint.Endpoint{ newEndpointWithOwner("tar.test-zone.example.org", "tar.loadbalancer.com", endpoint.RecordTypeCNAME, "owner"), @@ -915,32 +915,32 @@ func testTXTRegistryApplyChangesWithSuffix(t *testing.T) { } expected := &plan.Changes{ Create: []*endpoint.Endpoint{ - newEndpointWithOwnerResource("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", endpoint.RecordTypeCNAME, "owner", "ingress/default/my-ingress"), - newEndpointWithOwnerAndOwnedRecord("cname-new-record-1-txt.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner,external-dns/resource=ingress/default/my-ingress\"", endpoint.RecordTypeTXT, "", "new-record-1.test-zone.example.org"), - newEndpointWithOwnerResource("multiple.test-zone.example.org", "lb3.loadbalancer.com", endpoint.RecordTypeCNAME, "owner", "ingress/default/my-ingress").WithSetIdentifier("test-set-3"), - newEndpointWithOwnerAndOwnedRecord("cname-multiple-txt.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner,external-dns/resource=ingress/default/my-ingress\"", endpoint.RecordTypeTXT, "", "multiple.test-zone.example.org").WithSetIdentifier("test-set-3"), - newEndpointWithOwnerResource("example", "new-loadbalancer-1.lb.com", endpoint.RecordTypeCNAME, "owner", "ingress/default/my-ingress"), - newEndpointWithOwnerAndOwnedRecord("cname-example-txt", "\"heritage=external-dns,external-dns/owner=owner,external-dns/resource=ingress/default/my-ingress\"", endpoint.RecordTypeTXT, "", "example"), - newEndpointWithOwnerResource("*.wildcard.test-zone.example.org", "new-loadbalancer-1.lb.com", endpoint.RecordTypeCNAME, "owner", "ingress/default/my-ingress"), - newEndpointWithOwnerAndOwnedRecord("cname-wildcard-txt.wildcard.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner,external-dns/resource=ingress/default/my-ingress\"", endpoint.RecordTypeTXT, "", "*.wildcard.test-zone.example.org"), + newEndpointWithOwnerResource("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", "owner", "ingress/default/my-ingress"), + newTXTEndpointWithOwnedRecord("cname-new-record-1-txt.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner,external-dns/resource=ingress/default/my-ingress\"", "new-record-1.test-zone.example.org"), + newEndpointWithOwnerResource("multiple.test-zone.example.org", "lb3.loadbalancer.com", "owner", "ingress/default/my-ingress").WithSetIdentifier("test-set-3"), + newTXTEndpointWithOwnedRecord("cname-multiple-txt.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner,external-dns/resource=ingress/default/my-ingress\"", "multiple.test-zone.example.org").WithSetIdentifier("test-set-3"), + newEndpointWithOwnerResource("example", "new-loadbalancer-1.lb.com", "owner", "ingress/default/my-ingress"), + newTXTEndpointWithOwnedRecord("cname-example-txt", "\"heritage=external-dns,external-dns/owner=owner,external-dns/resource=ingress/default/my-ingress\"", "example"), + newEndpointWithOwnerResource("*.wildcard.test-zone.example.org", "new-loadbalancer-1.lb.com", "owner", "ingress/default/my-ingress"), + newTXTEndpointWithOwnedRecord("cname-wildcard-txt.wildcard.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner,external-dns/resource=ingress/default/my-ingress\"", "*.wildcard.test-zone.example.org"), }, Delete: []*endpoint.Endpoint{ newEndpointWithOwner("foobar.test-zone.example.org", "foobar.loadbalancer.com", endpoint.RecordTypeCNAME, "owner"), - newEndpointWithOwnerAndOwnedRecord("cname-foobar-txt.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", endpoint.RecordTypeTXT, "", "foobar.test-zone.example.org"), + newTXTEndpointWithOwnedRecord("cname-foobar-txt.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", "foobar.test-zone.example.org"), newEndpointWithOwner("multiple.test-zone.example.org", "lb1.loadbalancer.com", endpoint.RecordTypeCNAME, "owner").WithSetIdentifier("test-set-1"), - newEndpointWithOwnerAndOwnedRecord("cname-multiple-txt.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", endpoint.RecordTypeTXT, "", "multiple.test-zone.example.org").WithSetIdentifier("test-set-1"), + newTXTEndpointWithOwnedRecord("cname-multiple-txt.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", "multiple.test-zone.example.org").WithSetIdentifier("test-set-1"), }, UpdateNew: []*endpoint.Endpoint{ - newEndpointWithOwnerResource("tar.test-zone.example.org", "new-tar.loadbalancer.com", endpoint.RecordTypeCNAME, "owner", "ingress/default/my-ingress-2"), - newEndpointWithOwnerAndOwnedRecord("cname-tar-txt.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner,external-dns/resource=ingress/default/my-ingress-2\"", endpoint.RecordTypeTXT, "", "tar.test-zone.example.org"), - newEndpointWithOwnerResource("multiple.test-zone.example.org", "new.loadbalancer.com", endpoint.RecordTypeCNAME, "owner", "ingress/default/my-ingress-2").WithSetIdentifier("test-set-2"), - newEndpointWithOwnerAndOwnedRecord("cname-multiple-txt.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner,external-dns/resource=ingress/default/my-ingress-2\"", endpoint.RecordTypeTXT, "", "multiple.test-zone.example.org").WithSetIdentifier("test-set-2"), + newEndpointWithOwnerResource("tar.test-zone.example.org", "new-tar.loadbalancer.com", "owner", "ingress/default/my-ingress-2"), + newTXTEndpointWithOwnedRecord("cname-tar-txt.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner,external-dns/resource=ingress/default/my-ingress-2\"", "tar.test-zone.example.org"), + newEndpointWithOwnerResource("multiple.test-zone.example.org", "new.loadbalancer.com", "owner", "ingress/default/my-ingress-2").WithSetIdentifier("test-set-2"), + newTXTEndpointWithOwnedRecord("cname-multiple-txt.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner,external-dns/resource=ingress/default/my-ingress-2\"", "multiple.test-zone.example.org").WithSetIdentifier("test-set-2"), }, UpdateOld: []*endpoint.Endpoint{ newEndpointWithOwner("tar.test-zone.example.org", "tar.loadbalancer.com", endpoint.RecordTypeCNAME, "owner"), - newEndpointWithOwnerAndOwnedRecord("cname-tar-txt.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", endpoint.RecordTypeTXT, "", "tar.test-zone.example.org"), + newTXTEndpointWithOwnedRecord("cname-tar-txt.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", "tar.test-zone.example.org"), newEndpointWithOwner("multiple.test-zone.example.org", "lb2.loadbalancer.com", endpoint.RecordTypeCNAME, "owner").WithSetIdentifier("test-set-2"), - newEndpointWithOwnerAndOwnedRecord("cname-multiple-txt.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", endpoint.RecordTypeTXT, "", "multiple.test-zone.example.org").WithSetIdentifier("test-set-2"), + newTXTEndpointWithOwnedRecord("cname-multiple-txt.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", "multiple.test-zone.example.org").WithSetIdentifier("test-set-2"), }, } p.OnApplyChanges = func(ctx context.Context, got *plan.Changes) { @@ -1006,15 +1006,15 @@ func testTXTRegistryApplyChangesNoPrefix(t *testing.T) { expected := &plan.Changes{ Create: []*endpoint.Endpoint{ newEndpointWithOwner("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", endpoint.RecordTypeCNAME, "owner"), - newEndpointWithOwnerAndOwnedRecord("cname-new-record-1.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", endpoint.RecordTypeTXT, "", "new-record-1.test-zone.example.org"), + newTXTEndpointWithOwnedRecord("cname-new-record-1.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", "new-record-1.test-zone.example.org"), newEndpointWithOwner("example", "new-loadbalancer-1.lb.com", endpoint.RecordTypeCNAME, "owner"), - newEndpointWithOwnerAndOwnedRecord("cname-example", "\"heritage=external-dns,external-dns/owner=owner\"", endpoint.RecordTypeTXT, "", "example"), + newTXTEndpointWithOwnedRecord("cname-example", "\"heritage=external-dns,external-dns/owner=owner\"", "example"), newEndpointWithOwner("new-alias.test-zone.example.org", "my-domain.com", endpoint.RecordTypeA, "owner").WithProviderSpecific("alias", "true"), - newEndpointWithOwnerAndOwnedRecord("cname-new-alias.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", endpoint.RecordTypeTXT, "", "new-alias.test-zone.example.org").WithProviderSpecific("alias", "true"), + newTXTEndpointWithOwnedRecord("cname-new-alias.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", "new-alias.test-zone.example.org").WithProviderSpecific("alias", "true"), }, Delete: []*endpoint.Endpoint{ newEndpointWithOwner("foobar.test-zone.example.org", "foobar.loadbalancer.com", endpoint.RecordTypeCNAME, "owner"), - newEndpointWithOwnerAndOwnedRecord("cname-foobar.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", endpoint.RecordTypeTXT, "", "foobar.test-zone.example.org"), + newTXTEndpointWithOwnedRecord("cname-foobar.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", "foobar.test-zone.example.org"), }, UpdateNew: []*endpoint.Endpoint{}, UpdateOld: []*endpoint.Endpoint{}, @@ -1368,13 +1368,13 @@ func TestNewTXTScheme(t *testing.T) { expected := &plan.Changes{ Create: []*endpoint.Endpoint{ newEndpointWithOwner("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", endpoint.RecordTypeCNAME, "owner"), - newEndpointWithOwnerAndOwnedRecord("cname-new-record-1.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", endpoint.RecordTypeTXT, "", "new-record-1.test-zone.example.org"), + newTXTEndpointWithOwnedRecord("cname-new-record-1.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", "new-record-1.test-zone.example.org"), newEndpointWithOwner("example", "new-loadbalancer-1.lb.com", endpoint.RecordTypeCNAME, "owner"), - newEndpointWithOwnerAndOwnedRecord("cname-example", "\"heritage=external-dns,external-dns/owner=owner\"", endpoint.RecordTypeTXT, "", "example"), + newTXTEndpointWithOwnedRecord("cname-example", "\"heritage=external-dns,external-dns/owner=owner\"", "example"), }, Delete: []*endpoint.Endpoint{ newEndpointWithOwner("foobar.test-zone.example.org", "foobar.loadbalancer.com", endpoint.RecordTypeCNAME, "owner"), - newEndpointWithOwnerAndOwnedRecord("cname-foobar.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", endpoint.RecordTypeTXT, "", "foobar.test-zone.example.org"), + newTXTEndpointWithOwnedRecord("cname-foobar.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", "foobar.test-zone.example.org"), }, UpdateNew: []*endpoint.Endpoint{}, UpdateOld: []*endpoint.Endpoint{}, @@ -1498,7 +1498,7 @@ func TestTXTRegistryApplyChangesEncrypt(t *testing.T) { p.ApplyChanges(ctx, &plan.Changes{ Create: []*endpoint.Endpoint{ newEndpointWithOwner("foobar.test-zone.example.org", "foobar.loadbalancer.com", endpoint.RecordTypeCNAME, ""), - newEndpointWithOwnerAndOwnedRecord("txt.cname-foobar.test-zone.example.org", "\"h8UQ6jelUFUsEIn7SbFktc2MYXPx/q8lySqI4VwfVtVaIbb2nkHWV/88KKbuLtu7fJNzMir8ELVeVnRSY01KdiIuj7ledqZe5ailEjQaU5Z6uEKd5pgs6sH8\"", endpoint.RecordTypeTXT, "", "foobar.test-zone.example.org"), + newTXTEndpointWithOwnedRecord("txt.cname-foobar.test-zone.example.org", "\"h8UQ6jelUFUsEIn7SbFktc2MYXPx/q8lySqI4VwfVtVaIbb2nkHWV/88KKbuLtu7fJNzMir8ELVeVnRSY01KdiIuj7ledqZe5ailEjQaU5Z6uEKd5pgs6sH8\"", "foobar.test-zone.example.org"), }, }) @@ -1512,7 +1512,7 @@ func TestTXTRegistryApplyChangesEncrypt(t *testing.T) { expected := &plan.Changes{ Delete: []*endpoint.Endpoint{ newEndpointWithOwner("foobar.test-zone.example.org", "foobar.loadbalancer.com", endpoint.RecordTypeCNAME, "owner"), - newEndpointWithOwnerAndOwnedRecord("txt.cname-foobar.test-zone.example.org", "\"h8UQ6jelUFUsEIn7SbFktc2MYXPx/q8lySqI4VwfVtVaIbb2nkHWV/88KKbuLtu7fJNzMir8ELVeVnRSY01KdiIuj7ledqZe5ailEjQaU5Z6uEKd5pgs6sH8\"", endpoint.RecordTypeTXT, "", "foobar.test-zone.example.org"), + newTXTEndpointWithOwnedRecord("txt.cname-foobar.test-zone.example.org", "\"h8UQ6jelUFUsEIn7SbFktc2MYXPx/q8lySqI4VwfVtVaIbb2nkHWV/88KKbuLtu7fJNzMir8ELVeVnRSY01KdiIuj7ledqZe5ailEjQaU5Z6uEKd5pgs6sH8\"", "foobar.test-zone.example.org"), }, } diff --git a/registry/txt/utils_test.go b/registry/txt/utils_test.go index ab18e923ca..f1228ca7d4 100644 --- a/registry/txt/utils_test.go +++ b/registry/txt/utils_test.go @@ -30,8 +30,8 @@ func newMultiTargetEndpointWithOwner(dnsName string, targets endpoint.Targets, r return newMultiTargetEndpointWithOwnerAndLabels(dnsName, targets, recordType, ownerID, nil) } -func newEndpointWithOwnerAndOwnedRecord(dnsName, target, recordType, ownerID, ownedRecord string) *endpoint.Endpoint { - return newEndpointWithOwnerAndLabels(dnsName, target, recordType, ownerID, endpoint.Labels{endpoint.OwnedRecordLabelKey: ownedRecord}) +func newTXTEndpointWithOwnedRecord(dnsName, target, ownedRecord string) *endpoint.Endpoint { + return newEndpointWithOwnerAndLabels(dnsName, target, endpoint.RecordTypeTXT, "", endpoint.Labels{endpoint.OwnedRecordLabelKey: ownedRecord}) } func newMultiTargetEndpointWithOwnerAndLabels(dnsName string, targets endpoint.Targets, recordType, ownerID string, labels endpoint.Labels) *endpoint.Endpoint { @@ -48,8 +48,8 @@ func newEndpointWithOwnerAndLabels(dnsName, target, recordType, ownerID string, return e } -func newEndpointWithOwnerResource(dnsName, target, recordType, ownerID, resource string) *endpoint.Endpoint { - e := endpoint.NewEndpoint(dnsName, recordType, target) +func newEndpointWithOwnerResource(dnsName, target, ownerID, resource string) *endpoint.Endpoint { + e := endpoint.NewEndpoint(dnsName, endpoint.RecordTypeCNAME, target) e.Labels[endpoint.OwnerLabelKey] = ownerID e.Labels[endpoint.ResourceLabelKey] = resource return e diff --git a/source/ambassador_host.go b/source/ambassador_host.go index ce529b9645..60b0ed771d 100644 --- a/source/ambassador_host.go +++ b/source/ambassador_host.go @@ -168,11 +168,7 @@ func (sc *ambassadorHostSource) Endpoints(ctx context.Context) ([]*endpoint.Endp } } - hostEndpoints, err := sc.endpointsFromHost(host, targets) - if err != nil { - log.Warningf("Could not get endpoints for Host %s", err) - continue - } + hostEndpoints := sc.endpointsFromHost(host, targets) if endpoint.HasNoEmptyEndpoints(hostEndpoints, types.AmbassadorHost, host) { continue } @@ -189,7 +185,7 @@ func (sc *ambassadorHostSource) Endpoints(ctx context.Context) ([]*endpoint.Endp } // endpointsFromHost extracts the endpoints from a Host object -func (sc *ambassadorHostSource) endpointsFromHost(host *ambassador.Host, targets endpoint.Targets) ([]*endpoint.Endpoint, error) { +func (sc *ambassadorHostSource) endpointsFromHost(host *ambassador.Host, targets endpoint.Targets) []*endpoint.Endpoint { var endpoints []*endpoint.Endpoint resource := fmt.Sprintf("host/%s/%s", host.Namespace, host.Name) @@ -203,7 +199,7 @@ func (sc *ambassadorHostSource) endpointsFromHost(host *ambassador.Host, targets } } - return endpoints, nil + return endpoints } func (sc *ambassadorHostSource) targetsFromAmbassadorLoadBalancer(ctx context.Context, service string) (endpoint.Targets, error) { diff --git a/source/contour_httpproxy.go b/source/contour_httpproxy.go index 9013877794..15cffc2ff9 100644 --- a/source/contour_httpproxy.go +++ b/source/contour_httpproxy.go @@ -143,10 +143,7 @@ func (sc *httpProxySource) Endpoints(_ context.Context) ([]*endpoint.Endpoint, e continue } - hpEndpoints, err := sc.endpointsFromHTTPProxy(hp) - if err != nil { - return nil, fmt.Errorf("failed to get endpoints from HTTPProxy: %w", err) - } + hpEndpoints := sc.endpointsFromHTTPProxy(hp) // apply template if fqdn is missing on HTTPProxy hpEndpoints, err = fqdn.CombineWithTemplatedEndpoints( @@ -206,7 +203,7 @@ func (sc *httpProxySource) endpointsFromTemplate(httpProxy *projectcontour.HTTPP } // endpointsFromHTTPProxyConfig extracts the endpoints from a Contour HTTPProxy object -func (sc *httpProxySource) endpointsFromHTTPProxy(httpProxy *projectcontour.HTTPProxy) ([]*endpoint.Endpoint, error) { +func (sc *httpProxySource) endpointsFromHTTPProxy(httpProxy *projectcontour.HTTPProxy) []*endpoint.Endpoint { resource := fmt.Sprintf("HTTPProxy/%s/%s", httpProxy.Namespace, httpProxy.Name) ttl := annotations.TTLFromAnnotations(httpProxy.Annotations, resource) @@ -242,7 +239,7 @@ func (sc *httpProxySource) endpointsFromHTTPProxy(httpProxy *projectcontour.HTTP } } - return endpoints, nil + return endpoints } func (sc *httpProxySource) AddEventHandler(_ context.Context, handler func()) { diff --git a/source/contour_httpproxy_test.go b/source/contour_httpproxy_test.go index 15a45b2ddd..8820b44cac 100644 --- a/source/contour_httpproxy_test.go +++ b/source/contour_httpproxy_test.go @@ -290,9 +290,8 @@ func testEndpointsFromHTTPProxy(t *testing.T) { if source, err := newTestHTTPProxySource(); err != nil { require.NoError(t, err) - } else if endpoints, err := source.endpointsFromHTTPProxy(ti.httpProxy.HTTPProxy()); err != nil { - require.NoError(t, err) } else { + endpoints := source.endpointsFromHTTPProxy(ti.httpProxy.HTTPProxy()) validateEndpoints(t, endpoints, ti.expected) } }) diff --git a/source/f5_transportserver.go b/source/f5_transportserver.go index 3e6ac016e9..4051a6d079 100644 --- a/source/f5_transportserver.go +++ b/source/f5_transportserver.go @@ -126,10 +126,7 @@ func (ts *f5TransportServerSource) Endpoints(_ context.Context) ([]*endpoint.End return nil, fmt.Errorf("failed to filter TransportServers: %w", err) } - endpoints, err := ts.endpointsFromTransportServers(transportServers) - if err != nil { - return nil, err - } + endpoints := ts.endpointsFromTransportServers(transportServers) return endpoints, nil } @@ -141,7 +138,7 @@ func (ts *f5TransportServerSource) AddEventHandler(_ context.Context, handler fu } // endpointsFromTransportServers extracts the endpoints from a slice of TransportServers -func (ts *f5TransportServerSource) endpointsFromTransportServers(transportServers []*f5.TransportServer) ([]*endpoint.Endpoint, error) { +func (ts *f5TransportServerSource) endpointsFromTransportServers(transportServers []*f5.TransportServer) []*endpoint.Endpoint { var endpoints []*endpoint.Endpoint for _, transportServer := range transportServers { @@ -166,7 +163,7 @@ func (ts *f5TransportServerSource) endpointsFromTransportServers(transportServer endpoints = append(endpoints, EndpointsForHostname(transportServer.Spec.Host, targets, ttl, nil, "", resource)...) } - return endpoints, nil + return endpoints } // newUnstructuredConverter returns a new unstructuredConverter initialized diff --git a/source/f5_virtualserver.go b/source/f5_virtualserver.go index 16a9f331ac..d9082208b9 100644 --- a/source/f5_virtualserver.go +++ b/source/f5_virtualserver.go @@ -126,10 +126,7 @@ func (vs *f5VirtualServerSource) Endpoints(_ context.Context) ([]*endpoint.Endpo return nil, fmt.Errorf("failed to filter VirtualServers: %w", err) } - endpoints, err := vs.endpointsFromVirtualServers(virtualServers) - if err != nil { - return nil, err - } + endpoints := vs.endpointsFromVirtualServers(virtualServers) // Sort endpoints for _, ep := range endpoints { @@ -146,7 +143,7 @@ func (vs *f5VirtualServerSource) AddEventHandler(_ context.Context, handler func } // endpointsFromVirtualServers extracts the endpoints from a slice of VirtualServers -func (vs *f5VirtualServerSource) endpointsFromVirtualServers(virtualServers []*f5.VirtualServer) ([]*endpoint.Endpoint, error) { +func (vs *f5VirtualServerSource) endpointsFromVirtualServers(virtualServers []*f5.VirtualServer) []*endpoint.Endpoint { var endpoints []*endpoint.Endpoint for _, virtualServer := range virtualServers { @@ -178,7 +175,7 @@ func (vs *f5VirtualServerSource) endpointsFromVirtualServers(virtualServers []*f } } - return endpoints, nil + return endpoints } // newUnstructuredConverter returns a new unstructuredConverter initialized diff --git a/source/gateway_grpcroute_test.go b/source/gateway_grpcroute_test.go index 7efedd10b5..fa486f6354 100644 --- a/source/gateway_grpcroute_test.go +++ b/source/gateway_grpcroute_test.go @@ -100,8 +100,8 @@ func TestGatewayGRPCRouteSourceEndpoints(t *testing.T) { endpoints, err := src.Endpoints(ctx) require.NoError(t, err, "failed to get Endpoints") validateEndpoints(t, endpoints, []*endpoint.Endpoint{ - newTestEndpoint("api-annotation.foobar.internal", "A", ips...), - newTestEndpoint("api-hostnames.foobar.internal", "A", ips...), - newTestEndpoint("api-template.foobar.internal", "A", ips...), + newTestEndpoint("api-annotation.foobar.internal", ips...), + newTestEndpoint("api-hostnames.foobar.internal", ips...), + newTestEndpoint("api-template.foobar.internal", ips...), }) } diff --git a/source/gateway_httproute_test.go b/source/gateway_httproute_test.go index 7eaf885e08..39e08c9e47 100644 --- a/source/gateway_httproute_test.go +++ b/source/gateway_httproute_test.go @@ -116,8 +116,8 @@ func withPortNumber(port v1.PortNumber) gwParentRefOption { return func(ref *v1.ParentReference) { ref.Port = &port } } -func newTestEndpoint(dnsName, recordType string, targets ...string) *endpoint.Endpoint { - return newTestEndpointWithTTL(dnsName, recordType, 0, targets...) +func newTestEndpoint(dnsName string, targets ...string) *endpoint.Endpoint { + return newTestEndpointWithTTL(dnsName, endpoint.RecordTypeA, 0, targets...) } func newTestEndpointWithTTL(dnsName, recordType string, ttl int64, targets ...string) *endpoint.Endpoint { @@ -207,7 +207,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { ), }}, endpoints: []*endpoint.Endpoint{ - newTestEndpoint("test.example.internal", "A", "1.2.3.4"), + newTestEndpoint("test.example.internal", "1.2.3.4"), }, logExpectations: []string{ "Gateway gateway-namespace/not-gateway-name does not match gateway-name route-namespace/test", @@ -290,7 +290,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { ), }}, endpoints: []*endpoint.Endpoint{ - newTestEndpoint("test.example.internal", "A", "1.2.3.4"), + newTestEndpoint("test.example.internal", "1.2.3.4"), }, }, { @@ -331,7 +331,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { }, }, endpoints: []*endpoint.Endpoint{ - newTestEndpoint("route-namespace.example.internal", "A", "1.2.3.4"), + newTestEndpoint("route-namespace.example.internal", "1.2.3.4"), }, }, { @@ -381,7 +381,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { ), }}, endpoints: []*endpoint.Endpoint{ - newTestEndpoint("test.example.internal", "A", "1.2.3.4"), + newTestEndpoint("test.example.internal", "1.2.3.4"), }, }, { @@ -432,7 +432,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { }, }, endpoints: []*endpoint.Endpoint{ - newTestEndpoint("labels-match.example.internal", "A", "1.2.3.4"), + newTestEndpoint("labels-match.example.internal", "1.2.3.4"), }, }, { @@ -483,7 +483,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { }, }, endpoints: []*endpoint.Endpoint{ - newTestEndpoint("annotations-match.example.internal", "A", "1.2.3.4"), + newTestEndpoint("annotations-match.example.internal", "1.2.3.4"), }, }, { @@ -554,7 +554,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { ), }}, endpoints: []*endpoint.Endpoint{ - newTestEndpoint("test.example.internal", "A", "1.2.3.4", "2.3.4.5"), + newTestEndpoint("test.example.internal", "1.2.3.4", "2.3.4.5"), }, }, { @@ -594,8 +594,8 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { ), }}, endpoints: []*endpoint.Endpoint{ - newTestEndpoint("foo.example.internal", "A", "1.2.3.4"), - newTestEndpoint("bar.example.internal", "A", "1.2.3.4"), + newTestEndpoint("foo.example.internal", "1.2.3.4"), + newTestEndpoint("bar.example.internal", "1.2.3.4"), }, }, { @@ -635,7 +635,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { ), }}, endpoints: []*endpoint.Endpoint{ - newTestEndpoint("foo.example.internal", "A", "1.2.3.4"), + newTestEndpoint("foo.example.internal", "1.2.3.4"), }, }, { @@ -684,8 +684,8 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { ), }}, endpoints: []*endpoint.Endpoint{ - newTestEndpoint("foo.example.internal", "A", "1.2.3.4"), - newTestEndpoint("bar.example.internal", "A", "1.2.3.4"), + newTestEndpoint("foo.example.internal", "1.2.3.4"), + newTestEndpoint("bar.example.internal", "1.2.3.4"), }, }, { @@ -717,7 +717,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { Status: httpRouteStatus(gwParentRef("default", "test")), }}, endpoints: []*endpoint.Endpoint{ - newTestEndpoint("foo.example.internal", "A", "1.2.3.4"), + newTestEndpoint("foo.example.internal", "1.2.3.4"), }, }, { @@ -749,7 +749,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { Status: httpRouteStatus(gwParentRef("default", "test")), }}, endpoints: []*endpoint.Endpoint{ - newTestEndpoint("foo.example.internal", "A", "1.2.3.4"), + newTestEndpoint("foo.example.internal", "1.2.3.4"), }, }, { @@ -781,7 +781,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { Status: httpRouteStatus(gwParentRef("default", "test")), }}, endpoints: []*endpoint.Endpoint{ - newTestEndpoint("*.example.internal", "A", "1.2.3.4"), + newTestEndpoint("*.example.internal", "1.2.3.4"), }, }, { @@ -811,7 +811,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { Status: httpRouteStatus(gwParentRef("default", "test")), }}, endpoints: []*endpoint.Endpoint{ - newTestEndpoint("foo.example.internal", "A", "1.2.3.4"), + newTestEndpoint("foo.example.internal", "1.2.3.4"), }, }, { @@ -906,9 +906,9 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { }, }, endpoints: []*endpoint.Endpoint{ - newTestEndpoint("annotation.without-hostname.internal", "A", "1.2.3.4"), - newTestEndpoint("annotation.with-hostname.internal", "A", "1.2.3.4"), - newTestEndpoint("with-hostname.internal", "A", "1.2.3.4"), + newTestEndpoint("annotation.without-hostname.internal", "1.2.3.4"), + newTestEndpoint("annotation.with-hostname.internal", "1.2.3.4"), + newTestEndpoint("with-hostname.internal", "1.2.3.4"), }, }, { @@ -943,7 +943,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { Status: httpRouteStatus(gwParentRef("default", "test")), }}, endpoints: []*endpoint.Endpoint{ - newTestEndpoint("with-hostname.internal", "A", "1.2.3.4"), + newTestEndpoint("with-hostname.internal", "1.2.3.4"), }, }, { @@ -986,10 +986,10 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { }, }, endpoints: []*endpoint.Endpoint{ - newTestEndpoint("fqdn-without-hostnames.zero.internal", "A", "1.2.3.4"), - newTestEndpoint("fqdn-without-hostnames.one.internal", "A", "1.2.3.4"), - newTestEndpoint("fqdn-without-hostnames.two.internal", "A", "1.2.3.4"), - newTestEndpoint("fqdn-with-hostnames.internal", "A", "1.2.3.4"), + newTestEndpoint("fqdn-without-hostnames.zero.internal", "1.2.3.4"), + newTestEndpoint("fqdn-without-hostnames.one.internal", "1.2.3.4"), + newTestEndpoint("fqdn-without-hostnames.two.internal", "1.2.3.4"), + newTestEndpoint("fqdn-with-hostnames.internal", "1.2.3.4"), }, }, { @@ -1019,8 +1019,8 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { Status: httpRouteStatus(gwParentRef("default", "test")), }}, endpoints: []*endpoint.Endpoint{ - newTestEndpoint("fqdn-with-hostnames.internal", "A", "1.2.3.4"), - newTestEndpoint("combine-fqdn-with-hostnames.internal", "A", "1.2.3.4"), + newTestEndpoint("fqdn-with-hostnames.internal", "1.2.3.4"), + newTestEndpoint("combine-fqdn-with-hostnames.internal", "1.2.3.4"), }, }, { @@ -1069,8 +1069,8 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { }, }, endpoints: []*endpoint.Endpoint{ - newTestEndpoint("invalid-ttl.internal", "A", "1.2.3.4"), - newTestEndpointWithTTL("valid-ttl.internal", "A", 15, "1.2.3.4"), + newTestEndpoint("invalid-ttl.internal", "1.2.3.4"), + newTestEndpointWithTTL("valid-ttl.internal", endpoint.RecordTypeA, 15, "1.2.3.4"), }, }, { @@ -1104,7 +1104,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { Status: httpRouteStatus(gwParentRef("default", "test")), }}, endpoints: []*endpoint.Endpoint{ - newTestEndpoint("provider-annotations.com", "A", "1.2.3.4"). + newTestEndpoint("provider-annotations.com", "1.2.3.4"). WithProviderSpecific("alias", "true"). WithSetIdentifier("test-set-identifier"), }, @@ -1152,8 +1152,8 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { ), }}, endpoints: []*endpoint.Endpoint{ - newTestEndpoint("test.one.internal", "A", "1.2.3.4"), - newTestEndpoint("test.two.internal", "A", "2.3.4.5"), + newTestEndpoint("test.one.internal", "1.2.3.4"), + newTestEndpoint("test.two.internal", "2.3.4.5"), }, }, { @@ -1201,7 +1201,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { }, }, endpoints: []*endpoint.Endpoint{ - newTestEndpoint("same-namespace.example.internal", "A", "1.2.3.4"), + newTestEndpoint("same-namespace.example.internal", "1.2.3.4"), }, }, { @@ -1270,7 +1270,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { }, }, endpoints: []*endpoint.Endpoint{ - newTestEndpoint("foo.example.internal", "A", "1.2.3.4"), + newTestEndpoint("foo.example.internal", "1.2.3.4"), }, }, { @@ -1348,7 +1348,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { ), }}, endpoints: []*endpoint.Endpoint{ - newTestEndpoint("test.example.internal", "A", "4.3.2.1"), + newTestEndpoint("test.example.internal", "4.3.2.1"), }, }, { @@ -1402,7 +1402,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { ), }}, endpoints: []*endpoint.Endpoint{ - newTestEndpoint("test.example.internal", "A", "4.3.2.1", "2.3.4.5"), + newTestEndpoint("test.example.internal", "4.3.2.1", "2.3.4.5"), }, }, { @@ -1456,8 +1456,8 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { }, }, endpoints: []*endpoint.Endpoint{ - newTestEndpoint("test.one.internal", "A", "1.2.3.4"), - newTestEndpoint("test.two.internal", "A", "2.3.4.5"), + newTestEndpoint("test.one.internal", "1.2.3.4"), + newTestEndpoint("test.two.internal", "2.3.4.5"), }, logExpectations: []string{ "Endpoints generated from HTTPRoute default/one: [test.one.internal 0 IN A 1.2.3.4 []]", @@ -1566,7 +1566,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { }, }, endpoints: []*endpoint.Endpoint{ - newTestEndpoint("test.example.internal", "A", "1.2.3.4"), + newTestEndpoint("test.example.internal", "1.2.3.4"), }, }, { @@ -1606,7 +1606,7 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { }, }, endpoints: []*endpoint.Endpoint{ - newTestEndpoint("test.org.internal", "A", "1.2.3.4"), + newTestEndpoint("test.org.internal", "1.2.3.4"), }, }, { @@ -1640,8 +1640,8 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { Status: httpRouteStatus(gwParentRef("default", "test")), }}, endpoints: []*endpoint.Endpoint{ - newTestEndpoint("route.invalid.internal", "A", "1.2.3.4"), - newTestEndpoint("annotation.invalid.internal", "A", "1.2.3.4"), + newTestEndpoint("route.invalid.internal", "1.2.3.4"), + newTestEndpoint("annotation.invalid.internal", "1.2.3.4"), }, logExpectations: []string{ "Invalid value for \"external-dns.alpha.kubernetes.io/gateway-hostname-source\" on default/invalid-annotation: \"invalid-value\". Falling back to default behavior.", diff --git a/source/gateway_tcproute_test.go b/source/gateway_tcproute_test.go index 3972b973ea..8c4339ee0b 100644 --- a/source/gateway_tcproute_test.go +++ b/source/gateway_tcproute_test.go @@ -100,7 +100,7 @@ func TestGatewayTCPRouteSourceEndpoints(t *testing.T) { endpoints, err := src.Endpoints(ctx) require.NoError(t, err, "failed to get Endpoints") validateEndpoints(t, endpoints, []*endpoint.Endpoint{ - newTestEndpoint("api-annotation.foobar.internal", "A", ips...), - newTestEndpoint("api-template.foobar.internal", "A", ips...), + newTestEndpoint("api-annotation.foobar.internal", ips...), + newTestEndpoint("api-template.foobar.internal", ips...), }) } diff --git a/source/gateway_tlsroute_test.go b/source/gateway_tlsroute_test.go index 426ae3c329..9a16ccc4ee 100644 --- a/source/gateway_tlsroute_test.go +++ b/source/gateway_tlsroute_test.go @@ -101,8 +101,8 @@ func TestGatewayTLSRouteSourceEndpoints(t *testing.T) { endpoints, err := src.Endpoints(ctx) require.NoError(t, err, "failed to get Endpoints") validateEndpoints(t, endpoints, []*endpoint.Endpoint{ - newTestEndpoint("api-annotation.foobar.internal", "A", ips...), - newTestEndpoint("api-hostnames.foobar.internal", "A", ips...), - newTestEndpoint("api-template.foobar.internal", "A", ips...), + newTestEndpoint("api-annotation.foobar.internal", ips...), + newTestEndpoint("api-hostnames.foobar.internal", ips...), + newTestEndpoint("api-template.foobar.internal", ips...), }) } diff --git a/source/gateway_udproute_test.go b/source/gateway_udproute_test.go index e35d73ce1f..ef835606df 100644 --- a/source/gateway_udproute_test.go +++ b/source/gateway_udproute_test.go @@ -100,7 +100,7 @@ func TestGatewayUDPRouteSourceEndpoints(t *testing.T) { endpoints, err := src.Endpoints(ctx) require.NoError(t, err, "failed to get Endpoints") validateEndpoints(t, endpoints, []*endpoint.Endpoint{ - newTestEndpoint("api-annotation.foobar.internal", "A", ips...), - newTestEndpoint("api-template.foobar.internal", "A", ips...), + newTestEndpoint("api-annotation.foobar.internal", ips...), + newTestEndpoint("api-template.foobar.internal", ips...), }) } diff --git a/source/istio_gateway.go b/source/istio_gateway.go index b099aaf60f..4cc8db181a 100644 --- a/source/istio_gateway.go +++ b/source/istio_gateway.go @@ -159,10 +159,7 @@ func (sc *gatewaySource) Endpoints(ctx context.Context) ([]*endpoint.Endpoint, e continue } - gwHostnames, err := sc.hostNamesFromGateway(gateway) - if err != nil { - return nil, err - } + gwHostnames := sc.hostNamesFromGateway(gateway) log.Debugf("Processing gateway '%s/%s.%s' and hosts %q", gateway.Namespace, gateway.APIVersion, gateway.Name, strings.Join(gwHostnames, ",")) @@ -276,7 +273,7 @@ func (sc *gatewaySource) endpointsFromGateway(hostnames []string, gateway *netwo return endpoints, nil } -func (sc *gatewaySource) hostNamesFromGateway(gateway *networkingv1beta1.Gateway) ([]string, error) { +func (sc *gatewaySource) hostNamesFromGateway(gateway *networkingv1beta1.Gateway) []string { var hostnames []string for _, server := range gateway.Spec.Servers { for _, host := range server.Hosts { @@ -302,5 +299,5 @@ func (sc *gatewaySource) hostNamesFromGateway(gateway *networkingv1beta1.Gateway hostnames = append(hostnames, annotations.HostnamesFromAnnotations(gateway.Annotations)...) } - return hostnames, nil + return hostnames } diff --git a/source/istio_gateway_test.go b/source/istio_gateway_test.go index fb4e29d08a..64c6985736 100644 --- a/source/istio_gateway_test.go +++ b/source/istio_gateway_test.go @@ -502,15 +502,12 @@ func testEndpointsFromGatewayConfig(t *testing.T) { t.Parallel() gatewayCfg := ti.config.Config() - if source, err := newTestGatewaySource(ti.lbServices, ti.ingresses); err != nil { - require.NoError(t, err) - } else if hostnames, err := source.hostNamesFromGateway(gatewayCfg); err != nil { - require.NoError(t, err) - } else if endpoints, err := source.endpointsFromGateway(hostnames, gatewayCfg); err != nil { - require.NoError(t, err) - } else { - validateEndpoints(t, endpoints, ti.expected) - } + source, err := newTestGatewaySource(ti.lbServices, ti.ingresses) + require.NoError(t, err) + hostnames := source.hostNamesFromGateway(gatewayCfg) + endpoints, err := source.endpointsFromGateway(hostnames, gatewayCfg) + require.NoError(t, err) + validateEndpoints(t, endpoints, ti.expected) }) } } diff --git a/source/kong_tcpingress.go b/source/kong_tcpingress.go index 055f31bcb5..a564ff4de4 100644 --- a/source/kong_tcpingress.go +++ b/source/kong_tcpingress.go @@ -148,10 +148,7 @@ func (sc *kongTCPIngressSource) Endpoints(_ context.Context) ([]*endpoint.Endpoi fullname := fmt.Sprintf("%s/%s", tcpIngress.Namespace, tcpIngress.Name) - ingressEndpoints, err := sc.endpointsFromTCPIngress(tcpIngress, targets) - if err != nil { - return nil, err - } + ingressEndpoints := sc.endpointsFromTCPIngress(tcpIngress, targets) if endpoint.HasNoEmptyEndpoints(ingressEndpoints, types.KongTCPIngress, tcpIngress) { continue } @@ -168,7 +165,7 @@ func (sc *kongTCPIngressSource) Endpoints(_ context.Context) ([]*endpoint.Endpoi } // endpointsFromTCPIngress extracts the endpoints from a TCPIngress object -func (sc *kongTCPIngressSource) endpointsFromTCPIngress(tcpIngress *TCPIngress, targets endpoint.Targets) ([]*endpoint.Endpoint, error) { +func (sc *kongTCPIngressSource) endpointsFromTCPIngress(tcpIngress *TCPIngress, targets endpoint.Targets) []*endpoint.Endpoint { var endpoints []*endpoint.Endpoint resource := fmt.Sprintf("tcpingress/%s/%s", tcpIngress.Namespace, tcpIngress.Name) @@ -192,7 +189,7 @@ func (sc *kongTCPIngressSource) endpointsFromTCPIngress(tcpIngress *TCPIngress, } } - return endpoints, nil + return endpoints } func (sc *kongTCPIngressSource) AddEventHandler(_ context.Context, handler func()) { diff --git a/source/node_test.go b/source/node_test.go index bd99894110..8a795d1802 100644 --- a/source/node_test.go +++ b/source/node_test.go @@ -581,10 +581,10 @@ func TestResourceLabelIsSetForEachNodeEndpoint(t *testing.T) { kubeClient := fake.NewClientset() nodes := helperNodeBuilder(). - withNode(nil). - withNode(nil). - withNode(nil). - withNode(nil). + withNode(map[string]string{"tenant": "1"}). + withNode(map[string]string{"tenant": "2"}). + withNode(map[string]string{"tenant": "3"}). + withNode(map[string]string{"tenant": "4"}). build() for _, node := range nodes.Items { diff --git a/source/service_test.go b/source/service_test.go index 53fd7071d7..cb964cd03b 100644 --- a/source/service_test.go +++ b/source/service_test.go @@ -4862,8 +4862,6 @@ func TestNewServiceTypes(t *testing.T) { } func TestFilterByServiceType_WithFixture(t *testing.T) { - namespace := "testns" - tests := []struct { name string filter *serviceTypes @@ -4872,7 +4870,7 @@ func TestFilterByServiceType_WithFixture(t *testing.T) { }{ { name: "all types of services with filter enabled for ServiceTypeNodePort and ServiceTypeClusterIP", - currentServices: createTestServicesByType(namespace, map[v1.ServiceType]int{ + currentServices: createTestServicesByType("kube-system", map[v1.ServiceType]int{ v1.ServiceTypeLoadBalancer: 3, v1.ServiceTypeNodePort: 4, v1.ServiceTypeClusterIP: 5, @@ -4889,7 +4887,7 @@ func TestFilterByServiceType_WithFixture(t *testing.T) { }, { name: "all types of services with filter enabled for ServiceTypeLoadBalancer", - currentServices: createTestServicesByType(namespace, map[v1.ServiceType]int{ + currentServices: createTestServicesByType("default", map[v1.ServiceType]int{ v1.ServiceTypeLoadBalancer: 3, v1.ServiceTypeNodePort: 4, v1.ServiceTypeClusterIP: 5, @@ -4905,7 +4903,7 @@ func TestFilterByServiceType_WithFixture(t *testing.T) { }, { name: "enabled for ServiceTypeLoadBalancer when not all types are present", - currentServices: createTestServicesByType(namespace, map[v1.ServiceType]int{ + currentServices: createTestServicesByType("default", map[v1.ServiceType]int{ v1.ServiceTypeNodePort: 4, v1.ServiceTypeClusterIP: 5, v1.ServiceTypeExternalName: 2, @@ -4920,7 +4918,7 @@ func TestFilterByServiceType_WithFixture(t *testing.T) { }, { name: "filter disabled returns all services", - currentServices: createTestServicesByType(namespace, map[v1.ServiceType]int{ + currentServices: createTestServicesByType("default", map[v1.ServiceType]int{ v1.ServiceTypeLoadBalancer: 3, v1.ServiceTypeNodePort: 4, v1.ServiceTypeClusterIP: 5, @@ -5109,7 +5107,7 @@ func TestPodTransformerInServiceSource(t *testing.T) { } // createTestServicesByType creates the requested number of services per type in the given namespace. -func createTestServicesByType(namespace string, typeCounts map[v1.ServiceType]int) []*v1.Service { +func createTestServicesByType(ns string, typeCounts map[v1.ServiceType]int) []*v1.Service { var services []*v1.Service idx := 0 for svcType, count := range typeCounts { @@ -5117,7 +5115,7 @@ func createTestServicesByType(namespace string, typeCounts map[v1.ServiceType]in svc := &v1.Service{ ObjectMeta: metav1.ObjectMeta{ Name: fmt.Sprintf("svc-%s-%d", svcType, idx), - Namespace: namespace, + Namespace: ns, }, Spec: v1.ServiceSpec{ Type: svcType, From 107eebbd78a931176a14f77afc11d64e35f1bfdf Mon Sep 17 00:00:00 2001 From: ivan katliarchuk Date: Sat, 31 Jan 2026 19:22:31 +0000 Subject: [PATCH 3/9] chore(linter): enable unparam Signed-off-by: ivan katliarchuk --- registry/awssd/registry_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/registry/awssd/registry_test.go b/registry/awssd/registry_test.go index 209d046fe2..e0fffe5b4d 100644 --- a/registry/awssd/registry_test.go +++ b/registry/awssd/registry_test.go @@ -56,7 +56,7 @@ func TestAWSSDRegistry_NewAWSSDRegistry(t *testing.T) { _, err := NewAWSSDRegistry(p, "") require.Error(t, err) - _, err = NewAWSSDRegistry(p, "test-owner") + _, err = NewAWSSDRegistry(p, "owner") require.NoError(t, err) } @@ -152,7 +152,7 @@ func TestAWSSDRegistry_Records_ApplyChanges(t *testing.T) { } assert.True(t, testutils.SamePlanChanges(mGot, mExpected)) }) - r, err := NewAWSSDRegistry(p, "apply-changes-owner") + r, err := NewAWSSDRegistry(p, "owner") require.NoError(t, err) err = r.ApplyChanges(context.Background(), changes) From cc001983dda4a6abffa1d5ba8e951160a1ec9cc3 Mon Sep 17 00:00:00 2001 From: ivan katliarchuk Date: Tue, 3 Feb 2026 08:46:53 +0000 Subject: [PATCH 4/9] chore(linter): enable unparam Signed-off-by: ivan katliarchuk --- provider/coredns/coredns.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/provider/coredns/coredns.go b/provider/coredns/coredns.go index a5d1ece1a1..34eeda3f24 100644 --- a/provider/coredns/coredns.go +++ b/provider/coredns/coredns.go @@ -47,6 +47,11 @@ const ( providerSpecificGroup = "coredns/group" ) +var ( + // avoids allocating a new slice on every call + skipLabels = []string{"originalText", "prefix", "resource"} +) + // coreDNSClient is an interface to work with CoreDNS service records in etcd type coreDNSClient interface { GetServices(ctx context.Context, prefix string) ([]*Service, error) @@ -436,7 +441,7 @@ func (p coreDNSProvider) createServicesForEndpoint(ctx context.Context, dnsName // Clean outdated labels for label, labelPrefix := range ep.Labels { - if shouldSkipLabel(label) { + if findLabelInTargets(skipLabels, label) { continue } if !findLabelInTargets(ep.Targets, label) { @@ -453,11 +458,6 @@ func (p coreDNSProvider) createServicesForEndpoint(ctx context.Context, dnsName return services, nil } -func shouldSkipLabel(label string) bool { - skip := []string{"originalText", "prefix", "resource"} - return findLabelInTargets(skip, label) -} - // updateTXTRecords updates the TXT records in the provided services slice based on the given group of endpoints. func (p coreDNSProvider) updateTXTRecords(dnsName string, group []*endpoint.Endpoint, services []*Service) []*Service { index := 0 From a7729222538fb325fb0ed27e0fc89a6aac607d92 Mon Sep 17 00:00:00 2001 From: ivan katliarchuk Date: Tue, 3 Feb 2026 08:48:21 +0000 Subject: [PATCH 5/9] chore(linter): enable unparam Signed-off-by: ivan katliarchuk --- provider/coredns/coredns.go | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/provider/coredns/coredns.go b/provider/coredns/coredns.go index 34eeda3f24..3bc3792399 100644 --- a/provider/coredns/coredns.go +++ b/provider/coredns/coredns.go @@ -294,11 +294,6 @@ func findEp(slice []*endpoint.Endpoint, dnsName string) (*endpoint.Endpoint, boo return nil, false } -// findLabelInTargets takes an ep.Targets string slice and looks for an element in it. -func findLabelInTargets(targets []string, label string) bool { - return slices.Contains(targets, label) -} - // Records returns all DNS records found in CoreDNS etcd backend. Depending on the record fields // it may be mapped to one or two records of type A, CNAME, TXT, A+TXT, CNAME+TXT func (p coreDNSProvider) Records(ctx context.Context) ([]*endpoint.Endpoint, error) { @@ -441,10 +436,10 @@ func (p coreDNSProvider) createServicesForEndpoint(ctx context.Context, dnsName // Clean outdated labels for label, labelPrefix := range ep.Labels { - if findLabelInTargets(skipLabels, label) { + if slices.Contains(skipLabels, label) { continue } - if !findLabelInTargets(ep.Targets, label) { + if !slices.Contains(ep.Targets, label) { key := p.etcdKeyFor(labelPrefix + "." + dnsName) log.Infof("Delete key %s", key) if p.dryRun { From 1059b88318061d987724f0ff8234680b6c08a8a5 Mon Sep 17 00:00:00 2001 From: Ivan Ka <5395690+ivankatliarchuk@users.noreply.github.com> Date: Fri, 20 Feb 2026 08:41:07 +0000 Subject: [PATCH 6/9] chore(linter): enable unparam Co-authored-by: vflaux <38909103+vflaux@users.noreply.github.com> --- provider/azure/azure_privatedns_test.go | 2 +- provider/pdns/pdns.go | 3 +-- registry/awssd/registry_test.go | 2 +- registry/txt/utils_test.go | 2 +- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/provider/azure/azure_privatedns_test.go b/provider/azure/azure_privatedns_test.go index 15f4a7e010..0e399d3eb6 100644 --- a/provider/azure/azure_privatedns_test.go +++ b/provider/azure/azure_privatedns_test.go @@ -196,7 +196,7 @@ func createPrivateMockRecordSet(recordType string, values ...string) *privatedns return createPrivateMockRecordSetMultiWithTTL("@", recordType, 0, values...) } -func createPrivateMockRecordSetWithTTL(name, recordType, value string, ttl int64) *privatedns.RecordSet { +func createPrivateMockRecordSetWithNameAndTTL(name, recordType, value string, ttl int64) *privatedns.RecordSet { return createPrivateMockRecordSetMultiWithTTL(name, recordType, ttl, value) } diff --git a/provider/pdns/pdns.go b/provider/pdns/pdns.go index a033e130f4..6cf0abec7d 100644 --- a/provider/pdns/pdns.go +++ b/provider/pdns/pdns.go @@ -439,8 +439,7 @@ func (p *PDNSProvider) Records(_ context.Context) ([]*endpoint.Endpoint, error) } for _, rr := range z.Rrsets { - e := p.convertRRSetToEndpoints(rr) - endpoints = append(endpoints, e...) + endpoints = append(endpoints, p.convertRRSetToEndpoints(rr)...) } } diff --git a/registry/awssd/registry_test.go b/registry/awssd/registry_test.go index e0fffe5b4d..0e2182cfe8 100644 --- a/registry/awssd/registry_test.go +++ b/registry/awssd/registry_test.go @@ -166,7 +166,7 @@ func newEndpointWithOwnerAndDescription(dnsName, target, recordType, ownerID str return e } -func newEndpointWithOwner(dnsName, target, recordType string) *endpoint.Endpoint { +func newEndpoint(dnsName, target, recordType string) *endpoint.Endpoint { e := endpoint.NewEndpoint(dnsName, recordType, target) e.Labels[endpoint.OwnerLabelKey] = "owner" return e diff --git a/registry/txt/utils_test.go b/registry/txt/utils_test.go index f1228ca7d4..e6bc64e4e8 100644 --- a/registry/txt/utils_test.go +++ b/registry/txt/utils_test.go @@ -48,7 +48,7 @@ func newEndpointWithOwnerAndLabels(dnsName, target, recordType, ownerID string, return e } -func newEndpointWithOwnerResource(dnsName, target, ownerID, resource string) *endpoint.Endpoint { +func newCNAMEEndpointWithOwnerResource(dnsName, target, ownerID, resource string) *endpoint.Endpoint { e := endpoint.NewEndpoint(dnsName, endpoint.RecordTypeCNAME, target) e.Labels[endpoint.OwnerLabelKey] = ownerID e.Labels[endpoint.ResourceLabelKey] = resource From ea14e6b6fa023f06f93d37536e9ac39507855f93 Mon Sep 17 00:00:00 2001 From: ivan katliarchuk Date: Fri, 20 Feb 2026 08:51:31 +0000 Subject: [PATCH 7/9] chore(linter): enable unparam Signed-off-by: ivan katliarchuk --- provider/azure/azure_privatedns_test.go | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/provider/azure/azure_privatedns_test.go b/provider/azure/azure_privatedns_test.go index 0e399d3eb6..df37423df1 100644 --- a/provider/azure/azure_privatedns_test.go +++ b/provider/azure/azure_privatedns_test.go @@ -256,11 +256,11 @@ func TestAzurePrivateDNSRecord(t *testing.T) { createPrivateMockRecordSet(endpoint.RecordTypeA, "123.123.123.122"), createPrivateMockRecordSet(endpoint.RecordTypeAAAA, "2001::123:123:123:122"), createPrivateMockRecordSet(endpoint.RecordTypeTXT, "heritage=external-dns,external-dns/owner=default"), - createPrivateMockRecordSetWithTTL("nginx", endpoint.RecordTypeA, "123.123.123.123", 3600), - createPrivateMockRecordSetWithTTL("nginx", endpoint.RecordTypeAAAA, "2001::123:123:123:123", 3600), - createPrivateMockRecordSetWithTTL("nginx", endpoint.RecordTypeTXT, "heritage=external-dns,external-dns/owner=default", recordTTL), - createPrivateMockRecordSetWithTTL("hack", endpoint.RecordTypeCNAME, "hack.azurewebsites.net", 10), - createPrivateMockRecordSetWithTTL("mail", endpoint.RecordTypeMX, "10 example.com", 4000), + createPrivateMockRecordSetWithNameAndTTL("nginx", endpoint.RecordTypeA, "123.123.123.123", 3600), + createPrivateMockRecordSetWithNameAndTTL("nginx", endpoint.RecordTypeAAAA, "2001::123:123:123:123", 3600), + createPrivateMockRecordSetWithNameAndTTL("nginx", endpoint.RecordTypeTXT, "heritage=external-dns,external-dns/owner=default", recordTTL), + createPrivateMockRecordSetWithNameAndTTL("hack", endpoint.RecordTypeCNAME, "hack.azurewebsites.net", 10), + createPrivateMockRecordSetWithNameAndTTL("mail", endpoint.RecordTypeMX, "10 example.com", 4000), }, 3) actual, err := provider.Records(context.Background()) @@ -294,8 +294,8 @@ func TestAzurePrivateDNSMultiRecord(t *testing.T) { createPrivateMockRecordSet(endpoint.RecordTypeTXT, "heritage=external-dns,external-dns/owner=default"), createPrivateMockRecordSetMultiWithTTL("nginx", endpoint.RecordTypeA, 3600, "123.123.123.123", "234.234.234.234"), createPrivateMockRecordSetMultiWithTTL("nginx", endpoint.RecordTypeAAAA, 3600, "2001::123:123:123:123", "2001::234:234:234:234"), - createPrivateMockRecordSetWithTTL("nginx", endpoint.RecordTypeTXT, "heritage=external-dns,external-dns/owner=default", recordTTL), - createPrivateMockRecordSetWithTTL("hack", endpoint.RecordTypeCNAME, "hack.azurewebsites.net", 10), + createPrivateMockRecordSetWithNameAndTTL("nginx", endpoint.RecordTypeTXT, "heritage=external-dns,external-dns/owner=default", recordTTL), + createPrivateMockRecordSetWithNameAndTTL("hack", endpoint.RecordTypeCNAME, "hack.azurewebsites.net", 10), createPrivateMockRecordSetMultiWithTTL("mail", endpoint.RecordTypeMX, 4000, "10 example.com", "20 backup.example.com"), }, 3) @@ -442,11 +442,11 @@ func TestAzurePrivateDNSNameFilter(t *testing.T) { createPrivateMockRecordSet("SOA", "Email: azuredns-hostmaster.microsoft.com"), createPrivateMockRecordSet(endpoint.RecordTypeA, "123.123.123.122"), createPrivateMockRecordSet(endpoint.RecordTypeTXT, "heritage=external-dns,external-dns/owner=default"), - createPrivateMockRecordSetWithTTL("test.nginx", endpoint.RecordTypeA, "123.123.123.123", 3600), - createPrivateMockRecordSetWithTTL("nginx", endpoint.RecordTypeA, "123.123.123.123", 3600), - createPrivateMockRecordSetWithTTL("nginx", endpoint.RecordTypeTXT, "heritage=external-dns,external-dns/owner=default", recordTTL), - createPrivateMockRecordSetWithTTL("mail.nginx", endpoint.RecordTypeMX, "20 example.com", recordTTL), - createPrivateMockRecordSetWithTTL("hack", endpoint.RecordTypeCNAME, "hack.azurewebsites.net", 10), + createPrivateMockRecordSetWithNameAndTTL("test.nginx", endpoint.RecordTypeA, "123.123.123.123", 3600), + createPrivateMockRecordSetWithNameAndTTL("nginx", endpoint.RecordTypeA, "123.123.123.123", 3600), + createPrivateMockRecordSetWithNameAndTTL("nginx", endpoint.RecordTypeTXT, "heritage=external-dns,external-dns/owner=default", recordTTL), + createPrivateMockRecordSetWithNameAndTTL("mail.nginx", endpoint.RecordTypeMX, "20 example.com", recordTTL), + createPrivateMockRecordSetWithNameAndTTL("hack", endpoint.RecordTypeCNAME, "hack.azurewebsites.net", 10), }, 3) ctx := context.Background() From 92972bbc56960a78477fcdd4d20e20da456007df Mon Sep 17 00:00:00 2001 From: ivan katliarchuk Date: Fri, 20 Feb 2026 09:17:56 +0000 Subject: [PATCH 8/9] chore(linter): enable unparam Signed-off-by: ivan katliarchuk --- registry/awssd/registry_test.go | 17 ++- registry/txt/registry_test.go | 209 ++++++++++++++++++-------------- 2 files changed, 128 insertions(+), 98 deletions(-) diff --git a/registry/awssd/registry_test.go b/registry/awssd/registry_test.go index 0e2182cfe8..67435e5e75 100644 --- a/registry/awssd/registry_test.go +++ b/registry/awssd/registry_test.go @@ -111,16 +111,19 @@ func TestAWSSDRegistryTest_Records(t *testing.T) { func TestAWSSDRegistry_Records_ApplyChanges(t *testing.T) { changes := &plan.Changes{ Create: []*endpoint.Endpoint{ - newEndpointWithOwner("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", endpoint.RecordTypeCNAME), + endpoint.NewEndpoint("new-record-1.test-zone.example.org", endpoint.RecordTypeCNAME, "new-loadbalancer-1.lb.com"), }, Delete: []*endpoint.Endpoint{ - newEndpointWithOwner("foobar.test-zone.example.org", "1.2.3.4", endpoint.RecordTypeA), + endpoint.NewEndpoint("foobar.test-zone.example.org", endpoint.RecordTypeA, "1.2.3.4"). + WithLabel(endpoint.OwnerLabelKey, "owner"), }, UpdateNew: []*endpoint.Endpoint{ - newEndpointWithOwner("tar.test-zone.example.org", "new-tar.loadbalancer.com", endpoint.RecordTypeCNAME), + endpoint.NewEndpoint("tar.test-zone.example.org", endpoint.RecordTypeCNAME, "new-tar.loadbalancer.com"). + WithLabel(endpoint.OwnerLabelKey, "owner"), }, UpdateOld: []*endpoint.Endpoint{ - newEndpointWithOwner("tar.test-zone.example.org", "tar.loadbalancer.com", endpoint.RecordTypeCNAME), + endpoint.NewEndpoint("tar.test-zone.example.org", endpoint.RecordTypeCNAME, "tar.loadbalancer.com"). + WithLabel(endpoint.OwnerLabelKey, "owner"), }, } expected := &plan.Changes{ @@ -165,9 +168,3 @@ func newEndpointWithOwnerAndDescription(dnsName, target, recordType, ownerID str e.Labels[endpoint.AWSSDDescriptionLabel] = description return e } - -func newEndpoint(dnsName, target, recordType string) *endpoint.Endpoint { - e := endpoint.NewEndpoint(dnsName, recordType, target) - e.Labels[endpoint.OwnerLabelKey] = "owner" - return e -} diff --git a/registry/txt/registry_test.go b/registry/txt/registry_test.go index ae8e9948ed..7a82b4bcda 100644 --- a/registry/txt/registry_test.go +++ b/registry/txt/registry_test.go @@ -99,8 +99,9 @@ func testTXTRegistryRecords(t *testing.T) { func testTXTRegistryRecordsPrefixed(t *testing.T) { ctx := context.Background() p := inmemory.NewInMemoryProvider() - p.CreateZone(testZone) - p.ApplyChanges(ctx, &plan.Changes{ + err := p.CreateZone(testZone) + require.NoError(t, err) + err = p.ApplyChanges(ctx, &plan.Changes{ Create: []*endpoint.Endpoint{ newEndpointWithOwnerAndLabels("foo.test-zone.example.org", "foo.loadbalancer.com", endpoint.RecordTypeCNAME, "", endpoint.Labels{"foo": "somefoo"}), newEndpointWithOwnerAndLabels("bar.test-zone.example.org", "my-domain.com", endpoint.RecordTypeCNAME, "", endpoint.Labels{"bar": "somebar"}), @@ -134,6 +135,7 @@ func testTXTRegistryRecordsPrefixed(t *testing.T) { newEndpointWithOwner("txt.sip1.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", endpoint.RecordTypeTXT, ""), }, }) + require.NoError(t, err) expectedRecords := []*endpoint.Endpoint{ { DNSName: "foo.test-zone.example.org", @@ -272,8 +274,9 @@ func testTXTRegistryRecordsPrefixed(t *testing.T) { func testTXTRegistryRecordsSuffixed(t *testing.T) { ctx := context.Background() p := inmemory.NewInMemoryProvider() - p.CreateZone(testZone) - p.ApplyChanges(ctx, &plan.Changes{ + err := p.CreateZone(testZone) + require.NoError(t, err) + err = p.ApplyChanges(ctx, &plan.Changes{ Create: []*endpoint.Endpoint{ newEndpointWithOwnerAndLabels("foo.test-zone.example.org", "foo.loadbalancer.com", endpoint.RecordTypeCNAME, "", endpoint.Labels{"foo": "somefoo"}), newEndpointWithOwnerAndLabels("bar.test-zone.example.org", "my-domain.com", endpoint.RecordTypeCNAME, "", endpoint.Labels{"bar": "somebar"}), @@ -305,6 +308,7 @@ func testTXTRegistryRecordsSuffixed(t *testing.T) { newEndpointWithOwner("sip1-txt.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", endpoint.RecordTypeTXT, ""), }, }) + require.NoError(t, err) expectedRecords := []*endpoint.Endpoint{ { DNSName: "foo.test-zone.example.org", @@ -435,8 +439,9 @@ func testTXTRegistryRecordsSuffixed(t *testing.T) { func testTXTRegistryRecordsNoPrefix(t *testing.T) { p := inmemory.NewInMemoryProvider() ctx := context.Background() - p.CreateZone(testZone) - p.ApplyChanges(ctx, &plan.Changes{ + err := p.CreateZone(testZone) + require.NoError(t, err) + err = p.ApplyChanges(ctx, &plan.Changes{ Create: []*endpoint.Endpoint{ newEndpointWithOwner("foo.test-zone.example.org", "foo.loadbalancer.com", endpoint.RecordTypeCNAME, ""), newEndpointWithOwner("bar.test-zone.example.org", "my-domain.com", endpoint.RecordTypeCNAME, ""), @@ -466,6 +471,7 @@ func testTXTRegistryRecordsNoPrefix(t *testing.T) { newEndpointWithOwner("sip1.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", endpoint.RecordTypeTXT, ""), }, }) + require.NoError(t, err) expectedRecords := []*endpoint.Endpoint{ { DNSName: "foo.test-zone.example.org", @@ -584,8 +590,9 @@ func testTXTRegistryRecordsNoPrefix(t *testing.T) { func testTXTRegistryRecordsPrefixedTemplated(t *testing.T) { ctx := context.Background() p := inmemory.NewInMemoryProvider() - p.CreateZone(testZone) - p.ApplyChanges(ctx, &plan.Changes{ + err := p.CreateZone(testZone) + require.NoError(t, err) + err = p.ApplyChanges(ctx, &plan.Changes{ Create: []*endpoint.Endpoint{ newEndpointWithOwner("foo.test-zone.example.org", "1.1.1.1", endpoint.RecordTypeA, ""), newEndpointWithOwner("txt-a.foo.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", endpoint.RecordTypeTXT, ""), @@ -593,6 +600,7 @@ func testTXTRegistryRecordsPrefixedTemplated(t *testing.T) { newEndpointWithOwner("txt-mx.mail.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", endpoint.RecordTypeTXT, ""), }, }) + require.NoError(t, err) expectedRecords := []*endpoint.Endpoint{ { DNSName: "foo.test-zone.example.org", @@ -626,8 +634,9 @@ func testTXTRegistryRecordsPrefixedTemplated(t *testing.T) { func testTXTRegistryRecordsSuffixedTemplated(t *testing.T) { ctx := context.Background() p := inmemory.NewInMemoryProvider() - p.CreateZone(testZone) - p.ApplyChanges(ctx, &plan.Changes{ + err := p.CreateZone(testZone) + require.NoError(t, err) + err = p.ApplyChanges(ctx, &plan.Changes{ Create: []*endpoint.Endpoint{ newEndpointWithOwner("bar.test-zone.example.org", "8.8.8.8", endpoint.RecordTypeCNAME, ""), newEndpointWithOwner("bartxtcname.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", endpoint.RecordTypeTXT, ""), @@ -635,6 +644,7 @@ func testTXTRegistryRecordsSuffixedTemplated(t *testing.T) { newEndpointWithOwner("mailtxt.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", endpoint.RecordTypeTXT, ""), }, }) + require.NoError(t, err) expectedRecords := []*endpoint.Endpoint{ { DNSName: "bar.test-zone.example.org", @@ -676,7 +686,7 @@ func testTXTRegistryApplyChanges(t *testing.T) { func testTXTRegistryApplyChangesWithPrefix(t *testing.T) { p := inmemory.NewInMemoryProvider() _ = p.CreateZone(testZone) - ctxEndpoints := []*endpoint.Endpoint{} + var ctxEndpoints []*endpoint.Endpoint ctx := context.WithValue(context.Background(), provider.RecordsContextKey, ctxEndpoints) p.OnApplyChanges = func(ctx context.Context, _ *plan.Changes) { assert.Equal(t, ctxEndpoints, ctx.Value(provider.RecordsContextKey)) @@ -706,17 +716,17 @@ func testTXTRegistryApplyChangesWithPrefix(t *testing.T) { changes := &plan.Changes{ Create: []*endpoint.Endpoint{ - newEndpointWithOwnerResource("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", "owner", "ingress/default/my-ingress"), - newEndpointWithOwnerResource("multiple.test-zone.example.org", "lb3.loadbalancer.com", "owner", "ingress/default/my-ingress").WithSetIdentifier("test-set-3"), - newEndpointWithOwnerResource("example", "new-loadbalancer-1.lb.com", "owner", "ingress/default/my-ingress"), + newCNAMEEndpointWithOwnerResource("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", "owner", "ingress/default/my-ingress"), + newCNAMEEndpointWithOwnerResource("multiple.test-zone.example.org", "lb3.loadbalancer.com", "owner", "ingress/default/my-ingress").WithSetIdentifier("test-set-3"), + newCNAMEEndpointWithOwnerResource("example", "new-loadbalancer-1.lb.com", "owner", "ingress/default/my-ingress"), }, Delete: []*endpoint.Endpoint{ newEndpointWithOwner("foobar.test-zone.example.org", "foobar.loadbalancer.com", endpoint.RecordTypeCNAME, "owner"), newEndpointWithOwner("multiple.test-zone.example.org", "lb1.loadbalancer.com", endpoint.RecordTypeCNAME, "owner").WithSetIdentifier("test-set-1"), }, UpdateNew: []*endpoint.Endpoint{ - newEndpointWithOwnerResource("tar.test-zone.example.org", "new-tar.loadbalancer.com", "owner", "ingress/default/my-ingress-2"), - newEndpointWithOwnerResource("multiple.test-zone.example.org", "new.loadbalancer.com", "owner", "ingress/default/my-ingress-2").WithSetIdentifier("test-set-2"), + newCNAMEEndpointWithOwnerResource("tar.test-zone.example.org", "new-tar.loadbalancer.com", "owner", "ingress/default/my-ingress-2"), + newCNAMEEndpointWithOwnerResource("multiple.test-zone.example.org", "new.loadbalancer.com", "owner", "ingress/default/my-ingress-2").WithSetIdentifier("test-set-2"), }, UpdateOld: []*endpoint.Endpoint{ newEndpointWithOwner("tar.test-zone.example.org", "tar.loadbalancer.com", endpoint.RecordTypeCNAME, "owner"), @@ -725,12 +735,11 @@ func testTXTRegistryApplyChangesWithPrefix(t *testing.T) { } expected := &plan.Changes{ Create: []*endpoint.Endpoint{ - newEndpointWithOwnerResource("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", "owner", "ingress/default/my-ingress"), - + newCNAMEEndpointWithOwnerResource("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", "owner", "ingress/default/my-ingress"), newTXTEndpointWithOwnedRecord("txt.cname-new-record-1.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner,external-dns/resource=ingress/default/my-ingress\"", "new-record-1.test-zone.example.org"), - newEndpointWithOwnerResource("multiple.test-zone.example.org", "lb3.loadbalancer.com", "owner", "ingress/default/my-ingress").WithSetIdentifier("test-set-3"), + newCNAMEEndpointWithOwnerResource("multiple.test-zone.example.org", "lb3.loadbalancer.com", "owner", "ingress/default/my-ingress").WithSetIdentifier("test-set-3"), newTXTEndpointWithOwnedRecord("txt.cname-multiple.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner,external-dns/resource=ingress/default/my-ingress\"", "multiple.test-zone.example.org").WithSetIdentifier("test-set-3"), - newEndpointWithOwnerResource("example", "new-loadbalancer-1.lb.com", "owner", "ingress/default/my-ingress"), + newCNAMEEndpointWithOwnerResource("example", "new-loadbalancer-1.lb.com", "owner", "ingress/default/my-ingress"), newTXTEndpointWithOwnedRecord("txt.cname-example", "\"heritage=external-dns,external-dns/owner=owner,external-dns/resource=ingress/default/my-ingress\"", "example"), }, Delete: []*endpoint.Endpoint{ @@ -740,9 +749,9 @@ func testTXTRegistryApplyChangesWithPrefix(t *testing.T) { newTXTEndpointWithOwnedRecord("txt.cname-multiple.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", "multiple.test-zone.example.org").WithSetIdentifier("test-set-1"), }, UpdateNew: []*endpoint.Endpoint{ - newEndpointWithOwnerResource("tar.test-zone.example.org", "new-tar.loadbalancer.com", "owner", "ingress/default/my-ingress-2"), + newCNAMEEndpointWithOwnerResource("tar.test-zone.example.org", "new-tar.loadbalancer.com", "owner", "ingress/default/my-ingress-2"), newTXTEndpointWithOwnedRecord("txt.cname-tar.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner,external-dns/resource=ingress/default/my-ingress-2\"", "tar.test-zone.example.org"), - newEndpointWithOwnerResource("multiple.test-zone.example.org", "new.loadbalancer.com", "owner", "ingress/default/my-ingress-2").WithSetIdentifier("test-set-2"), + newCNAMEEndpointWithOwnerResource("multiple.test-zone.example.org", "new.loadbalancer.com", "owner", "ingress/default/my-ingress-2").WithSetIdentifier("test-set-2"), newTXTEndpointWithOwnedRecord("txt.cname-multiple.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner,external-dns/resource=ingress/default/my-ingress-2\"", "multiple.test-zone.example.org").WithSetIdentifier("test-set-2"), }, UpdateOld: []*endpoint.Endpoint{ @@ -774,8 +783,9 @@ func testTXTRegistryApplyChangesWithPrefix(t *testing.T) { func testTXTRegistryApplyChangesWithTemplatedPrefix(t *testing.T) { p := inmemory.NewInMemoryProvider() - p.CreateZone(testZone) - ctxEndpoints := []*endpoint.Endpoint{} + err := p.CreateZone(testZone) + require.NoError(t, err) + var ctxEndpoints []*endpoint.Endpoint ctx := context.WithValue(context.Background(), provider.RecordsContextKey, ctxEndpoints) p.OnApplyChanges = func(ctx context.Context, _ *plan.Changes) { assert.Equal(t, ctxEndpoints, ctx.Value(provider.RecordsContextKey)) @@ -786,7 +796,7 @@ func testTXTRegistryApplyChangesWithTemplatedPrefix(t *testing.T) { r, _ := NewTXTRegistry(p, "prefix%{record_type}.", "", "owner-1", time.Hour, "", []string{}, []string{}, false, nil, "") changes := &plan.Changes{ Create: []*endpoint.Endpoint{ - newEndpointWithOwnerResource("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", "owner-1", "ingress/default/my-ingress"), + newCNAMEEndpointWithOwnerResource("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", "owner-1", "ingress/default/my-ingress"), }, Delete: []*endpoint.Endpoint{}, UpdateOld: []*endpoint.Endpoint{}, @@ -794,7 +804,7 @@ func testTXTRegistryApplyChangesWithTemplatedPrefix(t *testing.T) { } expected := &plan.Changes{ Create: []*endpoint.Endpoint{ - newEndpointWithOwnerResource("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", "owner-1", "ingress/default/my-ingress"), + newCNAMEEndpointWithOwnerResource("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", "owner-1", "ingress/default/my-ingress"), newTXTEndpointWithOwnedRecord("prefixcname.new-record-1.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner-1,external-dns/resource=ingress/default/my-ingress\"", "new-record-1.test-zone.example.org"), }, } @@ -814,14 +824,14 @@ func testTXTRegistryApplyChangesWithTemplatedPrefix(t *testing.T) { assert.True(t, testutils.SamePlanChanges(mGot, mExpected)) assert.Nil(t, ctx.Value(provider.RecordsContextKey)) } - err := r.ApplyChanges(ctx, changes) + err = r.ApplyChanges(ctx, changes) require.NoError(t, err) } func testTXTRegistryApplyChangesWithTemplatedSuffix(t *testing.T) { p := inmemory.NewInMemoryProvider() _ = p.CreateZone(testZone) - ctxEndpoints := []*endpoint.Endpoint{} + var ctxEndpoints []*endpoint.Endpoint ctx := context.WithValue(context.Background(), provider.RecordsContextKey, ctxEndpoints) p.OnApplyChanges = func(ctx context.Context, _ *plan.Changes) { assert.Equal(t, ctxEndpoints, ctx.Value(provider.RecordsContextKey)) @@ -829,7 +839,7 @@ func testTXTRegistryApplyChangesWithTemplatedSuffix(t *testing.T) { r, _ := NewTXTRegistry(p, "", "-%{record_type}suffix", "owner-2", time.Hour, "", []string{}, []string{}, false, nil, "") changes := &plan.Changes{ Create: []*endpoint.Endpoint{ - newEndpointWithOwnerResource("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", "owner-2", "ingress/default/my-ingress"), + newCNAMEEndpointWithOwnerResource("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", "owner-2", "ingress/default/my-ingress"), }, Delete: []*endpoint.Endpoint{}, UpdateOld: []*endpoint.Endpoint{}, @@ -837,7 +847,7 @@ func testTXTRegistryApplyChangesWithTemplatedSuffix(t *testing.T) { } expected := &plan.Changes{ Create: []*endpoint.Endpoint{ - newEndpointWithOwnerResource("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", "owner-2", "ingress/default/my-ingress"), + newCNAMEEndpointWithOwnerResource("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", "owner-2", "ingress/default/my-ingress"), newTXTEndpointWithOwnedRecord("new-record-1-cnamesuffix.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner-2,external-dns/resource=ingress/default/my-ingress\"", "new-record-1.test-zone.example.org"), }, } @@ -863,13 +873,14 @@ func testTXTRegistryApplyChangesWithTemplatedSuffix(t *testing.T) { func testTXTRegistryApplyChangesWithSuffix(t *testing.T) { p := inmemory.NewInMemoryProvider() - p.CreateZone(testZone) - ctxEndpoints := []*endpoint.Endpoint{} + err := p.CreateZone(testZone) + require.NoError(t, err) + var ctxEndpoints []*endpoint.Endpoint ctx := context.WithValue(context.Background(), provider.RecordsContextKey, ctxEndpoints) p.OnApplyChanges = func(ctx context.Context, _ *plan.Changes) { assert.Equal(t, ctxEndpoints, ctx.Value(provider.RecordsContextKey)) } - p.ApplyChanges(ctx, &plan.Changes{ + err = p.ApplyChanges(ctx, &plan.Changes{ Create: []*endpoint.Endpoint{ newEndpointWithOwner("foo.test-zone.example.org", "foo.loadbalancer.com", endpoint.RecordTypeCNAME, ""), newEndpointWithOwner("bar.test-zone.example.org", "my-domain.com", endpoint.RecordTypeCNAME, ""), @@ -891,22 +902,23 @@ func testTXTRegistryApplyChangesWithSuffix(t *testing.T) { newEndpointWithOwner("cname-multiple-txt.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", endpoint.RecordTypeTXT, "").WithSetIdentifier("test-set-2"), }, }) + require.NoError(t, err) r, _ := NewTXTRegistry(p, "", "-txt", "owner", time.Hour, "wildcard", []string{}, []string{}, false, nil, "") changes := &plan.Changes{ Create: []*endpoint.Endpoint{ - newEndpointWithOwnerResource("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", "owner", "ingress/default/my-ingress"), - newEndpointWithOwnerResource("multiple.test-zone.example.org", "lb3.loadbalancer.com", "owner", "ingress/default/my-ingress").WithSetIdentifier("test-set-3"), - newEndpointWithOwnerResource("example", "new-loadbalancer-1.lb.com", "owner", "ingress/default/my-ingress"), - newEndpointWithOwnerResource("*.wildcard.test-zone.example.org", "new-loadbalancer-1.lb.com", "owner", "ingress/default/my-ingress"), + newCNAMEEndpointWithOwnerResource("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", "owner", "ingress/default/my-ingress"), + newCNAMEEndpointWithOwnerResource("multiple.test-zone.example.org", "lb3.loadbalancer.com", "owner", "ingress/default/my-ingress").WithSetIdentifier("test-set-3"), + newCNAMEEndpointWithOwnerResource("example", "new-loadbalancer-1.lb.com", "owner", "ingress/default/my-ingress"), + newCNAMEEndpointWithOwnerResource("*.wildcard.test-zone.example.org", "new-loadbalancer-1.lb.com", "owner", "ingress/default/my-ingress"), }, Delete: []*endpoint.Endpoint{ newEndpointWithOwner("foobar.test-zone.example.org", "foobar.loadbalancer.com", endpoint.RecordTypeCNAME, "owner"), newEndpointWithOwner("multiple.test-zone.example.org", "lb1.loadbalancer.com", endpoint.RecordTypeCNAME, "owner").WithSetIdentifier("test-set-1"), }, UpdateNew: []*endpoint.Endpoint{ - newEndpointWithOwnerResource("tar.test-zone.example.org", "new-tar.loadbalancer.com", "owner", "ingress/default/my-ingress-2"), - newEndpointWithOwnerResource("multiple.test-zone.example.org", "new.loadbalancer.com", "owner", "ingress/default/my-ingress-2").WithSetIdentifier("test-set-2"), + newCNAMEEndpointWithOwnerResource("tar.test-zone.example.org", "new-tar.loadbalancer.com", "owner", "ingress/default/my-ingress-2"), + newCNAMEEndpointWithOwnerResource("multiple.test-zone.example.org", "new.loadbalancer.com", "owner", "ingress/default/my-ingress-2").WithSetIdentifier("test-set-2"), }, UpdateOld: []*endpoint.Endpoint{ newEndpointWithOwner("tar.test-zone.example.org", "tar.loadbalancer.com", endpoint.RecordTypeCNAME, "owner"), @@ -915,13 +927,13 @@ func testTXTRegistryApplyChangesWithSuffix(t *testing.T) { } expected := &plan.Changes{ Create: []*endpoint.Endpoint{ - newEndpointWithOwnerResource("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", "owner", "ingress/default/my-ingress"), + newCNAMEEndpointWithOwnerResource("new-record-1.test-zone.example.org", "new-loadbalancer-1.lb.com", "owner", "ingress/default/my-ingress"), newTXTEndpointWithOwnedRecord("cname-new-record-1-txt.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner,external-dns/resource=ingress/default/my-ingress\"", "new-record-1.test-zone.example.org"), - newEndpointWithOwnerResource("multiple.test-zone.example.org", "lb3.loadbalancer.com", "owner", "ingress/default/my-ingress").WithSetIdentifier("test-set-3"), + newCNAMEEndpointWithOwnerResource("multiple.test-zone.example.org", "lb3.loadbalancer.com", "owner", "ingress/default/my-ingress").WithSetIdentifier("test-set-3"), newTXTEndpointWithOwnedRecord("cname-multiple-txt.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner,external-dns/resource=ingress/default/my-ingress\"", "multiple.test-zone.example.org").WithSetIdentifier("test-set-3"), - newEndpointWithOwnerResource("example", "new-loadbalancer-1.lb.com", "owner", "ingress/default/my-ingress"), + newCNAMEEndpointWithOwnerResource("example", "new-loadbalancer-1.lb.com", "owner", "ingress/default/my-ingress"), newTXTEndpointWithOwnedRecord("cname-example-txt", "\"heritage=external-dns,external-dns/owner=owner,external-dns/resource=ingress/default/my-ingress\"", "example"), - newEndpointWithOwnerResource("*.wildcard.test-zone.example.org", "new-loadbalancer-1.lb.com", "owner", "ingress/default/my-ingress"), + newCNAMEEndpointWithOwnerResource("*.wildcard.test-zone.example.org", "new-loadbalancer-1.lb.com", "owner", "ingress/default/my-ingress"), newTXTEndpointWithOwnedRecord("cname-wildcard-txt.wildcard.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner,external-dns/resource=ingress/default/my-ingress\"", "*.wildcard.test-zone.example.org"), }, Delete: []*endpoint.Endpoint{ @@ -931,9 +943,9 @@ func testTXTRegistryApplyChangesWithSuffix(t *testing.T) { newTXTEndpointWithOwnedRecord("cname-multiple-txt.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", "multiple.test-zone.example.org").WithSetIdentifier("test-set-1"), }, UpdateNew: []*endpoint.Endpoint{ - newEndpointWithOwnerResource("tar.test-zone.example.org", "new-tar.loadbalancer.com", "owner", "ingress/default/my-ingress-2"), + newCNAMEEndpointWithOwnerResource("tar.test-zone.example.org", "new-tar.loadbalancer.com", "owner", "ingress/default/my-ingress-2"), newTXTEndpointWithOwnedRecord("cname-tar-txt.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner,external-dns/resource=ingress/default/my-ingress-2\"", "tar.test-zone.example.org"), - newEndpointWithOwnerResource("multiple.test-zone.example.org", "new.loadbalancer.com", "owner", "ingress/default/my-ingress-2").WithSetIdentifier("test-set-2"), + newCNAMEEndpointWithOwnerResource("multiple.test-zone.example.org", "new.loadbalancer.com", "owner", "ingress/default/my-ingress-2").WithSetIdentifier("test-set-2"), newTXTEndpointWithOwnedRecord("cname-multiple-txt.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner,external-dns/resource=ingress/default/my-ingress-2\"", "multiple.test-zone.example.org").WithSetIdentifier("test-set-2"), }, UpdateOld: []*endpoint.Endpoint{ @@ -959,19 +971,20 @@ func testTXTRegistryApplyChangesWithSuffix(t *testing.T) { assert.True(t, testutils.SamePlanChanges(mGot, mExpected)) assert.Nil(t, ctx.Value(provider.RecordsContextKey)) } - err := r.ApplyChanges(ctx, changes) + err = r.ApplyChanges(ctx, changes) require.NoError(t, err) } func testTXTRegistryApplyChangesNoPrefix(t *testing.T) { p := inmemory.NewInMemoryProvider() - p.CreateZone(testZone) - ctxEndpoints := []*endpoint.Endpoint{} + err := p.CreateZone(testZone) + require.NoError(t, err) + var ctxEndpoints []*endpoint.Endpoint ctx := context.WithValue(context.Background(), provider.RecordsContextKey, ctxEndpoints) p.OnApplyChanges = func(ctx context.Context, _ *plan.Changes) { assert.Equal(t, ctxEndpoints, ctx.Value(provider.RecordsContextKey)) } - p.ApplyChanges(ctx, &plan.Changes{ + err = p.ApplyChanges(ctx, &plan.Changes{ Create: []*endpoint.Endpoint{ newEndpointWithOwner("foo.test-zone.example.org", "foo.loadbalancer.com", endpoint.RecordTypeCNAME, ""), newEndpointWithOwner("bar.test-zone.example.org", "my-domain.com", endpoint.RecordTypeCNAME, ""), @@ -985,6 +998,7 @@ func testTXTRegistryApplyChangesNoPrefix(t *testing.T) { newEndpointWithOwner("cname-foobar.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", endpoint.RecordTypeTXT, ""), }, }) + require.NoError(t, err) r, _ := NewTXTRegistry(p, "", "", "owner", time.Hour, "", []string{}, []string{}, false, nil, "") changes := &plan.Changes{ @@ -1035,7 +1049,7 @@ func testTXTRegistryApplyChangesNoPrefix(t *testing.T) { assert.True(t, testutils.SamePlanChanges(mGot, mExpected)) assert.Nil(t, ctx.Value(provider.RecordsContextKey)) } - err := r.ApplyChanges(ctx, changes) + err = r.ApplyChanges(ctx, changes) require.NoError(t, err) } @@ -1047,8 +1061,9 @@ func testTXTRegistryMissingRecords(t *testing.T) { func testTXTRegistryMissingRecordsNoPrefix(t *testing.T) { ctx := context.Background() p := inmemory.NewInMemoryProvider() - p.CreateZone(testZone) - p.ApplyChanges(ctx, &plan.Changes{ + err := p.CreateZone(testZone) + require.NoError(t, err) + err = p.ApplyChanges(ctx, &plan.Changes{ Create: []*endpoint.Endpoint{ newEndpointWithOwner("oldformat.test-zone.example.org", "foo.loadbalancer.com", endpoint.RecordTypeCNAME, ""), newEndpointWithOwner("oldformat.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", endpoint.RecordTypeTXT, ""), @@ -1066,6 +1081,7 @@ func testTXTRegistryMissingRecordsNoPrefix(t *testing.T) { newEndpointWithOwner("this-is-a-63-characters-long-label-that-we-do-expect-will-work.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", endpoint.RecordTypeTXT, ""), }, }) + require.NoError(t, err) expectedRecords := []*endpoint.Endpoint{ { DNSName: "oldformat.test-zone.example.org", @@ -1152,8 +1168,9 @@ func testTXTRegistryMissingRecordsNoPrefix(t *testing.T) { func testTXTRegistryMissingRecordsWithPrefix(t *testing.T) { ctx := context.Background() p := inmemory.NewInMemoryProvider() - p.CreateZone(testZone) - p.ApplyChanges(ctx, &plan.Changes{ + err := p.CreateZone(testZone) + require.NoError(t, err) + err = p.ApplyChanges(ctx, &plan.Changes{ Create: []*endpoint.Endpoint{ newEndpointWithOwner("oldformat.test-zone.example.org", "foo.loadbalancer.com", endpoint.RecordTypeCNAME, ""), newEndpointWithOwner("txt.oldformat.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", endpoint.RecordTypeTXT, ""), @@ -1171,6 +1188,7 @@ func testTXTRegistryMissingRecordsWithPrefix(t *testing.T) { endpoint.NewEndpoint("unmanaged2.test-zone.example.org", endpoint.RecordTypeCNAME, "unmanaged2.loadbalancer.com"), }, }) + require.NoError(t, err) expectedRecords := []*endpoint.Endpoint{ { DNSName: "oldformat.test-zone.example.org", @@ -1328,13 +1346,14 @@ func TestCacheMethods(t *testing.T) { func TestNewTXTScheme(t *testing.T) { p := inmemory.NewInMemoryProvider() - p.CreateZone(testZone) - ctxEndpoints := []*endpoint.Endpoint{} + err := p.CreateZone(testZone) + require.NoError(t, err) + var ctxEndpoints []*endpoint.Endpoint ctx := context.WithValue(context.Background(), provider.RecordsContextKey, ctxEndpoints) p.OnApplyChanges = func(ctx context.Context, _ *plan.Changes) { assert.Equal(t, ctxEndpoints, ctx.Value(provider.RecordsContextKey)) } - p.ApplyChanges(ctx, &plan.Changes{ + err = p.ApplyChanges(ctx, &plan.Changes{ Create: []*endpoint.Endpoint{ newEndpointWithOwner("foo.test-zone.example.org", "foo.loadbalancer.com", endpoint.RecordTypeCNAME, ""), newEndpointWithOwner("bar.test-zone.example.org", "my-domain.com", endpoint.RecordTypeCNAME, ""), @@ -1348,7 +1367,9 @@ func TestNewTXTScheme(t *testing.T) { newEndpointWithOwner("cname-foobar.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=owner\"", endpoint.RecordTypeTXT, ""), }, }) - r, _ := NewTXTRegistry(p, "", "", "owner", time.Hour, "", []string{}, []string{}, false, nil, "") + require.NoError(t, err) + r, err := NewTXTRegistry(p, "", "", "owner", time.Hour, "", []string{}, []string{}, false, nil, "") + require.NoError(t, err) changes := &plan.Changes{ Create: []*endpoint.Endpoint{ @@ -1395,7 +1416,7 @@ func TestNewTXTScheme(t *testing.T) { assert.True(t, testutils.SamePlanChanges(mGot, mExpected)) assert.Nil(t, ctx.Value(provider.RecordsContextKey)) } - err := r.ApplyChanges(ctx, changes) + err = r.ApplyChanges(ctx, changes) require.NoError(t, err) } @@ -1412,7 +1433,8 @@ func TestGenerateTXT(t *testing.T) { }, } p := inmemory.NewInMemoryProvider() - p.CreateZone(testZone) + err := p.CreateZone(testZone) + require.NoError(t, err) r, _ := NewTXTRegistry(p, "", "", "owner", time.Hour, "", []string{}, []string{}, false, nil, "") gotTXT := r.generateTXTRecord(record) assert.Equal(t, expectedTXT, gotTXT) @@ -1431,7 +1453,8 @@ func TestGenerateTXTWithMigration(t *testing.T) { }, } p := inmemory.NewInMemoryProvider() - p.CreateZone(testZone) + err := p.CreateZone(testZone) + require.NoError(t, err) r, _ := NewTXTRegistry(p, "", "", "owner", time.Hour, "", []string{}, []string{}, false, nil, "") gotTXTBeforeMigration := r.generateTXTRecord(record) assert.Equal(t, expectedTXTBeforeMigration, gotTXTBeforeMigration) @@ -1466,7 +1489,8 @@ func TestGenerateTXTForAAAA(t *testing.T) { }, } p := inmemory.NewInMemoryProvider() - p.CreateZone(testZone) + err := p.CreateZone(testZone) + require.NoError(t, err) r, _ := NewTXTRegistry(p, "", "", "owner", time.Hour, "", []string{}, []string{}, false, nil, "") gotTXT := r.generateTXTRecord(record) assert.Equal(t, expectedTXT, gotTXT) @@ -1481,9 +1505,10 @@ func TestFailGenerateTXT(t *testing.T) { Labels: map[string]string{}, } // A bad DNS name returns empty expected TXT - expectedTXT := []*endpoint.Endpoint{} + expectedTXT := make([]*endpoint.Endpoint, 0) p := inmemory.NewInMemoryProvider() - p.CreateZone(testZone) + err := p.CreateZone(testZone) + require.NoError(t, err) r, _ := NewTXTRegistry(p, "", "", "owner", time.Hour, "", []string{}, []string{}, false, nil, "") gotTXT := r.generateTXTRecord(cnameRecord) assert.Equal(t, expectedTXT, gotTXT) @@ -1491,16 +1516,18 @@ func TestFailGenerateTXT(t *testing.T) { func TestTXTRegistryApplyChangesEncrypt(t *testing.T) { p := inmemory.NewInMemoryProvider() - p.CreateZone(testZone) - ctxEndpoints := []*endpoint.Endpoint{} + err := p.CreateZone(testZone) + require.NoError(t, err) + var ctxEndpoints []*endpoint.Endpoint ctx := context.WithValue(context.Background(), provider.RecordsContextKey, ctxEndpoints) - p.ApplyChanges(ctx, &plan.Changes{ + err = p.ApplyChanges(ctx, &plan.Changes{ Create: []*endpoint.Endpoint{ newEndpointWithOwner("foobar.test-zone.example.org", "foobar.loadbalancer.com", endpoint.RecordTypeCNAME, ""), newTXTEndpointWithOwnedRecord("txt.cname-foobar.test-zone.example.org", "\"h8UQ6jelUFUsEIn7SbFktc2MYXPx/q8lySqI4VwfVtVaIbb2nkHWV/88KKbuLtu7fJNzMir8ELVeVnRSY01KdiIuj7ledqZe5ailEjQaU5Z6uEKd5pgs6sH8\"", "foobar.test-zone.example.org"), }, }) + require.NoError(t, err) r, _ := NewTXTRegistry(p, "txt.", "", "owner", time.Hour, "", []string{}, []string{}, true, []byte("12345678901234567890123456789012"), "") records, _ := r.Records(ctx) @@ -1526,7 +1553,7 @@ func TestTXTRegistryApplyChangesEncrypt(t *testing.T) { assert.True(t, testutils.SamePlanChanges(mGot, mExpected)) assert.Nil(t, ctx.Value(provider.RecordsContextKey)) } - err := r.ApplyChanges(ctx, changes) + err = r.ApplyChanges(ctx, changes) require.NoError(t, err) } @@ -1539,14 +1566,16 @@ func TestTXTRegistryApplyChangesEncrypt(t *testing.T) { func TestMultiClusterDifferentRecordTypeOwnership(t *testing.T) { ctx := context.Background() p := inmemory.NewInMemoryProvider() - p.CreateZone(testZone) - p.ApplyChanges(ctx, &plan.Changes{ + err := p.CreateZone(testZone) + require.NoError(t, err) + err = p.ApplyChanges(ctx, &plan.Changes{ Create: []*endpoint.Endpoint{ // records on cluster using A record for ingress address newEndpointWithOwner("bar.test-zone.example.org", "\"heritage=external-dns,external-dns/owner=cat,external-dns/resource=ingress/default/foo\"", endpoint.RecordTypeTXT, ""), newEndpointWithOwner("bar.test-zone.example.org", "1.2.3.4", endpoint.RecordTypeA, ""), }, }) + require.NoError(t, err) r, _ := NewTXTRegistry(p, "_owner.", "", "bar", time.Hour, "", []string{}, []string{}, false, nil, "") records, _ := r.Records(ctx) @@ -1586,10 +1615,8 @@ func TestMultiClusterDifferentRecordTypeOwnership(t *testing.T) { testutils.SamePlanChanges(got, expected) } - err := r.ApplyChanges(ctx, changes.Changes) - if err != nil { - t.Error(err) - } + err = r.ApplyChanges(ctx, changes.Changes) + require.NoError(t, err) } func TestGenerateTXTRecordWithNewFormatOnly(t *testing.T) { @@ -1659,7 +1686,8 @@ func TestGenerateTXTRecordWithNewFormatOnly(t *testing.T) { func TestApplyChangesWithNewFormatOnly(t *testing.T) { p := inmemory.NewInMemoryProvider() - p.CreateZone(testZone) + err := p.CreateZone(testZone) + require.NoError(t, err) ctx := context.Background() r, _ := NewTXTRegistry(p, "", "", "owner", time.Hour, "", []string{}, []string{}, false, nil, "") @@ -1670,7 +1698,7 @@ func TestApplyChangesWithNewFormatOnly(t *testing.T) { }, } - err := r.ApplyChanges(ctx, changes) + err = r.ApplyChanges(ctx, changes) require.NoError(t, err) records, err := p.Records(ctx) @@ -1694,8 +1722,9 @@ func TestApplyChangesWithNewFormatOnly(t *testing.T) { func TestTXTRegistryRecordsWithEmptyTargets(t *testing.T) { ctx := context.Background() p := inmemory.NewInMemoryProvider() - p.CreateZone(testZone) - p.ApplyChanges(ctx, &plan.Changes{ + err := p.CreateZone(testZone) + require.NoError(t, err) + err = p.ApplyChanges(ctx, &plan.Changes{ Create: []*endpoint.Endpoint{ { DNSName: "empty-targets.test-zone.example.org", @@ -1709,6 +1738,7 @@ func TestTXTRegistryRecordsWithEmptyTargets(t *testing.T) { }, }, }) + require.NoError(t, err) r, _ := NewTXTRegistry(p, "", "", "owner", time.Hour, "", []string{}, []string{}, false, nil, "") hook := testutils.LogsUnderTestWithLogLevel(log.ErrorLevel, t) @@ -1890,8 +1920,9 @@ func TestTXTRegistryRecreatesMissingRecords(t *testing.T) { p := inmemory.NewInMemoryProvider() // Given: Register existing records - p.CreateZone(testZone) - err := p.ApplyChanges(ctx, &plan.Changes{Create: existing}) + err := p.CreateZone(testZone) + require.NoError(t, err) + err = p.ApplyChanges(ctx, &plan.Changes{Create: existing}) assert.NoError(t, err) // The first ApplyChanges call should create the expected records. @@ -1924,15 +1955,15 @@ func TestTXTRegistryRecreatesMissingRecords(t *testing.T) { for i := range reconciliationLoops { records, err := registry.Records(ctx) assert.NoError(t, err) - plan := &plan.Plan{ + pl := &plan.Plan{ Policies: []plan.Policy{policy}, Current: records, Desired: desired, ManagedRecords: managedRecords, OwnerID: ownerId, } - plan = plan.Calculate() - err = registry.ApplyChanges(ctx, plan.Changes) + pln := pl.Calculate() + err = registry.ApplyChanges(ctx, pln.Changes) assert.NoError(t, err) // Then: Verify that the missing records are recreated or the existing records are not modified @@ -1952,16 +1983,18 @@ func TestTXTRegistryRecreatesMissingRecords(t *testing.T) { func TestTXTRecordMigration(t *testing.T) { ctx := context.Background() p := inmemory.NewInMemoryProvider() - p.CreateZone(testZone) + err := p.CreateZone(testZone) + require.NoError(t, err) r, _ := NewTXTRegistry(p, "%{record_type}-", "", "foo", time.Hour, "", []string{}, []string{}, false, nil, "") - r.ApplyChanges(ctx, &plan.Changes{ + err = r.ApplyChanges(ctx, &plan.Changes{ Create: []*endpoint.Endpoint{ // records on cluster using A record for ingress address newEndpointWithOwnerAndLabels("bar.test-zone.example.org", "1.2.3.4", endpoint.RecordTypeA, "foo", endpoint.Labels{endpoint.OwnerLabelKey: "owner"}), }, }) + require.NoError(t, err) createdRecords, _ := r.Records(ctx) @@ -1992,7 +2025,6 @@ func TestTXTRecordMigration(t *testing.T) { } assert.Equal(t, updatedTXTRecord[0].Targets, expectedFinalTXT[0].Targets) - } // TestRecreateRecordAfterDeletion ensures that when A and TXT records are deleted, @@ -2003,7 +2035,8 @@ func TestRecreateRecordAfterDeletion(t *testing.T) { ownerID := "foo" ctx := context.Background() p := inmemory.NewInMemoryProvider() - p.CreateZone(testZone) + err := p.CreateZone(testZone) + require.NoError(t, err) r, _ := NewTXTRegistry(p, "%{record_type}-", "", "foo", 0, "", []string{endpoint.RecordTypeA}, []string{}, false, nil, "") @@ -2012,7 +2045,7 @@ func TestRecreateRecordAfterDeletion(t *testing.T) { // 1. Create initial A and TXT records. creates := append([]*endpoint.Endpoint{createdRecords}, txtRecord...) - err := p.ApplyChanges(ctx, &plan.Changes{ + err = p.ApplyChanges(ctx, &plan.Changes{ Create: creates, }) assert.NoError(t, err) From 21a5cc768735d17e55f35d5038ac0268148768fa Mon Sep 17 00:00:00 2001 From: ivan katliarchuk Date: Fri, 20 Feb 2026 09:23:27 +0000 Subject: [PATCH 9/9] chore(linter): enable unparam Signed-off-by: ivan katliarchuk --- registry/txt/registry_test.go | 4 ++-- source/contour_httpproxy_test.go | 11 +++++------ 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/registry/txt/registry_test.go b/registry/txt/registry_test.go index 7a82b4bcda..eba6f80677 100644 --- a/registry/txt/registry_test.go +++ b/registry/txt/registry_test.go @@ -50,13 +50,13 @@ func TestTXTRegistry(t *testing.T) { func testTXTRegistryNew(t *testing.T) { p := inmemory.NewInMemoryProvider() - _, err := NewTXTRegistry(p, "txt.", "", "", time.Hour, "", []string{}, []string{}, false, nil, "") + _, err := NewTXTRegistry(p, "txt", "", "", time.Hour, "", []string{}, []string{}, false, nil, "") require.Error(t, err) _, err = NewTXTRegistry(p, "", "txt", "", time.Hour, "", []string{}, []string{}, false, nil, "") require.Error(t, err) - r, err := NewTXTRegistry(p, "txt.", "", "owner", time.Hour, "", []string{}, []string{}, false, nil, "") + r, err := NewTXTRegistry(p, "txt", "", "owner", time.Hour, "", []string{}, []string{}, false, nil, "") require.NoError(t, err) assert.Equal(t, p, r.provider) diff --git a/source/contour_httpproxy_test.go b/source/contour_httpproxy_test.go index 8820b44cac..2422c277e8 100644 --- a/source/contour_httpproxy_test.go +++ b/source/contour_httpproxy_test.go @@ -288,12 +288,11 @@ func testEndpointsFromHTTPProxy(t *testing.T) { t.Run(ti.title, func(t *testing.T) { t.Parallel() - if source, err := newTestHTTPProxySource(); err != nil { - require.NoError(t, err) - } else { - endpoints := source.endpointsFromHTTPProxy(ti.httpProxy.HTTPProxy()) - validateEndpoints(t, endpoints, ti.expected) - } + source, err := newTestHTTPProxySource() + require.NoError(t, err) + + endpoints := source.endpointsFromHTTPProxy(ti.httpProxy.HTTPProxy()) + validateEndpoints(t, endpoints, ti.expected) }) } }