Merge pull request #3033 from abursavich/plural-copyright

Add missing copyright header and gofumpt
This commit is contained in:
Kubernetes Prow Robot 2022-09-21 08:59:14 -07:00 committed by GitHub
commit 146ffa506f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
79 changed files with 346 additions and 425 deletions

View File

@ -31,7 +31,7 @@ func removeLinkPrefixInIndex() {
updatedContent := strings.ReplaceAll(string(content), "](./docs/", "](") updatedContent := strings.ReplaceAll(string(content), "](./docs/", "](")
updatedContent = strings.ReplaceAll(updatedContent, "](docs/", "](") updatedContent = strings.ReplaceAll(updatedContent, "](docs/", "](")
f, err := os.OpenFile("./docs/index.md", os.O_RDWR, 0644) f, err := os.OpenFile("./docs/index.md", os.O_RDWR, 0o644)
if err != nil { if err != nil {
log.Fatalf("Could not open index.md file to update content. Original error: %s", err) log.Fatalf("Could not open index.md file to update content. Original error: %s", err)
} }

View File

@ -23,10 +23,8 @@ import (
"strings" "strings"
) )
var ( // ErrInvalidHeritage is returned when heritage was not found, or different heritage is found
// ErrInvalidHeritage is returned when heritage was not found, or different heritage is found var ErrInvalidHeritage = errors.New("heritage is unknown or not found")
ErrInvalidHeritage = errors.New("heritage is unknown or not found")
)
const ( const (
heritage = "external-dns" heritage = "external-dns"

View File

@ -32,7 +32,7 @@ type LabelsSuite struct {
barTextAsMap Labels barTextAsMap Labels
noHeritageText string noHeritageText string
wrongHeritageText string wrongHeritageText string
multipleHeritageText string //considered invalid multipleHeritageText string // considered invalid
} }
func (suite *LabelsSuite) SetupTest() { func (suite *LabelsSuite) SetupTest() {
@ -48,7 +48,7 @@ func (suite *LabelsSuite) SetupTest() {
"resource": "bar-resource", "resource": "bar-resource",
"new-key": "bar-new-key", "new-key": "bar-new-key",
} }
suite.barText = "heritage=external-dns,,external-dns/owner=bar-owner,external-dns/resource=bar-resource,external-dns/new-key=bar-new-key,random=stuff,no-equal-sign,," //also has some random gibberish suite.barText = "heritage=external-dns,,external-dns/owner=bar-owner,external-dns/resource=bar-resource,external-dns/new-key=bar-new-key,random=stuff,no-equal-sign,," // also has some random gibberish
suite.noHeritageText = "external-dns/owner=random-owner" suite.noHeritageText = "external-dns/owner=random-owner"
suite.wrongHeritageText = "heritage=mate,external-dns/owner=random-owner" suite.wrongHeritageText = "heritage=mate,external-dns/owner=random-owner"

View File

@ -1,3 +1,4 @@
//go:build !ignore_autogenerated
// +build !ignore_autogenerated // +build !ignore_autogenerated
/* /*

View File

@ -37,10 +37,8 @@ const (
passwordMask = "******" passwordMask = "******"
) )
var ( // Version is the current version of the app, generated at build time
// Version is the current version of the app, generated at build time var Version = "unknown"
Version = "unknown"
)
// Config is a project-wide configuration // Config is a project-wide configuration
type Config struct { type Config struct {

View File

@ -168,7 +168,7 @@ func TestValidateGoodRfc2136Config(t *testing.T) {
} }
func TestValidateBadRfc2136GssTsigConfig(t *testing.T) { func TestValidateBadRfc2136GssTsigConfig(t *testing.T) {
var invalidRfc2136GssTsigConfigs = []*externaldns.Config{ invalidRfc2136GssTsigConfigs := []*externaldns.Config{
{ {
LogFormat: "json", LogFormat: "json",
Sources: []string{"test-source"}, Sources: []string{"test-source"},
@ -258,7 +258,7 @@ func TestValidateBadRfc2136GssTsigConfig(t *testing.T) {
} }
func TestValidateGoodRfc2136GssTsigConfig(t *testing.T) { func TestValidateGoodRfc2136GssTsigConfig(t *testing.T) {
var validRfc2136GssTsigConfigs = []*externaldns.Config{ validRfc2136GssTsigConfigs := []*externaldns.Config{
{ {
LogFormat: "json", LogFormat: "json",
Sources: []string{"test-source"}, Sources: []string{"test-source"},

View File

@ -84,7 +84,7 @@ func (suite *ResolverSuite) SetupTest() {
endpoint.ResourceLabelKey: "ingress/default/bar-127", endpoint.ResourceLabelKey: "ingress/default/bar-127",
}, },
} }
suite.bar127AAnother = &endpoint.Endpoint{ //TODO: remove this once we move to multiple targets under same endpoint suite.bar127AAnother = &endpoint.Endpoint{ // TODO: remove this once we move to multiple targets under same endpoint
DNSName: "bar", DNSName: "bar",
Targets: endpoint.Targets{"8.8.8.8"}, Targets: endpoint.Targets{"8.8.8.8"},
RecordType: "A", RecordType: "A",
@ -113,7 +113,7 @@ func (suite *ResolverSuite) TestStrictResolver() {
suite.Equal(suite.fooA5, suite.perResource.ResolveCreate([]*endpoint.Endpoint{suite.fooA5, suite.fooV1Cname}), "should pick min one") suite.Equal(suite.fooA5, suite.perResource.ResolveCreate([]*endpoint.Endpoint{suite.fooA5, suite.fooV1Cname}), "should pick min one")
suite.Equal(suite.fooV1Cname, suite.perResource.ResolveCreate([]*endpoint.Endpoint{suite.fooV2Cname, suite.fooV1Cname}), "should pick min one") suite.Equal(suite.fooV1Cname, suite.perResource.ResolveCreate([]*endpoint.Endpoint{suite.fooV2Cname, suite.fooV1Cname}), "should pick min one")
//test that perResource resolver preserves resource if it still exists // test that perResource resolver preserves resource if it still exists
suite.Equal(suite.bar127AAnother, suite.perResource.ResolveUpdate(suite.bar127A, []*endpoint.Endpoint{suite.bar127AAnother, suite.bar127A}), "should pick min for update when same resource endpoint occurs multiple times (remove after multiple-target support") // TODO:remove this test suite.Equal(suite.bar127AAnother, suite.perResource.ResolveUpdate(suite.bar127A, []*endpoint.Endpoint{suite.bar127AAnother, suite.bar127A}), "should pick min for update when same resource endpoint occurs multiple times (remove after multiple-target support") // TODO:remove this test
suite.Equal(suite.bar127A, suite.perResource.ResolveUpdate(suite.bar127A, []*endpoint.Endpoint{suite.bar192A, suite.bar127A}), "should pick existing resource") suite.Equal(suite.bar127A, suite.perResource.ResolveUpdate(suite.bar127A, []*endpoint.Endpoint{suite.bar192A, suite.bar127A}), "should pick existing resource")
suite.Equal(suite.fooV2Cname, suite.perResource.ResolveUpdate(suite.fooV2Cname, []*endpoint.Endpoint{suite.fooV2Cname, suite.fooV2CnameDuplicate}), "should pick existing resource even if targets are same") suite.Equal(suite.fooV2Cname, suite.perResource.ResolveUpdate(suite.fooV2Cname, []*endpoint.Endpoint{suite.fooV2Cname, suite.fooV2CnameDuplicate}), "should pick existing resource even if targets are same")

View File

@ -82,7 +82,7 @@ type planTable struct {
resolver ConflictResolver resolver ConflictResolver
} }
func newPlanTable() planTable { //TODO: make resolver configurable func newPlanTable() planTable { // TODO: make resolver configurable
return planTable{map[string]map[string]*planTableRow{}, PerResource{}} return planTable{map[string]map[string]*planTableRow{}, PerResource{}}
} }
@ -148,7 +148,7 @@ func (p *Plan) Calculate() *Plan {
for _, topRow := range t.rows { for _, topRow := range t.rows {
for _, row := range topRow { for _, row := range topRow {
if row.current == nil { //dns name not taken if row.current == nil { // dns name not taken
changes.Create = append(changes.Create, t.resolver.ResolveCreate(row.candidates)) changes.Create = append(changes.Create, t.resolver.ResolveCreate(row.candidates))
} }
if row.current != nil && len(row.candidates) == 0 { if row.current != nil && len(row.candidates) == 0 {
@ -156,7 +156,7 @@ func (p *Plan) Calculate() *Plan {
} }
// TODO: allows record type change, which might not be supported by all dns providers // TODO: allows record type change, which might not be supported by all dns providers
if row.current != nil && len(row.candidates) > 0 { //dns name is taken if row.current != nil && len(row.candidates) > 0 { // dns name is taken
update := t.resolver.ResolveUpdate(row.current, row.candidates) update := t.resolver.ResolveUpdate(row.current, row.candidates)
// compare "update" to "current" to figure out if actual update is required // compare "update" to "current" to figure out if actual update is required
if shouldUpdateTTL(update, row.current) || targetChanged(update, row.current) || p.shouldUpdateProviderSpecific(update, row.current) { if shouldUpdateTTL(update, row.current) || targetChanged(update, row.current) || p.shouldUpdateProviderSpecific(update, row.current) {

View File

@ -226,7 +226,7 @@ func (suite *PlanTestSuite) SetupTest() {
func (suite *PlanTestSuite) TestSyncFirstRound() { func (suite *PlanTestSuite) TestSyncFirstRound() {
current := []*endpoint.Endpoint{} current := []*endpoint.Endpoint{}
desired := []*endpoint.Endpoint{suite.fooV1Cname, suite.fooV2Cname, suite.bar127A} desired := []*endpoint.Endpoint{suite.fooV1Cname, suite.fooV2Cname, suite.bar127A}
expectedCreate := []*endpoint.Endpoint{suite.fooV1Cname, suite.bar127A} //v1 is chosen because of resolver taking "min" expectedCreate := []*endpoint.Endpoint{suite.fooV1Cname, suite.bar127A} // v1 is chosen because of resolver taking "min"
expectedUpdateOld := []*endpoint.Endpoint{} expectedUpdateOld := []*endpoint.Endpoint{}
expectedUpdateNew := []*endpoint.Endpoint{} expectedUpdateNew := []*endpoint.Endpoint{}
expectedDelete := []*endpoint.Endpoint{} expectedDelete := []*endpoint.Endpoint{}
@ -544,7 +544,7 @@ func (suite *PlanTestSuite) TestRemoveEndpointWithUpsert() {
validateEntries(suite.T(), changes.Delete, expectedDelete) validateEntries(suite.T(), changes.Delete, expectedDelete)
} }
//TODO: remove once multiple-target per endpoint is supported // TODO: remove once multiple-target per endpoint is supported
func (suite *PlanTestSuite) TestDuplicatedEndpointsForSameResourceReplace() { func (suite *PlanTestSuite) TestDuplicatedEndpointsForSameResourceReplace() {
current := []*endpoint.Endpoint{suite.fooV3CnameSameResource, suite.bar192A} current := []*endpoint.Endpoint{suite.fooV3CnameSameResource, suite.bar192A}
desired := []*endpoint.Endpoint{suite.fooV1Cname, suite.fooV3CnameSameResource} desired := []*endpoint.Endpoint{suite.fooV1Cname, suite.fooV3CnameSameResource}
@ -567,9 +567,8 @@ func (suite *PlanTestSuite) TestDuplicatedEndpointsForSameResourceReplace() {
validateEntries(suite.T(), changes.Delete, expectedDelete) validateEntries(suite.T(), changes.Delete, expectedDelete)
} }
//TODO: remove once multiple-target per endpoint is supported // TODO: remove once multiple-target per endpoint is supported
func (suite *PlanTestSuite) TestDuplicatedEndpointsForSameResourceRetain() { func (suite *PlanTestSuite) TestDuplicatedEndpointsForSameResourceRetain() {
current := []*endpoint.Endpoint{suite.fooV1Cname, suite.bar192A} current := []*endpoint.Endpoint{suite.fooV1Cname, suite.bar192A}
desired := []*endpoint.Endpoint{suite.fooV1Cname, suite.fooV3CnameSameResource} desired := []*endpoint.Endpoint{suite.fooV1Cname, suite.fooV3CnameSameResource}
expectedCreate := []*endpoint.Endpoint{} expectedCreate := []*endpoint.Endpoint{}
@ -592,7 +591,6 @@ func (suite *PlanTestSuite) TestDuplicatedEndpointsForSameResourceRetain() {
} }
func (suite *PlanTestSuite) TestMultipleRecordsSameNameDifferentSetIdentifier() { func (suite *PlanTestSuite) TestMultipleRecordsSameNameDifferentSetIdentifier() {
current := []*endpoint.Endpoint{suite.multiple1} current := []*endpoint.Endpoint{suite.multiple1}
desired := []*endpoint.Endpoint{suite.multiple2, suite.multiple3} desired := []*endpoint.Endpoint{suite.multiple2, suite.multiple3}
expectedCreate := []*endpoint.Endpoint{suite.multiple3} expectedCreate := []*endpoint.Endpoint{suite.multiple3}
@ -615,7 +613,6 @@ func (suite *PlanTestSuite) TestMultipleRecordsSameNameDifferentSetIdentifier()
} }
func (suite *PlanTestSuite) TestSetIdentifierUpdateCreatesAndDeletes() { func (suite *PlanTestSuite) TestSetIdentifierUpdateCreatesAndDeletes() {
current := []*endpoint.Endpoint{suite.multiple2} current := []*endpoint.Endpoint{suite.multiple2}
desired := []*endpoint.Endpoint{suite.multiple3} desired := []*endpoint.Endpoint{suite.multiple3}
expectedCreate := []*endpoint.Endpoint{suite.multiple3} expectedCreate := []*endpoint.Endpoint{suite.multiple3}
@ -638,7 +635,6 @@ func (suite *PlanTestSuite) TestSetIdentifierUpdateCreatesAndDeletes() {
} }
func (suite *PlanTestSuite) TestDomainFiltersInitial() { func (suite *PlanTestSuite) TestDomainFiltersInitial() {
current := []*endpoint.Endpoint{suite.domainFilterExcluded} current := []*endpoint.Endpoint{suite.domainFilterExcluded}
desired := []*endpoint.Endpoint{suite.domainFilterExcluded, suite.domainFilterFiltered1, suite.domainFilterFiltered2, suite.domainFilterFiltered3} desired := []*endpoint.Endpoint{suite.domainFilterExcluded, suite.domainFilterFiltered1, suite.domainFilterFiltered2, suite.domainFilterFiltered3}
expectedCreate := []*endpoint.Endpoint{suite.domainFilterFiltered1, suite.domainFilterFiltered2, suite.domainFilterFiltered3} expectedCreate := []*endpoint.Endpoint{suite.domainFilterFiltered1, suite.domainFilterFiltered2, suite.domainFilterFiltered3}
@ -662,7 +658,6 @@ func (suite *PlanTestSuite) TestDomainFiltersInitial() {
} }
func (suite *PlanTestSuite) TestDomainFiltersUpdate() { func (suite *PlanTestSuite) TestDomainFiltersUpdate() {
current := []*endpoint.Endpoint{suite.domainFilterExcluded, suite.domainFilterFiltered1, suite.domainFilterFiltered2} current := []*endpoint.Endpoint{suite.domainFilterExcluded, suite.domainFilterFiltered1, suite.domainFilterFiltered2}
desired := []*endpoint.Endpoint{suite.domainFilterExcluded, suite.domainFilterFiltered1, suite.domainFilterFiltered2, suite.domainFilterFiltered3} desired := []*endpoint.Endpoint{suite.domainFilterExcluded, suite.domainFilterFiltered1, suite.domainFilterFiltered2, suite.domainFilterFiltered3}
expectedCreate := []*endpoint.Endpoint{suite.domainFilterFiltered3} expectedCreate := []*endpoint.Endpoint{suite.domainFilterFiltered3}
@ -686,7 +681,6 @@ func (suite *PlanTestSuite) TestDomainFiltersUpdate() {
} }
func (suite *PlanTestSuite) TestMissing() { func (suite *PlanTestSuite) TestMissing() {
missing := []*endpoint.Endpoint{suite.domainFilterFilteredTXT1, suite.domainFilterFilteredTXT2, suite.domainFilterExcludedTXT} missing := []*endpoint.Endpoint{suite.domainFilterFilteredTXT1, suite.domainFilterFilteredTXT2, suite.domainFilterExcludedTXT}
expectedCreate := []*endpoint.Endpoint{suite.domainFilterFilteredTXT1, suite.domainFilterFilteredTXT2} expectedCreate := []*endpoint.Endpoint{suite.domainFilterFilteredTXT1, suite.domainFilterFilteredTXT2}
@ -893,7 +887,6 @@ func TestShouldUpdateProviderSpecific(tt *testing.T) {
} }
b := plan.shouldUpdateProviderSpecific(test.desired, test.current) b := plan.shouldUpdateProviderSpecific(test.desired, test.current)
assert.Equal(t, test.shouldUpdate, b) assert.Equal(t, test.shouldUpdate, b)
}) })
} }
} }

View File

@ -193,7 +193,6 @@ func (p AkamaiProvider) fetchZones() (akamaiZones, error) {
queryArgs.ContractIds = strings.Join(p.zoneIDFilter.ZoneIDs, ",") queryArgs.ContractIds = strings.Join(p.zoneIDFilter.ZoneIDs, ",")
} }
resp, err := p.client.ListZones(queryArgs) // retrieve all primary zones filtered by contract ids resp, err := p.client.ListZones(queryArgs) // retrieve all primary zones filtered by contract ids
if err != nil { if err != nil {
log.Errorf("Failed to fetch zones from Akamai") log.Errorf("Failed to fetch zones from Akamai")
return filteredZones, err return filteredZones, err
@ -215,7 +214,7 @@ func (p AkamaiProvider) fetchZones() (akamaiZones, error) {
return filteredZones, nil return filteredZones, nil
} }
//Records returns the list of records in a given zone. // Records returns the list of records in a given zone.
func (p AkamaiProvider) Records(context.Context) (endpoints []*endpoint.Endpoint, err error) { func (p AkamaiProvider) Records(context.Context) (endpoints []*endpoint.Endpoint, err error) {
zones, err := p.fetchZones() // returns a filtered set of zones zones, err := p.fetchZones() // returns a filtered set of zones
if err != nil { if err != nil {
@ -242,7 +241,7 @@ func (p AkamaiProvider) Records(context.Context) (endpoints []*endpoint.Endpoint
continue continue
} }
var temp interface{} = int64(recordset.TTL) var temp interface{} = int64(recordset.TTL)
var ttl = endpoint.TTL(temp.(int64)) ttl := endpoint.TTL(temp.(int64))
endpoints = append(endpoints, endpoint.NewEndpointWithTTL(recordset.Name, endpoints = append(endpoints, endpoint.NewEndpointWithTTL(recordset.Name,
recordset.Type, recordset.Type,
ttl, ttl,
@ -359,7 +358,7 @@ func trimTxtRdata(rdata []string, rtype string) []string {
func ttlAsInt(src endpoint.TTL) int { func ttlAsInt(src endpoint.TTL) int {
var temp interface{} = int64(src) var temp interface{} = int64(src)
var temp64 = temp.(int64) temp64 := temp.(int64)
var ttl int = edgeDNSRecordTTL var ttl int = edgeDNSRecordTTL
if temp64 > 0 && temp64 <= int64(maxInt) { if temp64 > 0 && temp64 <= int64(maxInt) {
ttl = int(temp64) ttl = int(temp64)

View File

@ -19,9 +19,10 @@ package akamai
import ( import (
"context" "context"
"encoding/json" "encoding/json"
log "github.com/sirupsen/logrus"
"testing" "testing"
log "github.com/sirupsen/logrus"
dns "github.com/akamai/AkamaiOPEN-edgegrid-golang/configdns-v2" dns "github.com/akamai/AkamaiOPEN-edgegrid-golang/configdns-v2"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"sigs.k8s.io/external-dns/endpoint" "sigs.k8s.io/external-dns/endpoint"
@ -47,7 +48,6 @@ func newStub() *edgednsStub {
} }
func createAkamaiStubProvider(stub *edgednsStub, domfilter endpoint.DomainFilter, idfilter provider.ZoneIDFilter) (*AkamaiProvider, error) { func createAkamaiStubProvider(stub *edgednsStub, domfilter endpoint.DomainFilter, idfilter provider.ZoneIDFilter) (*AkamaiProvider, error) {
akamaiConfig := AkamaiConfig{ akamaiConfig := AkamaiConfig{
DomainFilter: domfilter, DomainFilter: domfilter,
ZoneIDFilter: idfilter, ZoneIDFilter: idfilter,
@ -63,7 +63,6 @@ func createAkamaiStubProvider(stub *edgednsStub, domfilter endpoint.DomainFilter
} }
func (r *edgednsStub) createStubDataEntry(objtype string) { func (r *edgednsStub) createStubDataEntry(objtype string) {
log.Debugf("Creating stub data entry") log.Debugf("Creating stub data entry")
if _, exists := r.stubData[objtype]; !exists { if _, exists := r.stubData[objtype]; !exists {
r.stubData[objtype] = edgednsStubData{objType: objtype} r.stubData[objtype] = edgednsStubData{objType: objtype}
@ -73,7 +72,6 @@ func (r *edgednsStub) createStubDataEntry(objtype string) {
} }
func (r *edgednsStub) setOutput(objtype string, output []interface{}) { func (r *edgednsStub) setOutput(objtype string, output []interface{}) {
log.Debugf("Setting output to %v", output) log.Debugf("Setting output to %v", output)
r.createStubDataEntry(objtype) r.createStubDataEntry(objtype)
stubdata := r.stubData[objtype] stubdata := r.stubData[objtype]
@ -84,7 +82,6 @@ func (r *edgednsStub) setOutput(objtype string, output []interface{}) {
} }
func (r *edgednsStub) setUpdateRecords(objtype string, records []interface{}) { func (r *edgednsStub) setUpdateRecords(objtype string, records []interface{}) {
log.Debugf("Setting updaterecords to %v", records) log.Debugf("Setting updaterecords to %v", records)
r.createStubDataEntry(objtype) r.createStubDataEntry(objtype)
stubdata := r.stubData[objtype] stubdata := r.stubData[objtype]
@ -95,7 +92,6 @@ func (r *edgednsStub) setUpdateRecords(objtype string, records []interface{}) {
} }
func (r *edgednsStub) setCreateRecords(objtype string, records []interface{}) { func (r *edgednsStub) setCreateRecords(objtype string, records []interface{}) {
log.Debugf("Setting createrecords to %v", records) log.Debugf("Setting createrecords to %v", records)
r.createStubDataEntry(objtype) r.createStubDataEntry(objtype)
stubdata := r.stubData[objtype] stubdata := r.stubData[objtype]
@ -106,7 +102,6 @@ func (r *edgednsStub) setCreateRecords(objtype string, records []interface{}) {
} }
func (r *edgednsStub) ListZones(queryArgs dns.ZoneListQueryArgs) (*dns.ZoneListResponse, error) { func (r *edgednsStub) ListZones(queryArgs dns.ZoneListQueryArgs) (*dns.ZoneListResponse, error) {
log.Debugf("Entering ListZones") log.Debugf("Entering ListZones")
// Ignore Metadata` // Ignore Metadata`
resp := &dns.ZoneListResponse{} resp := &dns.ZoneListResponse{}
@ -122,7 +117,6 @@ func (r *edgednsStub) ListZones(queryArgs dns.ZoneListQueryArgs) (*dns.ZoneListR
} }
func (r *edgednsStub) GetRecordsets(zone string, queryArgs dns.RecordsetQueryArgs) (*dns.RecordSetResponse, error) { func (r *edgednsStub) GetRecordsets(zone string, queryArgs dns.RecordsetQueryArgs) (*dns.RecordSetResponse, error) {
log.Debugf("Entering GetRecordsets") log.Debugf("Entering GetRecordsets")
// Ignore Metadata` // Ignore Metadata`
resp := &dns.RecordSetResponse{} resp := &dns.RecordSetResponse{}
@ -137,30 +131,25 @@ func (r *edgednsStub) GetRecordsets(zone string, queryArgs dns.RecordsetQueryArg
} }
func (r *edgednsStub) CreateRecordsets(recordsets *dns.Recordsets, zone string, reclock bool) error { func (r *edgednsStub) CreateRecordsets(recordsets *dns.Recordsets, zone string, reclock bool) error {
return nil return nil
} }
func (r *edgednsStub) GetRecord(zone string, name string, record_type string) (*dns.RecordBody, error) { func (r *edgednsStub) GetRecord(zone string, name string, record_type string) (*dns.RecordBody, error) {
resp := &dns.RecordBody{} resp := &dns.RecordBody{}
return resp, nil return resp, nil
} }
func (r *edgednsStub) DeleteRecord(record *dns.RecordBody, zone string, recLock bool) error { func (r *edgednsStub) DeleteRecord(record *dns.RecordBody, zone string, recLock bool) error {
return nil return nil
} }
func (r *edgednsStub) UpdateRecord(record *dns.RecordBody, zone string, recLock bool) error { func (r *edgednsStub) UpdateRecord(record *dns.RecordBody, zone string, recLock bool) error {
return nil return nil
} }
// Test FetchZones // Test FetchZones
func TestFetchZonesZoneIDFilter(t *testing.T) { func TestFetchZonesZoneIDFilter(t *testing.T) {
stub := newStub() stub := newStub()
domfilter := endpoint.DomainFilter{} domfilter := endpoint.DomainFilter{}
idfilter := provider.NewZoneIDFilter([]string{"Test"}) idfilter := provider.NewZoneIDFilter([]string{"Test"})
@ -176,7 +165,6 @@ func TestFetchZonesZoneIDFilter(t *testing.T) {
} }
func TestFetchZonesEmpty(t *testing.T) { func TestFetchZonesEmpty(t *testing.T) {
stub := newStub() stub := newStub()
domfilter := endpoint.NewDomainFilter([]string{"Nonexistent"}) domfilter := endpoint.NewDomainFilter([]string{"Nonexistent"})
idfilter := provider.NewZoneIDFilter([]string{"Nonexistent"}) idfilter := provider.NewZoneIDFilter([]string{"Nonexistent"})
@ -193,7 +181,6 @@ func TestFetchZonesEmpty(t *testing.T) {
// TestAkamaiRecords tests record endpoint // TestAkamaiRecords tests record endpoint
func TestAkamaiRecords(t *testing.T) { func TestAkamaiRecords(t *testing.T) {
stub := newStub() stub := newStub()
domfilter := endpoint.DomainFilter{} domfilter := endpoint.DomainFilter{}
idfilter := provider.ZoneIDFilter{} idfilter := provider.ZoneIDFilter{}
@ -229,7 +216,6 @@ func TestAkamaiRecords(t *testing.T) {
} }
func TestAkamaiRecordsEmpty(t *testing.T) { func TestAkamaiRecordsEmpty(t *testing.T) {
stub := newStub() stub := newStub()
domfilter := endpoint.DomainFilter{} domfilter := endpoint.DomainFilter{}
idfilter := provider.NewZoneIDFilter([]string{"Nonexistent"}) idfilter := provider.NewZoneIDFilter([]string{"Nonexistent"})
@ -244,7 +230,6 @@ func TestAkamaiRecordsEmpty(t *testing.T) {
} }
func TestAkamaiRecordsFilters(t *testing.T) { func TestAkamaiRecordsFilters(t *testing.T) {
stub := newStub() stub := newStub()
domfilter := endpoint.NewDomainFilter([]string{"www.exclude.me"}) domfilter := endpoint.NewDomainFilter([]string{"www.exclude.me"})
idfilter := provider.ZoneIDFilter{} idfilter := provider.ZoneIDFilter{}
@ -275,7 +260,6 @@ func TestAkamaiRecordsFilters(t *testing.T) {
// TestCreateRecords tests create function // TestCreateRecords tests create function
// (p AkamaiProvider) createRecordsets(zoneNameIDMapper provider.ZoneIDName, endpoints []*endpoint.Endpoint) error // (p AkamaiProvider) createRecordsets(zoneNameIDMapper provider.ZoneIDName, endpoints []*endpoint.Endpoint) error
func TestCreateRecords(t *testing.T) { func TestCreateRecords(t *testing.T) {
stub := newStub() stub := newStub()
domfilter := endpoint.DomainFilter{} domfilter := endpoint.DomainFilter{}
idfilter := provider.ZoneIDFilter{} idfilter := provider.ZoneIDFilter{}
@ -292,7 +276,6 @@ func TestCreateRecords(t *testing.T) {
} }
func TestCreateRecordsDomainFilter(t *testing.T) { func TestCreateRecordsDomainFilter(t *testing.T) {
stub := newStub() stub := newStub()
domfilter := endpoint.DomainFilter{} domfilter := endpoint.DomainFilter{}
idfilter := provider.ZoneIDFilter{} idfilter := provider.ZoneIDFilter{}
@ -311,7 +294,6 @@ func TestCreateRecordsDomainFilter(t *testing.T) {
// TestDeleteRecords validate delete // TestDeleteRecords validate delete
func TestDeleteRecords(t *testing.T) { func TestDeleteRecords(t *testing.T) {
stub := newStub() stub := newStub()
domfilter := endpoint.DomainFilter{} domfilter := endpoint.DomainFilter{}
idfilter := provider.ZoneIDFilter{} idfilter := provider.ZoneIDFilter{}
@ -327,9 +309,7 @@ func TestDeleteRecords(t *testing.T) {
assert.Nil(t, err) assert.Nil(t, err)
} }
//
func TestDeleteRecordsDomainFilter(t *testing.T) { func TestDeleteRecordsDomainFilter(t *testing.T) {
stub := newStub() stub := newStub()
domfilter := endpoint.NewDomainFilter([]string{"example.com"}) domfilter := endpoint.NewDomainFilter([]string{"example.com"})
idfilter := provider.ZoneIDFilter{} idfilter := provider.ZoneIDFilter{}
@ -348,7 +328,6 @@ func TestDeleteRecordsDomainFilter(t *testing.T) {
// Test record update func // Test record update func
func TestUpdateRecords(t *testing.T) { func TestUpdateRecords(t *testing.T) {
stub := newStub() stub := newStub()
domfilter := endpoint.DomainFilter{} domfilter := endpoint.DomainFilter{}
idfilter := provider.ZoneIDFilter{} idfilter := provider.ZoneIDFilter{}
@ -364,9 +343,7 @@ func TestUpdateRecords(t *testing.T) {
assert.Nil(t, err) assert.Nil(t, err)
} }
//
func TestUpdateRecordsDomainFilter(t *testing.T) { func TestUpdateRecordsDomainFilter(t *testing.T) {
stub := newStub() stub := newStub()
domfilter := endpoint.NewDomainFilter([]string{"example.com"}) domfilter := endpoint.NewDomainFilter([]string{"example.com"})
idfilter := provider.ZoneIDFilter{} idfilter := provider.ZoneIDFilter{}
@ -384,7 +361,6 @@ func TestUpdateRecordsDomainFilter(t *testing.T) {
} }
func TestAkamaiApplyChanges(t *testing.T) { func TestAkamaiApplyChanges(t *testing.T) {
stub := newStub() stub := newStub()
domfilter := endpoint.NewDomainFilter([]string{"example.com"}) domfilter := endpoint.NewDomainFilter([]string{"example.com"})
idfilter := provider.ZoneIDFilter{} idfilter := provider.ZoneIDFilter{}

View File

@ -433,7 +433,6 @@ func (p *AlibabaCloudProvider) getDomainRecords(domainName string) ([]alidns.Rec
request.PageNumber = "1" request.PageNumber = "1"
for { for {
response, err := p.getDNSClient().DescribeDomainRecords(request) response, err := p.getDNSClient().DescribeDomainRecords(request)
if err != nil { if err != nil {
log.Errorf("Failed to describe domain records for Alibaba Cloud DNS: %v", err) log.Errorf("Failed to describe domain records for Alibaba Cloud DNS: %v", err)
return nil, err return nil, err
@ -449,7 +448,7 @@ func (p *AlibabaCloudProvider) getDomainRecords(domainName string) ([]alidns.Rec
if !provider.SupportedRecordType(recordType) { if !provider.SupportedRecordType(recordType) {
continue continue
} }
//TODO filter Locked record // TODO filter Locked record
results = append(results, record) results = append(results, record)
} }
nextPage := getNextPageNumber(response.PageNumber, defaultAlibabaCloudPageSize, response.TotalCount) nextPage := getNextPageNumber(response.PageNumber, defaultAlibabaCloudPageSize, response.TotalCount)
@ -761,7 +760,6 @@ func (p *AlibabaCloudProvider) getPrivateZones() (map[string]*alibabaPrivateZone
recordsCount := 0 recordsCount := 0
zones, err := p.privateZones() zones, err := p.privateZones()
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -776,7 +774,6 @@ func (p *AlibabaCloudProvider) getPrivateZones() (map[string]*alibabaPrivateZone
for { for {
response, err := p.getPvtzClient().DescribeZoneRecords(request) response, err := p.getPvtzClient().DescribeZoneRecords(request)
if err != nil { if err != nil {
log.Errorf("Failed to describe zone record '%s' in Alibaba Cloud DNS: %v", zone.ZoneId, err) log.Errorf("Failed to describe zone record '%s' in Alibaba Cloud DNS: %v", zone.ZoneId, err)
return nil, err return nil, err
@ -789,7 +786,7 @@ func (p *AlibabaCloudProvider) getPrivateZones() (map[string]*alibabaPrivateZone
continue continue
} }
//TODO filter Locked // TODO filter Locked
records = append(records, record) records = append(records, record)
} }
nextPage := getNextPageNumber(int64(response.PageNumber), defaultAlibabaCloudPageSize, int64(response.TotalItems)) nextPage := getNextPageNumber(int64(response.PageNumber), defaultAlibabaCloudPageSize, int64(response.TotalItems))

View File

@ -435,7 +435,6 @@ func TestAlibabaCloudProvider_splitDNSName(t *testing.T) {
} }
func TestAlibabaCloudProvider_TXTEndpoint(t *testing.T) { func TestAlibabaCloudProvider_TXTEndpoint(t *testing.T) {
p := newTestAlibabaCloudProvider(false) p := newTestAlibabaCloudProvider(false)
const recordValue = "heritage=external-dns,external-dns/owner=default" const recordValue = "heritage=external-dns,external-dns/owner=default"
const endpointTarget = "\"heritage=external-dns,external-dns/owner=default\"" const endpointTarget = "\"heritage=external-dns,external-dns/owner=default\""
@ -448,9 +447,8 @@ func TestAlibabaCloudProvider_TXTEndpoint(t *testing.T) {
} }
} }
//TestAlibabaCloudProvider_TXTEndpoint_PrivateZone // TestAlibabaCloudProvider_TXTEndpoint_PrivateZone
func TestAlibabaCloudProvider_TXTEndpoint_PrivateZone(t *testing.T) { func TestAlibabaCloudProvider_TXTEndpoint_PrivateZone(t *testing.T) {
p := newTestAlibabaCloudProvider(true) p := newTestAlibabaCloudProvider(true)
const recordValue = "heritage=external-dns,external-dns/owner=default" const recordValue = "heritage=external-dns,external-dns/owner=default"
const endpointTarget = "\"heritage=external-dns,external-dns/owner=default\"" const endpointTarget = "\"heritage=external-dns,external-dns/owner=default\""

View File

@ -63,9 +63,8 @@ const (
sameZoneAlias = "same-zone" sameZoneAlias = "same-zone"
) )
var ( // see: https://docs.aws.amazon.com/general/latest/gr/elb.html
// see: https://docs.aws.amazon.com/general/latest/gr/elb.html var canonicalHostedZones = map[string]string{
canonicalHostedZones = map[string]string{
// Application Load Balancers and Classic Load Balancers // Application Load Balancers and Classic Load Balancers
"us-east-2.elb.amazonaws.com": "Z3AADJGX6KTTL2", "us-east-2.elb.amazonaws.com": "Z3AADJGX6KTTL2",
"us-east-1.elb.amazonaws.com": "Z35SXDOTRQ7X7K", "us-east-1.elb.amazonaws.com": "Z35SXDOTRQ7X7K",
@ -123,8 +122,7 @@ var (
"awsglobalaccelerator.com": "Z2BJ6XQ5FK7U4H", "awsglobalaccelerator.com": "Z2BJ6XQ5FK7U4H",
// Cloudfront // Cloudfront
"cloudfront.net": "Z2FDTNDATAQYW2", "cloudfront.net": "Z2FDTNDATAQYW2",
} }
)
// Route53API is the subset of the AWS Route53 API that we actually use. Add methods as required. Signatures must match exactly. // Route53API is the subset of the AWS Route53 API that we actually use. Add methods as required. Signatures must match exactly.
// mostly taken from: https://github.com/kubernetes/kubernetes/blob/853167624edb6bc0cfdcdfb88e746e178f5db36c/federation/pkg/dnsprovider/providers/aws/route53/stubs/route53api.go // mostly taken from: https://github.com/kubernetes/kubernetes/blob/853167624edb6bc0cfdcdfb88e746e178f5db36c/federation/pkg/dnsprovider/providers/aws/route53/stubs/route53api.go
@ -528,7 +526,7 @@ func (p *AWSProvider) submitChanges(ctx context.Context, changes []*route53.Chan
if _, err := p.client.ChangeResourceRecordSetsWithContext(ctx, params); err != nil { if _, err := p.client.ChangeResourceRecordSetsWithContext(ctx, params); err != nil {
log.Errorf("Failure in zone %s [Id: %s]", aws.StringValue(zones[z].Name), z) log.Errorf("Failure in zone %s [Id: %s]", aws.StringValue(zones[z].Name), z)
log.Error(err) //TODO(ideahitme): consider changing the interface in cases when this error might be a concern for other components log.Error(err) // TODO(ideahitme): consider changing the interface in cases when this error might be a concern for other components
failedUpdate = true failedUpdate = true
} else { } else {
// z is the R53 Hosted Zone ID already as aws.StringValue // z is the R53 Hosted Zone ID already as aws.StringValue
@ -665,7 +663,7 @@ func (p *AWSProvider) newChange(action string, ep *endpoint.Endpoint) (*route53.
change.ResourceRecordSet.MultiValueAnswer = aws.Bool(true) change.ResourceRecordSet.MultiValueAnswer = aws.Bool(true)
} }
var geolocation = &route53.GeoLocation{} geolocation := &route53.GeoLocation{}
useGeolocation := false useGeolocation := false
if prop, ok := ep.GetProviderSpecificProperty(providerSpecificGeolocationContinentCode); ok { if prop, ok := ep.GetProviderSpecificProperty(providerSpecificGeolocationContinentCode); ok {
geolocation.ContinentCode = aws.String(prop.Value) geolocation.ContinentCode = aws.String(prop.Value)
@ -820,6 +818,7 @@ func changesByZone(zones map[string]*route53.HostedZone, changeSet []*route53.Ch
} }
// suitableZones returns all suitable private zones and the most suitable public zone // suitableZones returns all suitable private zones and the most suitable public zone
//
// for a given hostname and a set of zones. // for a given hostname and a set of zones.
func suitableZones(hostname string, zones map[string]*route53.HostedZone) []*route53.HostedZone { func suitableZones(hostname string, zones map[string]*route53.HostedZone) []*route53.HostedZone {
var matchingZones []*route53.HostedZone var matchingZones []*route53.HostedZone

View File

@ -1241,7 +1241,6 @@ func setupAWSRecords(t *testing.T, provider *AWSProvider, endpoints []*endpoint.
_, err = provider.Records(ctx) _, err = provider.Records(ctx)
require.NoError(t, err) require.NoError(t, err)
} }
func listAWSRecords(t *testing.T, client Route53API, zone string) []*route53.ResourceRecordSet { func listAWSRecords(t *testing.T, client Route53API, zone string) []*route53.ResourceRecordSet {
@ -1301,6 +1300,7 @@ func escapeAWSRecords(t *testing.T, provider *AWSProvider, zone string) {
require.NoError(t, err) require.NoError(t, err)
} }
} }
func newAWSProvider(t *testing.T, domainFilter endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, zoneTypeFilter provider.ZoneTypeFilter, evaluateTargetHealth, dryRun bool, records []*endpoint.Endpoint) (*AWSProvider, *Route53APIStub) { func newAWSProvider(t *testing.T, domainFilter endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, zoneTypeFilter provider.ZoneTypeFilter, evaluateTargetHealth, dryRun bool, records []*endpoint.Endpoint) (*AWSProvider, *Route53APIStub) {
return newAWSProviderWithTagFilter(t, domainFilter, zoneIDFilter, zoneTypeFilter, provider.NewZoneTagFilter([]string{}), evaluateTargetHealth, dryRun, records) return newAWSProviderWithTagFilter(t, domainFilter, zoneIDFilter, zoneTypeFilter, provider.NewZoneTagFilter([]string{}), evaluateTargetHealth, dryRun, records)
} }

View File

@ -18,13 +18,11 @@ package awssd
import ( import (
"context" "context"
"strings"
"crypto/sha256" "crypto/sha256"
"encoding/hex" "encoding/hex"
"fmt" "fmt"
"regexp" "regexp"
"strings"
"github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/credentials/stscreds" "github.com/aws/aws-sdk-go/aws/credentials/stscreds"
@ -493,7 +491,9 @@ func (p *AWSSDProvider) UpdateService(service *sd.Service, ep *endpoint.Endpoint
Type: aws.String(srvType), Type: aws.String(srvType),
TTL: aws.Int64(ttl), TTL: aws.Int64(ttl),
}}, }},
}}}) },
},
})
if err != nil { if err != nil {
return err return err
} }

View File

@ -50,7 +50,6 @@ type AWSSDClientStub struct {
} }
func (s *AWSSDClientStub) CreateService(input *sd.CreateServiceInput) (*sd.CreateServiceOutput, error) { func (s *AWSSDClientStub) CreateService(input *sd.CreateServiceInput) (*sd.CreateServiceOutput, error) {
srv := &sd.Service{ srv := &sd.Service{
Id: aws.String(strconv.Itoa(rand.Intn(10000))), Id: aws.String(strconv.Itoa(rand.Intn(10000))),
DnsConfig: input.DnsConfig, DnsConfig: input.DnsConfig,
@ -150,7 +149,6 @@ func (s *AWSSDClientStub) ListServicesPages(input *sd.ListServicesInput, fn func
} }
func (s *AWSSDClientStub) RegisterInstance(input *sd.RegisterInstanceInput) (*sd.RegisterInstanceOutput, error) { func (s *AWSSDClientStub) RegisterInstance(input *sd.RegisterInstanceInput) (*sd.RegisterInstanceOutput, error) {
srvInstances, ok := s.instances[*input.ServiceId] srvInstances, ok := s.instances[*input.ServiceId]
if !ok { if !ok {
srvInstances = make(map[string]*sd.Instance) srvInstances = make(map[string]*sd.Instance)

View File

@ -139,12 +139,15 @@ func privateOthersRecordSetPropertiesGetter(values []string, ttl int64) *private
TTL: to.Int64Ptr(ttl), TTL: to.Int64Ptr(ttl),
} }
} }
func createPrivateMockRecordSet(name, recordType string, values ...string) privatedns.RecordSet { func createPrivateMockRecordSet(name, recordType string, values ...string) privatedns.RecordSet {
return createPrivateMockRecordSetMultiWithTTL(name, recordType, 0, values...) return createPrivateMockRecordSetMultiWithTTL(name, recordType, 0, values...)
} }
func createPrivateMockRecordSetWithTTL(name, recordType, value string, ttl int64) privatedns.RecordSet { func createPrivateMockRecordSetWithTTL(name, recordType, value string, ttl int64) privatedns.RecordSet {
return createPrivateMockRecordSetMultiWithTTL(name, recordType, ttl, value) return createPrivateMockRecordSetMultiWithTTL(name, recordType, ttl, value)
} }
func createPrivateMockRecordSetMultiWithTTL(name, recordType string, ttl int64, values ...string) privatedns.RecordSet { func createPrivateMockRecordSetMultiWithTTL(name, recordType string, ttl int64, values ...string) privatedns.RecordSet {
var getterFunc func(values []string, ttl int64) *privatedns.RecordSetProperties var getterFunc func(values []string, ttl int64) *privatedns.RecordSetProperties
@ -163,7 +166,6 @@ func createPrivateMockRecordSetMultiWithTTL(name, recordType string, ttl int64,
Type: to.StringPtr("Microsoft.Network/privateDnsZones/" + recordType), Type: to.StringPtr("Microsoft.Network/privateDnsZones/" + recordType),
RecordSetProperties: getterFunc(values, ttl), RecordSetProperties: getterFunc(values, ttl),
} }
} }
func (client *mockPrivateRecordSetsClient) ListComplete(ctx context.Context, resourceGroupName string, zoneName string, top *int32, recordSetNameSuffix string) (result privatedns.RecordSetListResultIterator, err error) { func (client *mockPrivateRecordSetsClient) ListComplete(ctx context.Context, resourceGroupName string, zoneName string, top *int32, recordSetNameSuffix string) (result privatedns.RecordSetListResultIterator, err error) {
@ -265,13 +267,11 @@ func TestAzurePrivateDNSRecord(t *testing.T) {
createPrivateMockRecordSetWithTTL("nginx", endpoint.RecordTypeTXT, "heritage=external-dns,external-dns/owner=default", recordTTL), createPrivateMockRecordSetWithTTL("nginx", endpoint.RecordTypeTXT, "heritage=external-dns,external-dns/owner=default", recordTTL),
createPrivateMockRecordSetWithTTL("hack", endpoint.RecordTypeCNAME, "hack.azurewebsites.net", 10), createPrivateMockRecordSetWithTTL("hack", endpoint.RecordTypeCNAME, "hack.azurewebsites.net", 10),
}) })
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
actual, err := provider.Records(context.Background()) actual, err := provider.Records(context.Background())
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -284,7 +284,6 @@ func TestAzurePrivateDNSRecord(t *testing.T) {
} }
validateAzureEndpoints(t, actual, expected) validateAzureEndpoints(t, actual, expected)
} }
func TestAzurePrivateDNSMultiRecord(t *testing.T) { func TestAzurePrivateDNSMultiRecord(t *testing.T) {
@ -301,13 +300,11 @@ func TestAzurePrivateDNSMultiRecord(t *testing.T) {
createPrivateMockRecordSetWithTTL("nginx", endpoint.RecordTypeTXT, "heritage=external-dns,external-dns/owner=default", recordTTL), createPrivateMockRecordSetWithTTL("nginx", endpoint.RecordTypeTXT, "heritage=external-dns,external-dns/owner=default", recordTTL),
createPrivateMockRecordSetWithTTL("hack", endpoint.RecordTypeCNAME, "hack.azurewebsites.net", 10), createPrivateMockRecordSetWithTTL("hack", endpoint.RecordTypeCNAME, "hack.azurewebsites.net", 10),
}) })
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
actual, err := provider.Records(context.Background()) actual, err := provider.Records(context.Background())
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -320,7 +317,6 @@ func TestAzurePrivateDNSMultiRecord(t *testing.T) {
} }
validateAzureEndpoints(t, actual, expected) validateAzureEndpoints(t, actual, expected)
} }
func TestAzurePrivateDNSApplyChanges(t *testing.T) { func TestAzurePrivateDNSApplyChanges(t *testing.T) {

View File

@ -138,12 +138,15 @@ func othersRecordSetPropertiesGetter(values []string, ttl int64) *dns.RecordSetP
TTL: to.Int64Ptr(ttl), TTL: to.Int64Ptr(ttl),
} }
} }
func createMockRecordSet(name, recordType string, values ...string) dns.RecordSet { func createMockRecordSet(name, recordType string, values ...string) dns.RecordSet {
return createMockRecordSetMultiWithTTL(name, recordType, 0, values...) return createMockRecordSetMultiWithTTL(name, recordType, 0, values...)
} }
func createMockRecordSetWithTTL(name, recordType, value string, ttl int64) dns.RecordSet { func createMockRecordSetWithTTL(name, recordType, value string, ttl int64) dns.RecordSet {
return createMockRecordSetMultiWithTTL(name, recordType, ttl, value) return createMockRecordSetMultiWithTTL(name, recordType, ttl, value)
} }
func createMockRecordSetMultiWithTTL(name, recordType string, ttl int64, values ...string) dns.RecordSet { func createMockRecordSetMultiWithTTL(name, recordType string, ttl int64, values ...string) dns.RecordSet {
var getterFunc func(values []string, ttl int64) *dns.RecordSetProperties var getterFunc func(values []string, ttl int64) *dns.RecordSetProperties
@ -162,7 +165,6 @@ func createMockRecordSetMultiWithTTL(name, recordType string, ttl int64, values
Type: to.StringPtr("Microsoft.Network/dnszones/" + recordType), Type: to.StringPtr("Microsoft.Network/dnszones/" + recordType),
RecordSetProperties: getterFunc(values, ttl), RecordSetProperties: getterFunc(values, ttl),
} }
} }
func (client *mockRecordSetsClient) ListAllByDNSZoneComplete(ctx context.Context, resourceGroupName string, zoneName string, top *int32, recordSetNameSuffix string) (result dns.RecordSetListResultIterator, err error) { func (client *mockRecordSetsClient) ListAllByDNSZoneComplete(ctx context.Context, resourceGroupName string, zoneName string, top *int32, recordSetNameSuffix string) (result dns.RecordSetListResultIterator, err error) {
@ -270,14 +272,12 @@ func TestAzureRecord(t *testing.T) {
createMockRecordSetWithTTL("nginx", endpoint.RecordTypeTXT, "heritage=external-dns,external-dns/owner=default", recordTTL), createMockRecordSetWithTTL("nginx", endpoint.RecordTypeTXT, "heritage=external-dns,external-dns/owner=default", recordTTL),
createMockRecordSetWithTTL("hack", endpoint.RecordTypeCNAME, "hack.azurewebsites.net", 10), createMockRecordSetWithTTL("hack", endpoint.RecordTypeCNAME, "hack.azurewebsites.net", 10),
}) })
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
ctx := context.Background() ctx := context.Background()
actual, err := provider.Records(ctx) actual, err := provider.Records(ctx)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -290,7 +290,6 @@ func TestAzureRecord(t *testing.T) {
} }
validateAzureEndpoints(t, actual, expected) validateAzureEndpoints(t, actual, expected)
} }
func TestAzureMultiRecord(t *testing.T) { func TestAzureMultiRecord(t *testing.T) {
@ -307,14 +306,12 @@ func TestAzureMultiRecord(t *testing.T) {
createMockRecordSetWithTTL("nginx", endpoint.RecordTypeTXT, "heritage=external-dns,external-dns/owner=default", recordTTL), createMockRecordSetWithTTL("nginx", endpoint.RecordTypeTXT, "heritage=external-dns,external-dns/owner=default", recordTTL),
createMockRecordSetWithTTL("hack", endpoint.RecordTypeCNAME, "hack.azurewebsites.net", 10), createMockRecordSetWithTTL("hack", endpoint.RecordTypeCNAME, "hack.azurewebsites.net", 10),
}) })
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
ctx := context.Background() ctx := context.Background()
actual, err := provider.Records(ctx) actual, err := provider.Records(ctx)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -327,7 +324,6 @@ func TestAzureMultiRecord(t *testing.T) {
} }
validateAzureEndpoints(t, actual, expected) validateAzureEndpoints(t, actual, expected)
} }
func TestAzureApplyChanges(t *testing.T) { func TestAzureApplyChanges(t *testing.T) {
@ -461,14 +457,12 @@ func TestAzureNameFilter(t *testing.T) {
createMockRecordSetWithTTL("nginx", endpoint.RecordTypeTXT, "heritage=external-dns,external-dns/owner=default", recordTTL), createMockRecordSetWithTTL("nginx", endpoint.RecordTypeTXT, "heritage=external-dns,external-dns/owner=default", recordTTL),
createMockRecordSetWithTTL("hack", endpoint.RecordTypeCNAME, "hack.azurewebsites.net", 10), createMockRecordSetWithTTL("hack", endpoint.RecordTypeCNAME, "hack.azurewebsites.net", 10),
}) })
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
ctx := context.Background() ctx := context.Background()
actual, err := provider.Records(ctx) actual, err := provider.Records(ctx)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -479,7 +473,6 @@ func TestAzureNameFilter(t *testing.T) {
} }
validateAzureEndpoints(t, actual, expected) validateAzureEndpoints(t, actual, expected)
} }
func TestAzureApplyChangesZoneName(t *testing.T) { func TestAzureApplyChangesZoneName(t *testing.T) {

View File

@ -109,7 +109,6 @@ func getAccessToken(cfg config, environment azure.Environment) (*adal.ServicePri
token, err := adal.NewServicePrincipalTokenFromManagedIdentity(environment.ServiceManagementEndpoint, &adal.ManagedIdentityOptions{ token, err := adal.NewServicePrincipalTokenFromManagedIdentity(environment.ServiceManagementEndpoint, &adal.ManagedIdentityOptions{
ClientID: cfg.UserAssignedIdentityID, ClientID: cfg.UserAssignedIdentityID,
}) })
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to create the managed service identity token: %v", err) return nil, fmt.Errorf("failed to create the managed service identity token: %v", err)
} }

View File

@ -18,11 +18,12 @@ package azure
import ( import (
"fmt" "fmt"
"github.com/Azure/go-autorest/autorest/azure"
"io/ioutil" "io/ioutil"
"os" "os"
"reflect" "reflect"
"testing" "testing"
"github.com/Azure/go-autorest/autorest/azure"
) )
func TestGetAzureEnvironmentConfig(t *testing.T) { func TestGetAzureEnvironmentConfig(t *testing.T) {

View File

@ -48,14 +48,17 @@ type Changes struct {
func (g mockGatewayClient) GetBluecatZones(zoneName string) ([]api.BluecatZone, error) { func (g mockGatewayClient) GetBluecatZones(zoneName string) ([]api.BluecatZone, error) {
return *g.mockBluecatZones, nil return *g.mockBluecatZones, nil
} }
func (g mockGatewayClient) GetHostRecords(zone string, records *[]api.BluecatHostRecord) error { func (g mockGatewayClient) GetHostRecords(zone string, records *[]api.BluecatHostRecord) error {
*records = *g.mockBluecatHosts *records = *g.mockBluecatHosts
return nil return nil
} }
func (g mockGatewayClient) GetCNAMERecords(zone string, records *[]api.BluecatCNAMERecord) error { func (g mockGatewayClient) GetCNAMERecords(zone string, records *[]api.BluecatCNAMERecord) error {
*records = *g.mockBluecatCNAMEs *records = *g.mockBluecatCNAMEs
return nil return nil
} }
func (g mockGatewayClient) GetHostRecord(name string, record *api.BluecatHostRecord) error { func (g mockGatewayClient) GetHostRecord(name string, record *api.BluecatHostRecord) error {
for _, currentRecord := range *g.mockBluecatHosts { for _, currentRecord := range *g.mockBluecatHosts {
if currentRecord.Name == strings.Split(name, ".")[0] { if currentRecord.Name == strings.Split(name, ".")[0] {
@ -65,6 +68,7 @@ func (g mockGatewayClient) GetHostRecord(name string, record *api.BluecatHostRec
} }
return nil return nil
} }
func (g mockGatewayClient) GetCNAMERecord(name string, record *api.BluecatCNAMERecord) error { func (g mockGatewayClient) GetCNAMERecord(name string, record *api.BluecatCNAMERecord) error {
for _, currentRecord := range *g.mockBluecatCNAMEs { for _, currentRecord := range *g.mockBluecatCNAMEs {
if currentRecord.Name == strings.Split(name, ".")[0] { if currentRecord.Name == strings.Split(name, ".")[0] {
@ -74,24 +78,30 @@ func (g mockGatewayClient) GetCNAMERecord(name string, record *api.BluecatCNAMER
} }
return nil return nil
} }
func (g mockGatewayClient) CreateHostRecord(zone string, req *api.BluecatCreateHostRecordRequest) (err error) { func (g mockGatewayClient) CreateHostRecord(zone string, req *api.BluecatCreateHostRecordRequest) (err error) {
return nil return nil
} }
func (g mockGatewayClient) CreateCNAMERecord(zone string, req *api.BluecatCreateCNAMERecordRequest) (err error) { func (g mockGatewayClient) CreateCNAMERecord(zone string, req *api.BluecatCreateCNAMERecordRequest) (err error) {
return nil return nil
} }
func (g mockGatewayClient) DeleteHostRecord(name string, zone string) (err error) { func (g mockGatewayClient) DeleteHostRecord(name string, zone string) (err error) {
*g.mockBluecatHosts = nil *g.mockBluecatHosts = nil
return nil return nil
} }
func (g mockGatewayClient) DeleteCNAMERecord(name string, zone string) (err error) { func (g mockGatewayClient) DeleteCNAMERecord(name string, zone string) (err error) {
*g.mockBluecatCNAMEs = nil *g.mockBluecatCNAMEs = nil
return nil return nil
} }
func (g mockGatewayClient) GetTXTRecords(zone string, records *[]api.BluecatTXTRecord) error { func (g mockGatewayClient) GetTXTRecords(zone string, records *[]api.BluecatTXTRecord) error {
*records = *g.mockBluecatTXTs *records = *g.mockBluecatTXTs
return nil return nil
} }
func (g mockGatewayClient) GetTXTRecord(name string, record *api.BluecatTXTRecord) error { func (g mockGatewayClient) GetTXTRecord(name string, record *api.BluecatTXTRecord) error {
for _, currentRecord := range *g.mockBluecatTXTs { for _, currentRecord := range *g.mockBluecatTXTs {
if currentRecord.Name == name { if currentRecord.Name == name {
@ -101,13 +111,16 @@ func (g mockGatewayClient) GetTXTRecord(name string, record *api.BluecatTXTRecor
} }
return nil return nil
} }
func (g mockGatewayClient) CreateTXTRecord(zone string, req *api.BluecatCreateTXTRecordRequest) error { func (g mockGatewayClient) CreateTXTRecord(zone string, req *api.BluecatCreateTXTRecordRequest) error {
return nil return nil
} }
func (g mockGatewayClient) DeleteTXTRecord(name string, zone string) error { func (g mockGatewayClient) DeleteTXTRecord(name string, zone string) error {
*g.mockBluecatTXTs = nil *g.mockBluecatTXTs = nil
return nil return nil
} }
func (g mockGatewayClient) ServerFullDeploy() error { func (g mockGatewayClient) ServerFullDeploy() error {
return nil return nil
} }
@ -271,6 +284,7 @@ func TestBluecatApplyChangesCreate(t *testing.T) {
validateEndpoints(t, actual, []*endpoint.Endpoint{}) validateEndpoints(t, actual, []*endpoint.Endpoint{})
} }
} }
func TestBluecatApplyChangesDelete(t *testing.T) { func TestBluecatApplyChangesDelete(t *testing.T) {
client := mockGatewayClient{ client := mockGatewayClient{
mockBluecatZones: &[]api.BluecatZone{ mockBluecatZones: &[]api.BluecatZone{
@ -354,7 +368,6 @@ func TestBluecatApplyChangesDeleteWithOwner(t *testing.T) {
} }
validateEndpoints(t, actual, []*endpoint.Endpoint{}) validateEndpoints(t, actual, []*endpoint.Endpoint{})
} }
} }
// TODO: ensure findZone method is tested // TODO: ensure findZone method is tested

View File

@ -176,7 +176,6 @@ func GetBluecatGatewayToken(cfg BluecatConfig) (string, http.Cookie, error) {
url := cfg.GatewayHost + "/rest_login" url := cfg.GatewayHost + "/rest_login"
response, err := executeHTTPRequest(cfg.SkipTLSVerify, http.MethodPost, url, "", bytes.NewBuffer(body), http.Cookie{}) response, err := executeHTTPRequest(cfg.SkipTLSVerify, http.MethodPost, url, "", bytes.NewBuffer(body), http.Cookie{})
if err != nil { if err != nil {
return "", http.Cookie{}, errors.Wrap(err, "error obtaining API token from bluecat gateway") return "", http.Cookie{}, errors.Wrap(err, "error obtaining API token from bluecat gateway")
} }

View File

@ -96,9 +96,11 @@ func (z zoneService) CreateDNSRecord(ctx context.Context, zoneID string, rr clou
func (z zoneService) DNSRecords(ctx context.Context, zoneID string, rr cloudflare.DNSRecord) ([]cloudflare.DNSRecord, error) { func (z zoneService) DNSRecords(ctx context.Context, zoneID string, rr cloudflare.DNSRecord) ([]cloudflare.DNSRecord, error) {
return z.service.DNSRecords(ctx, zoneID, rr) return z.service.DNSRecords(ctx, zoneID, rr)
} }
func (z zoneService) UpdateDNSRecord(ctx context.Context, zoneID, recordID string, rr cloudflare.DNSRecord) error { func (z zoneService) UpdateDNSRecord(ctx context.Context, zoneID, recordID string, rr cloudflare.DNSRecord) error {
return z.service.UpdateDNSRecord(ctx, zoneID, recordID, rr) return z.service.UpdateDNSRecord(ctx, zoneID, recordID, rr)
} }
func (z zoneService) DeleteDNSRecord(ctx context.Context, zoneID, recordID string) error { func (z zoneService) DeleteDNSRecord(ctx context.Context, zoneID, recordID string) error {
return z.service.DeleteDNSRecord(ctx, zoneID, recordID) return z.service.DeleteDNSRecord(ctx, zoneID, recordID)
} }
@ -145,7 +147,7 @@ func NewCloudFlareProvider(domainFilter endpoint.DomainFilter, zoneIDFilter prov
return nil, fmt.Errorf("failed to initialize cloudflare provider: %v", err) return nil, fmt.Errorf("failed to initialize cloudflare provider: %v", err)
} }
provider := &CloudFlareProvider{ provider := &CloudFlareProvider{
//Client: config, // Client: config,
Client: zoneService{config}, Client: zoneService{config},
domainFilter: domainFilter, domainFilter: domainFilter,
zoneIDFilter: zoneIDFilter, zoneIDFilter: zoneIDFilter,

View File

@ -244,7 +244,6 @@ func AssertActions(t *testing.T, provider *CloudFlareProvider, endpoints []*endp
ctx := context.Background() ctx := context.Background()
records, err := provider.Records(ctx) records, err := provider.Records(ctx)
if err != nil { if err != nil {
t.Fatalf("cannot fetch records, %s", err) t.Fatalf("cannot fetch records, %s", err)
} }
@ -309,7 +308,6 @@ func TestCloudflareA(t *testing.T) {
}, },
[]string{endpoint.RecordTypeA, endpoint.RecordTypeCNAME}, []string{endpoint.RecordTypeA, endpoint.RecordTypeCNAME},
) )
} }
func TestCloudflareCname(t *testing.T) { func TestCloudflareCname(t *testing.T) {
@ -501,7 +499,7 @@ func TestCloudflareProxiedOverrideIllegal(t *testing.T) {
func TestCloudflareSetProxied(t *testing.T) { func TestCloudflareSetProxied(t *testing.T) {
var proxied *bool = proxyEnabled var proxied *bool = proxyEnabled
var notProxied *bool = proxyDisabled var notProxied *bool = proxyDisabled
var testCases = []struct { testCases := []struct {
recordType string recordType string
domain string domain string
proxiable *bool proxiable *bool
@ -674,7 +672,6 @@ func TestCloudflareApplyChanges(t *testing.T) {
Targets: endpoint.Targets{"target-new"}, Targets: endpoint.Targets{"target-new"},
}} }}
err := provider.ApplyChanges(context.Background(), changes) err := provider.ApplyChanges(context.Background(), changes)
if err != nil { if err != nil {
t.Errorf("should not fail, %s", err) t.Errorf("should not fail, %s", err)
} }
@ -1111,7 +1108,6 @@ func TestCloudflareComplexUpdate(t *testing.T) {
ctx := context.Background() ctx := context.Background()
records, err := provider.Records(ctx) records, err := provider.Records(ctx)
if err != nil { if err != nil {
t.Errorf("should not fail, %s", err) t.Errorf("should not fail, %s", err)
} }
@ -1146,7 +1142,7 @@ func TestCloudflareComplexUpdate(t *testing.T) {
} }
td.CmpDeeply(t, client.Actions, []MockAction{ td.CmpDeeply(t, client.Actions, []MockAction{
MockAction{ {
Name: "Create", Name: "Create",
ZoneId: "001", ZoneId: "001",
RecordData: cloudflare.DNSRecord{ RecordData: cloudflare.DNSRecord{
@ -1157,7 +1153,7 @@ func TestCloudflareComplexUpdate(t *testing.T) {
Proxied: proxyEnabled, Proxied: proxyEnabled,
}, },
}, },
MockAction{ {
Name: "Update", Name: "Update",
ZoneId: "001", ZoneId: "001",
RecordId: "1234567890", RecordId: "1234567890",
@ -1169,7 +1165,7 @@ func TestCloudflareComplexUpdate(t *testing.T) {
Proxied: proxyEnabled, Proxied: proxyEnabled,
}, },
}, },
MockAction{ {
Name: "Delete", Name: "Delete",
ZoneId: "001", ZoneId: "001",
RecordId: "2345678901", RecordId: "2345678901",
@ -1179,7 +1175,7 @@ func TestCloudflareComplexUpdate(t *testing.T) {
func TestCustomTTLWithEnabledProxyNotChanged(t *testing.T) { func TestCustomTTLWithEnabledProxyNotChanged(t *testing.T) {
client := NewMockCloudFlareClientWithRecords(map[string][]cloudflare.DNSRecord{ client := NewMockCloudFlareClientWithRecords(map[string][]cloudflare.DNSRecord{
"001": []cloudflare.DNSRecord{ "001": {
{ {
ID: "1234567890", ID: "1234567890",
ZoneID: "001", ZoneID: "001",
@ -1197,7 +1193,6 @@ func TestCustomTTLWithEnabledProxyNotChanged(t *testing.T) {
} }
records, err := provider.Records(context.Background()) records, err := provider.Records(context.Background())
if err != nil { if err != nil {
t.Errorf("should not fail, %s", err) t.Errorf("should not fail, %s", err)
} }

View File

@ -232,7 +232,7 @@ func getETCDConfig() (*etcdcv3.Config, error) {
} }
} }
//newETCDClient is an etcd client constructor // newETCDClient is an etcd client constructor
func newETCDClient() (coreDNSClient, error) { func newETCDClient() (coreDNSClient, error) {
cfg, err := getETCDConfig() cfg, err := getETCDConfig()
if err != nil { if err != nil {

View File

@ -329,7 +329,6 @@ func TestDesignateCreateRecords(t *testing.T) {
} }
func testDesignateCreateRecords(t *testing.T, client *fakeDesignateClient) []*recordsets.RecordSet { func testDesignateCreateRecords(t *testing.T, client *fakeDesignateClient) []*recordsets.RecordSet {
for i, zoneName := range []string{"example.com.", "test.net."} { for i, zoneName := range []string{"example.com.", "test.net."} {
client.AddZone(zones.Zone{ client.AddZone(zones.Zone{
ID: fmt.Sprintf("zone-%d", i+1), ID: fmt.Sprintf("zone-%d", i+1),

View File

@ -75,9 +75,11 @@ func (m *mockDigitalOceanClient) CreateRecord(context.Context, string, *godo.Dom
func (m *mockDigitalOceanClient) Delete(context.Context, string) (*godo.Response, error) { func (m *mockDigitalOceanClient) Delete(context.Context, string) (*godo.Response, error) {
return nil, nil return nil, nil
} }
func (m *mockDigitalOceanClient) DeleteRecord(ctx context.Context, domain string, id int) (*godo.Response, error) { func (m *mockDigitalOceanClient) DeleteRecord(ctx context.Context, domain string, id int) (*godo.Response, error) {
return nil, nil return nil, nil
} }
func (m *mockDigitalOceanClient) EditRecord(ctx context.Context, domain string, id int, editRequest *godo.DomainRecordEditRequest) (*godo.DomainRecord, *godo.Response, error) { func (m *mockDigitalOceanClient) EditRecord(ctx context.Context, domain string, id int, editRequest *godo.DomainRecordEditRequest) (*godo.DomainRecord, *godo.Response, error) {
return &godo.DomainRecord{ID: 1}, nil, nil return &godo.DomainRecord{ID: 1}, nil, nil
} }
@ -157,9 +159,11 @@ func (m *mockDigitalOceanRecordsFail) CreateRecord(context.Context, string, *god
func (m *mockDigitalOceanRecordsFail) Delete(context.Context, string) (*godo.Response, error) { func (m *mockDigitalOceanRecordsFail) Delete(context.Context, string) (*godo.Response, error) {
return nil, nil return nil, nil
} }
func (m *mockDigitalOceanRecordsFail) DeleteRecord(ctx context.Context, domain string, id int) (*godo.Response, error) { func (m *mockDigitalOceanRecordsFail) DeleteRecord(ctx context.Context, domain string, id int) (*godo.Response, error) {
return nil, nil return nil, nil
} }
func (m *mockDigitalOceanRecordsFail) EditRecord(ctx context.Context, domain string, id int, editRequest *godo.DomainRecordEditRequest) (*godo.DomainRecord, *godo.Response, error) { func (m *mockDigitalOceanRecordsFail) EditRecord(ctx context.Context, domain string, id int, editRequest *godo.DomainRecordEditRequest) (*godo.DomainRecord, *godo.Response, error) {
return &godo.DomainRecord{ID: 1}, nil, nil return &godo.DomainRecord{ID: 1}, nil, nil
} }

View File

@ -32,9 +32,11 @@ import (
"sigs.k8s.io/external-dns/provider" "sigs.k8s.io/external-dns/provider"
) )
var mockProvider dnsimpleProvider var (
var dnsimpleListRecordsResponse dnsimple.ZoneRecordsResponse mockProvider dnsimpleProvider
var dnsimpleListZonesResponse dnsimple.ZonesResponse dnsimpleListRecordsResponse dnsimple.ZoneRecordsResponse
dnsimpleListZonesResponse dnsimple.ZonesResponse
)
func TestDnsimpleServices(t *testing.T) { func TestDnsimpleServices(t *testing.T) {
// Setup example responses // Setup example responses

View File

@ -252,9 +252,9 @@ func apiRetryLoop(f func() error) error {
func (d *dynProviderState) allRecordsToEndpoints(records *dynsoap.GetAllRecordsResponseType) []*endpoint.Endpoint { func (d *dynProviderState) allRecordsToEndpoints(records *dynsoap.GetAllRecordsResponseType) []*endpoint.Endpoint {
result := []*endpoint.Endpoint{} result := []*endpoint.Endpoint{}
//Convert each record to an endpoint // Convert each record to an endpoint
//Process A Records // Process A Records
for _, rec := range records.Data.A_records { for _, rec := range records.Data.A_records {
ep := &endpoint.Endpoint{ ep := &endpoint.Endpoint{
DNSName: rec.Fqdn, DNSName: rec.Fqdn,
@ -266,7 +266,7 @@ func (d *dynProviderState) allRecordsToEndpoints(records *dynsoap.GetAllRecordsR
result = append(result, ep) result = append(result, ep)
} }
//Process CNAME Records // Process CNAME Records
for _, rec := range records.Data.Cname_records { for _, rec := range records.Data.Cname_records {
ep := &endpoint.Endpoint{ ep := &endpoint.Endpoint{
DNSName: rec.Fqdn, DNSName: rec.Fqdn,
@ -278,7 +278,7 @@ func (d *dynProviderState) allRecordsToEndpoints(records *dynsoap.GetAllRecordsR
result = append(result, ep) result = append(result, ep)
} }
//Process TXT Records // Process TXT Records
for _, rec := range records.Data.Txt_records { for _, rec := range records.Data.Txt_records {
ep := &endpoint.Endpoint{ ep := &endpoint.Endpoint{
DNSName: rec.Fqdn, DNSName: rec.Fqdn,
@ -321,7 +321,6 @@ func (d *dynProviderState) fetchZoneSerial(client *dynect.Client, zone string) (
var resp dynect.ZoneResponse var resp dynect.ZoneResponse
err := client.Do("GET", fmt.Sprintf("Zone/%s", zone), nil, &resp) err := client.Do("GET", fmt.Sprintf("Zone/%s", zone), nil, &resp)
if err != nil { if err != nil {
return 0, err return 0, err
} }
@ -329,7 +328,7 @@ func (d *dynProviderState) fetchZoneSerial(client *dynect.Client, zone string) (
return resp.Data.Serial, nil return resp.Data.Serial, nil
} }
//Use SOAP to fetch all records with a single call // Use SOAP to fetch all records with a single call
func (d *dynProviderState) fetchAllRecordsInZone(zone string) (*dynsoap.GetAllRecordsResponseType, error) { func (d *dynProviderState) fetchAllRecordsInZone(zone string) (*dynsoap.GetAllRecordsResponseType, error) {
var err error var err error
@ -368,7 +367,7 @@ func (d *dynProviderState) fetchAllRecordsInZone(zone string) (*dynsoap.GetAllRe
Fault_incompat: 0, Fault_incompat: 0,
} }
var records = &dynsoap.GetAllRecordsResponseType{} records := &dynsoap.GetAllRecordsResponseType{}
err = apiRetryLoop(func() error { err = apiRetryLoop(func() error {
records, err = service.GetAllRecords(&req) records, err = service.GetAllRecords(&req)
@ -388,7 +387,7 @@ func (d *dynProviderState) fetchAllRecordsInZone(zone string) (*dynsoap.GetAllRe
Fault_incompat: 0, Fault_incompat: 0,
} }
var jobResults = dynsoap.GetJobResponseType{} jobResults := dynsoap.GetJobResponseType{}
err = apiRetryLoop(func() error { err = apiRetryLoop(func() error {
jobResults, err := service.GetJob(&jobRequest) jobResults, err := service.GetJob(&jobRequest)
if strings.ToLower(jobResults.Status) == "incomplete" { if strings.ToLower(jobResults.Status) == "incomplete" {
@ -415,7 +414,7 @@ func (d *dynProviderState) buildLinkToRecord(ep *endpoint.Endpoint) string {
if ep == nil { if ep == nil {
return "" return ""
} }
var matchingZone = "" matchingZone := ""
for _, zone := range d.ZoneIDFilter.ZoneIDs { for _, zone := range d.ZoneIDFilter.ZoneIDs {
if strings.HasSuffix(ep.DNSName, zone) { if strings.HasSuffix(ep.DNSName, zone) {
matchingZone = zone matchingZone = zone
@ -448,10 +447,11 @@ func (d *dynProviderState) login() (*dynect.Client, error) {
} }
client := dynect.NewClient(d.CustomerName) client := dynect.NewClient(d.CustomerName)
var req = dynect.LoginBlock{ req := dynect.LoginBlock{
Username: d.Username, Username: d.Username,
Password: d.Password, Password: d.Password,
CustomerName: d.CustomerName} CustomerName: d.CustomerName,
}
var resp dynect.LoginResponse var resp dynect.LoginResponse
@ -618,7 +618,7 @@ func (d *dynProviderState) Records(ctx context.Context) ([]*endpoint.Endpoint, e
continue continue
} }
//Fetch All Records // Fetch All Records
records, err := d.fetchAllRecordsInZone(zone) records, err := d.fetchAllRecordsInZone(zone)
if err != nil { if err != nil {
return nil, err return nil, err

View File

@ -43,12 +43,13 @@ type updateRecordExoscale struct {
updateDNSRecord egoscale.UpdateDNSRecord updateDNSRecord egoscale.UpdateDNSRecord
} }
var createExoscale []createRecordExoscale var (
var deleteExoscale []deleteRecordExoscale createExoscale []createRecordExoscale
var updateExoscale []updateRecordExoscale deleteExoscale []deleteRecordExoscale
updateExoscale []updateRecordExoscale
)
type ExoscaleClientStub struct { type ExoscaleClientStub struct{}
}
func NewExoscaleClientStub() EgoscaleClientI { func NewExoscaleClientStub() EgoscaleClientI {
ep := &ExoscaleClientStub{} ep := &ExoscaleClientStub{}
@ -59,6 +60,7 @@ func (ep *ExoscaleClientStub) DeleteRecord(ctx context.Context, name string, rec
deleteExoscale = append(deleteExoscale, deleteRecordExoscale{name: name, recordID: recordID}) deleteExoscale = append(deleteExoscale, deleteRecordExoscale{name: name, recordID: recordID})
return nil return nil
} }
func (ep *ExoscaleClientStub) GetRecords(ctx context.Context, name string) ([]egoscale.DNSRecord, error) { func (ep *ExoscaleClientStub) GetRecords(ctx context.Context, name string) ([]egoscale.DNSRecord, error) {
init := []egoscale.DNSRecord{ init := []egoscale.DNSRecord{
{ID: 0, Name: "v4.barfoo.com", RecordType: "ALIAS"}, {ID: 0, Name: "v4.barfoo.com", RecordType: "ALIAS"},
@ -79,14 +81,17 @@ func (ep *ExoscaleClientStub) GetRecords(ctx context.Context, name string) ([]eg
return rec, nil return rec, nil
} }
func (ep *ExoscaleClientStub) UpdateRecord(ctx context.Context, name string, rec egoscale.UpdateDNSRecord) (*egoscale.DNSRecord, error) { func (ep *ExoscaleClientStub) UpdateRecord(ctx context.Context, name string, rec egoscale.UpdateDNSRecord) (*egoscale.DNSRecord, error) {
updateExoscale = append(updateExoscale, updateRecordExoscale{name: name, updateDNSRecord: rec}) updateExoscale = append(updateExoscale, updateRecordExoscale{name: name, updateDNSRecord: rec})
return nil, nil return nil, nil
} }
func (ep *ExoscaleClientStub) CreateRecord(ctx context.Context, name string, rec egoscale.DNSRecord) (*egoscale.DNSRecord, error) { func (ep *ExoscaleClientStub) CreateRecord(ctx context.Context, name string, rec egoscale.DNSRecord) (*egoscale.DNSRecord, error) {
createExoscale = append(createExoscale, createRecordExoscale{name: name, rec: rec}) createExoscale = append(createExoscale, createRecordExoscale{name: name, rec: rec})
return nil, nil return nil, nil
} }
func (ep *ExoscaleClientStub) GetDomains(ctx context.Context) ([]egoscale.DNSDomain, error) { func (ep *ExoscaleClientStub) GetDomains(ctx context.Context) ([]egoscale.DNSDomain, error) {
dom := []egoscale.DNSDomain{ dom := []egoscale.DNSDomain{
{ID: 1, Name: "foo.com"}, {ID: 1, Name: "foo.com"},

View File

@ -16,14 +16,14 @@ package gandi
import ( import (
"context" "context"
"fmt" "fmt"
"os"
"reflect"
"strings"
"testing"
"github.com/go-gandi/go-gandi/domain" "github.com/go-gandi/go-gandi/domain"
"github.com/go-gandi/go-gandi/livedns" "github.com/go-gandi/go-gandi/livedns"
"github.com/maxatome/go-testdeep/td" "github.com/maxatome/go-testdeep/td"
"strings"
"os"
"reflect"
"testing"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
@ -62,9 +62,11 @@ func mockGandiClientNewWithFailure(functionToFail string) *mockGandiClient {
} }
} }
const domainUriPrefix = "https://api.gandi.net/v5/domain/domains/" const (
const exampleDotComUri = domainUriPrefix + "example.com" domainUriPrefix = "https://api.gandi.net/v5/domain/domains/"
const exampleDotNetUri = domainUriPrefix + "example.net" exampleDotComUri = domainUriPrefix + "example.com"
exampleDotNetUri = domainUriPrefix + "example.net"
)
func testRecords() []livedns.DomainRecord { func testRecords() []livedns.DomainRecord {
return []livedns.DomainRecord{ return []livedns.DomainRecord{
@ -286,7 +288,6 @@ func TestGandiProvider_TestData(t *testing.T) {
if !reflect.DeepEqual(expectedRecordsAnswer, testingRecordsAnswer) { if !reflect.DeepEqual(expectedRecordsAnswer, testingRecordsAnswer) {
t.Errorf("should be equal, %s", err) t.Errorf("should be equal, %s", err)
} }
} }
func TestGandiProvider_Records(t *testing.T) { func TestGandiProvider_Records(t *testing.T) {
@ -319,7 +320,6 @@ func TestGandiProvider_Records(t *testing.T) {
} }
func TestGandiProvider_RecordsAppliesDomainFilter(t *testing.T) { func TestGandiProvider_RecordsAppliesDomainFilter(t *testing.T) {
mockedClient := mockGandiClientNew() mockedClient := mockGandiClientNew()
mockedProvider := &GandiProvider{ mockedProvider := &GandiProvider{
@ -343,7 +343,6 @@ func TestGandiProvider_RecordsAppliesDomainFilter(t *testing.T) {
} }
func TestGandiProvider_RecordsErrorOnMultipleValues(t *testing.T) { func TestGandiProvider_RecordsErrorOnMultipleValues(t *testing.T) {
mockedClient := mockGandiClientNewWithRecords([]livedns.DomainRecord{ mockedClient := mockGandiClientNewWithRecords([]livedns.DomainRecord{
{ {
RrsetValues: []string{"foo", "bar"}, RrsetValues: []string{"foo", "bar"},

View File

@ -259,7 +259,7 @@ func (c *Client) CallAPI(method, path string, reqBody, resType interface{}, need
// - full serialized request body // - full serialized request body
// - server current time (takes time delta into account) // - server current time (takes time delta into account)
// //
// Context is used by http.Client to handle context cancelation // # Context is used by http.Client to handle context cancelation
// //
// Call will automatically assemble the target url from the endpoint // Call will automatically assemble the target url from the endpoint
// configured in the client instance and the path argument. If the reqBody // configured in the client instance and the path argument. If the reqBody

View File

@ -44,10 +44,8 @@ var actionNames = []string{
"delete", "delete",
} }
var ( // ErrRecordToMutateNotFound when ApplyChange has to update/delete and didn't found the record in the existing zone (Change with no record ID)
// ErrRecordToMutateNotFound when ApplyChange has to update/delete and didn't found the record in the existing zone (Change with no record ID) var ErrRecordToMutateNotFound = errors.New("record to mutate not found in current zone")
ErrRecordToMutateNotFound = errors.New("record to mutate not found in current zone")
)
type gdClient interface { type gdClient interface {
Patch(string, interface{}, interface{}) error Patch(string, interface{}, interface{}) error
@ -141,7 +139,6 @@ func (z gdZoneIDName) findZoneRecord(hostname string) (suitableZoneID string, su
// NewGoDaddyProvider initializes a new GoDaddy DNS based Provider. // NewGoDaddyProvider initializes a new GoDaddy DNS based Provider.
func NewGoDaddyProvider(ctx context.Context, domainFilter endpoint.DomainFilter, ttl int64, apiKey, apiSecret string, useOTE, dryRun bool) (*GDProvider, error) { func NewGoDaddyProvider(ctx context.Context, domainFilter endpoint.DomainFilter, ttl int64, apiKey, apiSecret string, useOTE, dryRun bool) (*GDProvider, error) {
client, err := NewClient(useOTE, apiKey, apiSecret) client, err := NewClient(useOTE, apiKey, apiSecret)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -177,7 +174,6 @@ func (p *GDProvider) zones() ([]string, error) {
func (p *GDProvider) zonesRecords(ctx context.Context, all bool) ([]string, []gdRecords, error) { func (p *GDProvider) zonesRecords(ctx context.Context, all bool) ([]string, []gdRecords, error) {
var allRecords []gdRecords var allRecords []gdRecords
zones, err := p.zones() zones, err := p.zones()
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err
} }
@ -186,7 +182,6 @@ func (p *GDProvider) zonesRecords(ctx context.Context, all bool) ([]string, []gd
allRecords = []gdRecords{} allRecords = []gdRecords{}
} else if len(zones) == 1 { } else if len(zones) == 1 {
record, err := p.records(&ctx, zones[0], all) record, err := p.records(&ctx, zones[0], all)
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err
} }
@ -201,7 +196,6 @@ func (p *GDProvider) zonesRecords(ctx context.Context, all bool) ([]string, []gd
zone := zoneName zone := zoneName
eg.Go(func() error { eg.Go(func() error {
record, err := p.records(&ctx, zone, all) record, err := p.records(&ctx, zone, all)
if err != nil { if err != nil {
return err return err
} }
@ -316,7 +310,6 @@ func (p *GDProvider) groupByNameAndType(zoneRecords []gdRecords) []*endpoint.End
// Records returns the list of records in all relevant zones. // Records returns the list of records in all relevant zones.
func (p *GDProvider) Records(ctx context.Context) ([]*endpoint.Endpoint, error) { func (p *GDProvider) Records(ctx context.Context) ([]*endpoint.Endpoint, error) {
_, records, err := p.zonesRecords(ctx, false) _, records, err := p.zonesRecords(ctx, false)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -390,7 +383,6 @@ func (p *GDProvider) ApplyChanges(ctx context.Context, changes *plan.Changes) er
} }
_, records, err := p.zonesRecords(ctx, true) _, records, err := p.zonesRecords(ctx, true)
if err != nil { if err != nil {
return err return err
} }
@ -549,7 +541,6 @@ func maxOf(vars ...int64) int64 {
func toString(obj interface{}) string { func toString(obj interface{}) string {
b, err := json.MarshalIndent(obj, "", " ") b, err := json.MarshalIndent(obj, "", " ")
if err != nil { if err != nil {
return fmt.Sprintf("<%v>", err) return fmt.Sprintf("<%v>", err)
} }

View File

@ -745,7 +745,6 @@ func newGoogleProviderZoneOverlap(t *testing.T, domainFilter endpoint.DomainFilt
provider.dryRun = dryRun provider.dryRun = dryRun
return provider return provider
} }
func newGoogleProvider(t *testing.T, domainFilter endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, dryRun bool, records []*endpoint.Endpoint) *GoogleProvider { func newGoogleProvider(t *testing.T, domainFilter endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, dryRun bool, records []*endpoint.Endpoint) *GoogleProvider {

View File

@ -156,7 +156,6 @@ func NewInfobloxProvider(ibStartupCfg StartupConfig) (*ProviderConfig, error) {
requestor := &ibclient.WapiHttpRequestor{} requestor := &ibclient.WapiHttpRequestor{}
client, err := ibclient.NewConnector(hostCfg, authCfg, transportConfig, requestBuilder, requestor) client, err := ibclient.NewConnector(hostCfg, authCfg, transportConfig, requestBuilder, requestor)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@ -419,7 +419,6 @@ func TestInfobloxRecords(t *testing.T) {
providerCfg := newInfobloxProvider(endpoint.NewDomainFilter([]string{"example.com"}), provider.NewZoneIDFilter([]string{""}), true, false, &client) providerCfg := newInfobloxProvider(endpoint.NewDomainFilter([]string{"example.com"}), provider.NewZoneIDFilter([]string{""}), true, false, &client)
actual, err := providerCfg.Records(context.Background()) actual, err := providerCfg.Records(context.Background())
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -471,7 +470,6 @@ func TestInfobloxAdjustEndpoints(t *testing.T) {
} }
func TestInfobloxRecordsReverse(t *testing.T) { func TestInfobloxRecordsReverse(t *testing.T) {
client := mockIBConnector{ client := mockIBConnector{
mockInfobloxZones: &[]ibclient.ZoneAuth{ mockInfobloxZones: &[]ibclient.ZoneAuth{
createMockInfobloxZone("10.0.0.0/24"), createMockInfobloxZone("10.0.0.0/24"),
@ -485,7 +483,6 @@ func TestInfobloxRecordsReverse(t *testing.T) {
providerCfg := newInfobloxProvider(endpoint.NewDomainFilter([]string{"10.0.0.0/24"}), provider.NewZoneIDFilter([]string{""}), true, true, &client) providerCfg := newInfobloxProvider(endpoint.NewDomainFilter([]string{"10.0.0.0/24"}), provider.NewZoneIDFilter([]string{""}), true, true, &client)
actual, err := providerCfg.Records(context.Background()) actual, err := providerCfg.Records(context.Background())
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }

View File

@ -29,9 +29,7 @@ import (
"sigs.k8s.io/external-dns/provider" "sigs.k8s.io/external-dns/provider"
) )
var ( var _ provider.Provider = &InMemoryProvider{}
_ provider.Provider = &InMemoryProvider{}
)
func TestInMemoryProvider(t *testing.T) { func TestInMemoryProvider(t *testing.T) {
t.Run("findByType", testInMemoryFindByType) t.Run("findByType", testInMemoryFindByType)
@ -684,20 +682,17 @@ func testInMemoryApplyChanges(t *testing.T) {
"org": { "org": {
"example.org": []*inMemoryRecord{ "example.org": []*inMemoryRecord{
{ {
Name: "example.org", Name: "example.org",
Target: "8.8.8.8", Target: "8.8.8.8",
Type: endpoint.RecordTypeA, Type: endpoint.RecordTypeA,
}, },
{ {
Name: "example.org", Name: "example.org",
Type: endpoint.RecordTypeTXT, Type: endpoint.RecordTypeTXT,
}, },
}, },
"foo.org": []*inMemoryRecord{ "foo.org": []*inMemoryRecord{
{ {
Name: "foo.org", Name: "foo.org",
Target: "4.4.4.4", Target: "4.4.4.4",
Type: endpoint.RecordTypeCNAME, Type: endpoint.RecordTypeCNAME,
@ -792,7 +787,6 @@ func testInMemoryApplyChanges(t *testing.T) {
}, },
} { } {
t.Run(ti.title, func(t *testing.T) { t.Run(ti.title, func(t *testing.T) {
im := NewInMemoryProvider() im := NewInMemoryProvider()
c := &inMemoryClient{} c := &inMemoryClient{}
c.zones = getInitData() c.zones = getInitData()

View File

@ -158,7 +158,6 @@ func (p *LinodeProvider) fetchZones(ctx context.Context) ([]linodego.Domain, err
var zones []linodego.Domain var zones []linodego.Domain
allZones, err := p.Client.ListDomains(ctx, linodego.NewListOptions(0, "")) allZones, err := p.Client.ListDomains(ctx, linodego.NewListOptions(0, ""))
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -262,7 +261,6 @@ func (p *LinodeProvider) ApplyChanges(ctx context.Context, changes *plan.Changes
recordsByZoneID := make(map[string][]linodego.DomainRecord) recordsByZoneID := make(map[string][]linodego.DomainRecord)
zones, err := p.fetchZones(ctx) zones, err := p.fetchZones(ctx)
if err != nil { if err != nil {
return err return err
} }
@ -279,7 +277,6 @@ func (p *LinodeProvider) ApplyChanges(ctx context.Context, changes *plan.Changes
// Fetch records for each zone // Fetch records for each zone
for _, zone := range zones { for _, zone := range zones {
records, err := p.fetchRecords(ctx, zone.ID) records, err := p.fetchRecords(ctx, zone.ID)
if err != nil { if err != nil {
return err return err
} }
@ -322,7 +319,6 @@ func (p *LinodeProvider) ApplyChanges(ctx context.Context, changes *plan.Changes
} }
recordType, err := convertRecordType(ep.RecordType) recordType, err := convertRecordType(ep.RecordType)
if err != nil { if err != nil {
return err return err
} }
@ -371,7 +367,6 @@ func (p *LinodeProvider) ApplyChanges(ctx context.Context, changes *plan.Changes
} }
recordType, err := convertRecordType(ep.RecordType) recordType, err := convertRecordType(ep.RecordType)
if err != nil { if err != nil {
return err return err
} }

View File

@ -43,14 +43,17 @@ func (m *MockDomainClient) ListDomains(ctx context.Context, opts *linodego.ListO
args := m.Called(ctx, opts) args := m.Called(ctx, opts)
return args.Get(0).([]linodego.Domain), args.Error(1) return args.Get(0).([]linodego.Domain), args.Error(1)
} }
func (m *MockDomainClient) CreateDomainRecord(ctx context.Context, domainID int, opts linodego.DomainRecordCreateOptions) (*linodego.DomainRecord, error) { func (m *MockDomainClient) CreateDomainRecord(ctx context.Context, domainID int, opts linodego.DomainRecordCreateOptions) (*linodego.DomainRecord, error) {
args := m.Called(ctx, domainID, opts) args := m.Called(ctx, domainID, opts)
return args.Get(0).(*linodego.DomainRecord), args.Error(1) return args.Get(0).(*linodego.DomainRecord), args.Error(1)
} }
func (m *MockDomainClient) DeleteDomainRecord(ctx context.Context, domainID int, recordID int) error { func (m *MockDomainClient) DeleteDomainRecord(ctx context.Context, domainID int, recordID int) error {
args := m.Called(ctx, domainID, recordID) args := m.Called(ctx, domainID, recordID)
return args.Error(0) return args.Error(0)
} }
func (m *MockDomainClient) UpdateDomainRecord(ctx context.Context, domainID int, recordID int, opts linodego.DomainRecordUpdateOptions) (*linodego.DomainRecord, error) { func (m *MockDomainClient) UpdateDomainRecord(ctx context.Context, domainID int, recordID int, opts linodego.DomainRecordUpdateOptions) (*linodego.DomainRecord, error) {
args := m.Called(ctx, domainID, recordID, opts) args := m.Called(ctx, domainID, recordID, opts)
return args.Get(0).(*linodego.DomainRecord), args.Error(1) return args.Get(0).(*linodego.DomainRecord), args.Error(1)

View File

@ -184,7 +184,7 @@ func (p *NS1Provider) ns1BuildRecord(zoneName string, change *ns1Change) *dns.Re
record.AddAnswer(dns.NewAnswer(strings.Split(v, " "))) record.AddAnswer(dns.NewAnswer(strings.Split(v, " ")))
} }
// set default ttl, but respect minTTLSeconds // set default ttl, but respect minTTLSeconds
var ttl = ns1DefaultTTL ttl := ns1DefaultTTL
if p.minTTLSeconds > ttl { if p.minTTLSeconds > ttl {
ttl = p.minTTLSeconds ttl = p.minTTLSeconds
} }

View File

@ -76,7 +76,8 @@ func (c *mockOCIDNSClient) GetZoneRecords(ctx context.Context, request dns.GetZo
}} }}
response.OpcNextPage = common.String("1") response.OpcNextPage = common.String("1")
} else { } else {
response.Items = []dns.Record{{Domain: common.String("bar.foo.com"), response.Items = []dns.Record{{
Domain: common.String("bar.foo.com"),
Rdata: common.String("bar.com."), Rdata: common.String("bar.com."),
Rtype: common.String(endpoint.RecordTypeCNAME), Rtype: common.String(endpoint.RecordTypeCNAME),
Ttl: common.Int(ociRecordTTL), Ttl: common.Int(ociRecordTTL),

View File

@ -257,7 +257,7 @@ func NewPDNSProvider(ctx context.Context, config PDNSConfig) (*PDNSProvider, err
func (p *PDNSProvider) convertRRSetToEndpoints(rr pgo.RrSet) (endpoints []*endpoint.Endpoint, _ error) { func (p *PDNSProvider) convertRRSetToEndpoints(rr pgo.RrSet) (endpoints []*endpoint.Endpoint, _ error) {
endpoints = []*endpoint.Endpoint{} endpoints = []*endpoint.Endpoint{}
var targets = []string{} targets := []string{}
for _, record := range rr.Records { for _, record := range rr.Records {
// If a record is "Disabled", it's not supposed to be "visible" // If a record is "Disabled", it's not supposed to be "visible"

View File

@ -540,18 +540,20 @@ var (
/******************************************************************************/ /******************************************************************************/
// API that returns a zone with multiple record types // API that returns a zone with multiple record types
type PDNSAPIClientStub struct { type PDNSAPIClientStub struct{}
}
func (c *PDNSAPIClientStub) ListZones() ([]pgo.Zone, *http.Response, error) { func (c *PDNSAPIClientStub) ListZones() ([]pgo.Zone, *http.Response, error) {
return []pgo.Zone{ZoneMixed}, nil, nil return []pgo.Zone{ZoneMixed}, nil, nil
} }
func (c *PDNSAPIClientStub) PartitionZones(zones []pgo.Zone) ([]pgo.Zone, []pgo.Zone) { func (c *PDNSAPIClientStub) PartitionZones(zones []pgo.Zone) ([]pgo.Zone, []pgo.Zone) {
return zones, nil return zones, nil
} }
func (c *PDNSAPIClientStub) ListZone(zoneID string) (pgo.Zone, *http.Response, error) { func (c *PDNSAPIClientStub) ListZone(zoneID string) (pgo.Zone, *http.Response, error) {
return ZoneMixed, nil, nil return ZoneMixed, nil, nil
} }
func (c *PDNSAPIClientStub) PatchZone(zoneID string, zoneStruct pgo.Zone) (*http.Response, error) { func (c *PDNSAPIClientStub) PatchZone(zoneID string, zoneStruct pgo.Zone) (*http.Response, error) {
return nil, nil return nil, nil
} }
@ -566,11 +568,12 @@ type PDNSAPIClientStubEmptyZones struct {
func (c *PDNSAPIClientStubEmptyZones) ListZones() ([]pgo.Zone, *http.Response, error) { func (c *PDNSAPIClientStubEmptyZones) ListZones() ([]pgo.Zone, *http.Response, error) {
return []pgo.Zone{ZoneEmpty, ZoneEmptyLong, ZoneEmpty2}, nil, nil return []pgo.Zone{ZoneEmpty, ZoneEmptyLong, ZoneEmpty2}, nil, nil
} }
func (c *PDNSAPIClientStubEmptyZones) PartitionZones(zones []pgo.Zone) ([]pgo.Zone, []pgo.Zone) { func (c *PDNSAPIClientStubEmptyZones) PartitionZones(zones []pgo.Zone) ([]pgo.Zone, []pgo.Zone) {
return zones, nil return zones, nil
} }
func (c *PDNSAPIClientStubEmptyZones) ListZone(zoneID string) (pgo.Zone, *http.Response, error) {
func (c *PDNSAPIClientStubEmptyZones) ListZone(zoneID string) (pgo.Zone, *http.Response, error) {
if strings.Contains(zoneID, "example.com") { if strings.Contains(zoneID, "example.com") {
return ZoneEmpty, nil, nil return ZoneEmpty, nil, nil
} else if strings.Contains(zoneID, "mock.test") { } else if strings.Contains(zoneID, "mock.test") {
@ -579,8 +582,8 @@ func (c *PDNSAPIClientStubEmptyZones) ListZone(zoneID string) (pgo.Zone, *http.R
return ZoneEmptyLong, nil, nil return ZoneEmptyLong, nil, nil
} }
return pgo.Zone{}, nil, nil return pgo.Zone{}, nil, nil
} }
func (c *PDNSAPIClientStubEmptyZones) PatchZone(zoneID string, zoneStruct pgo.Zone) (*http.Response, error) { func (c *PDNSAPIClientStubEmptyZones) PatchZone(zoneID string, zoneStruct pgo.Zone) (*http.Response, error) {
c.patchedZones = append(c.patchedZones, zoneStruct) c.patchedZones = append(c.patchedZones, zoneStruct)
return nil, nil return nil, nil
@ -608,7 +611,6 @@ type PDNSAPIClientStubListZoneFailure struct {
// Just overwrite the ListZone method to introduce a failure // Just overwrite the ListZone method to introduce a failure
func (c *PDNSAPIClientStubListZoneFailure) ListZone(zoneID string) (pgo.Zone, *http.Response, error) { func (c *PDNSAPIClientStubListZoneFailure) ListZone(zoneID string) (pgo.Zone, *http.Response, error) {
return pgo.Zone{}, nil, errors.New("Generic PDNS Error") return pgo.Zone{}, nil, errors.New("Generic PDNS Error")
} }
/******************************************************************************/ /******************************************************************************/
@ -635,7 +637,6 @@ func (c *PDNSAPIClientStubPartitionZones) ListZones() ([]pgo.Zone, *http.Respons
} }
func (c *PDNSAPIClientStubPartitionZones) ListZone(zoneID string) (pgo.Zone, *http.Response, error) { func (c *PDNSAPIClientStubPartitionZones) ListZone(zoneID string) (pgo.Zone, *http.Response, error) {
if strings.Contains(zoneID, "example.com") { if strings.Contains(zoneID, "example.com") {
return ZoneEmpty, nil, nil return ZoneEmpty, nil, nil
} else if strings.Contains(zoneID, "mock.test") { } else if strings.Contains(zoneID, "mock.test") {
@ -651,7 +652,6 @@ func (c *PDNSAPIClientStubPartitionZones) ListZone(zoneID string) (pgo.Zone, *ht
// Just overwrite the ListZones method to introduce a failure // Just overwrite the ListZones method to introduce a failure
func (c *PDNSAPIClientStubPartitionZones) PartitionZones(zones []pgo.Zone) ([]pgo.Zone, []pgo.Zone) { func (c *PDNSAPIClientStubPartitionZones) PartitionZones(zones []pgo.Zone) ([]pgo.Zone, []pgo.Zone) {
return []pgo.Zone{ZoneEmpty}, []pgo.Zone{ZoneEmptyLong, ZoneEmpty2} return []pgo.Zone{ZoneEmpty}, []pgo.Zone{ZoneEmptyLong, ZoneEmpty2}
} }
/******************************************************************************/ /******************************************************************************/
@ -661,7 +661,6 @@ type NewPDNSProviderTestSuite struct {
} }
func (suite *NewPDNSProviderTestSuite) TestPDNSProviderCreate() { func (suite *NewPDNSProviderTestSuite) TestPDNSProviderCreate() {
_, err := NewPDNSProvider( _, err := NewPDNSProvider(
context.Background(), context.Background(),
PDNSConfig{ PDNSConfig{
@ -701,7 +700,6 @@ func (suite *NewPDNSProviderTestSuite) TestPDNSProviderCreate() {
} }
func (suite *NewPDNSProviderTestSuite) TestPDNSProviderCreateTLS() { func (suite *NewPDNSProviderTestSuite) TestPDNSProviderCreateTLS() {
_, err := NewPDNSProvider( _, err := NewPDNSProvider(
context.Background(), context.Background(),
PDNSConfig{ PDNSConfig{
@ -829,7 +827,6 @@ func (suite *NewPDNSProviderTestSuite) TestPDNSRRSetToEndpoints() {
eps, err = p.convertRRSetToEndpoints(RRSetDisabledRecord) eps, err = p.convertRRSetToEndpoints(RRSetDisabledRecord)
assert.Nil(suite.T(), err) assert.Nil(suite.T(), err)
assert.Equal(suite.T(), endpointsDisabledRecord, eps) assert.Equal(suite.T(), endpointsDisabledRecord, eps)
} }
func (suite *NewPDNSProviderTestSuite) TestPDNSRecords() { func (suite *NewPDNSProviderTestSuite) TestPDNSRecords() {
@ -861,7 +858,6 @@ func (suite *NewPDNSProviderTestSuite) TestPDNSRecords() {
} }
_, err = p.Records(ctx) _, err = p.Records(ctx)
assert.NotNil(suite.T(), err) assert.NotNil(suite.T(), err)
} }
func (suite *NewPDNSProviderTestSuite) TestPDNSConvertEndpointsToZones() { func (suite *NewPDNSProviderTestSuite) TestPDNSConvertEndpointsToZones() {
@ -996,7 +992,6 @@ func (suite *NewPDNSProviderTestSuite) TestPDNSmutateRecords() {
// Check inserting endpoints from a single zone // Check inserting endpoints from a single zone
err = p.mutateRecords(endpointsSimpleRecord, pdnsChangeType("REPLACE")) err = p.mutateRecords(endpointsSimpleRecord, pdnsChangeType("REPLACE"))
assert.NotNil(suite.T(), err) assert.NotNil(suite.T(), err)
} }
func (suite *NewPDNSProviderTestSuite) TestPDNSClientPartitionZones() { func (suite *NewPDNSProviderTestSuite) TestPDNSClientPartitionZones() {

View File

@ -1,3 +1,19 @@
/*
Copyright 2022 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package plural package plural
import ( import (

View File

@ -22,6 +22,7 @@ import (
"os" "os"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"sigs.k8s.io/external-dns/endpoint" "sigs.k8s.io/external-dns/endpoint"
"sigs.k8s.io/external-dns/plan" "sigs.k8s.io/external-dns/plan"
"sigs.k8s.io/external-dns/provider" "sigs.k8s.io/external-dns/provider"

View File

@ -70,7 +70,6 @@ func newPluralProvider(pluralDNSRecord []*DnsRecord) *PluralProvider {
} }
func TestPluralRecords(t *testing.T) { func TestPluralRecords(t *testing.T) {
tests := []struct { tests := []struct {
name string name string
expectedEndpoints []*endpoint.Endpoint expectedEndpoints []*endpoint.Endpoint
@ -136,11 +135,9 @@ func TestPluralRecords(t *testing.T) {
validateEndpoints(t, actual, test.expectedEndpoints) validateEndpoints(t, actual, test.expectedEndpoints)
}) })
} }
} }
func TestPluralApplyChangesCreate(t *testing.T) { func TestPluralApplyChangesCreate(t *testing.T) {
tests := []struct { tests := []struct {
name string name string
expectedEndpoints []*endpoint.Endpoint expectedEndpoints []*endpoint.Endpoint
@ -198,7 +195,6 @@ func TestPluralApplyChangesCreate(t *testing.T) {
} }
func TestPluralApplyChangesDelete(t *testing.T) { func TestPluralApplyChangesDelete(t *testing.T) {
tests := []struct { tests := []struct {
name string name string
records []*DnsRecord records []*DnsRecord

View File

@ -34,8 +34,7 @@ type Provider interface {
GetDomainFilter() endpoint.DomainFilterInterface GetDomainFilter() endpoint.DomainFilterInterface
} }
type BaseProvider struct { type BaseProvider struct{}
}
func (b BaseProvider) AdjustEndpoints(endpoints []*endpoint.Endpoint) []*endpoint.Endpoint { func (b BaseProvider) AdjustEndpoints(endpoints []*endpoint.Endpoint) []*endpoint.Endpoint {
return endpoints return endpoints

View File

@ -47,7 +47,6 @@ type RcodeZeroProvider struct {
// Returns the provider or an error if a provider could not be created. // Returns the provider or an error if a provider could not be created.
func NewRcodeZeroProvider(domainFilter endpoint.DomainFilter, dryRun bool, txtEnc bool) (*RcodeZeroProvider, error) { func NewRcodeZeroProvider(domainFilter endpoint.DomainFilter, dryRun bool, txtEnc bool) (*RcodeZeroProvider, error) {
client, err := rc0.NewClient(os.Getenv("RC0_API_KEY")) client, err := rc0.NewClient(os.Getenv("RC0_API_KEY"))
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -106,7 +105,6 @@ func (p *RcodeZeroProvider) Records(ctx context.Context) ([]*endpoint.Endpoint,
for _, zone := range zones { for _, zone := range zones {
rrset, err := p.fetchRecords(zone.Domain) rrset, err := p.fetchRecords(zone.Domain)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -172,7 +170,6 @@ func (p *RcodeZeroProvider) fetchRecords(zoneName string) ([]*rc0.RRType, error)
for { for {
records, page, err := p.Client.RRSet.List(zoneName, listOptions) records, page, err := p.Client.RRSet.List(zoneName, listOptions)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -249,7 +246,6 @@ func (p *RcodeZeroProvider) submitChanges(changes []*rc0.RRSetChange) error {
switch change.ChangeType { switch change.ChangeType {
case rc0.ChangeTypeADD: case rc0.ChangeTypeADD:
sr, err := p.Client.RRSet.Create(zoneName, []*rc0.RRSetChange{change}) sr, err := p.Client.RRSet.Create(zoneName, []*rc0.RRSetChange{change})
if err != nil { if err != nil {
return err return err
} }
@ -260,7 +256,6 @@ func (p *RcodeZeroProvider) submitChanges(changes []*rc0.RRSetChange) error {
case rc0.ChangeTypeUPDATE: case rc0.ChangeTypeUPDATE:
sr, err := p.Client.RRSet.Edit(zoneName, []*rc0.RRSetChange{change}) sr, err := p.Client.RRSet.Edit(zoneName, []*rc0.RRSetChange{change})
if err != nil { if err != nil {
return err return err
} }
@ -271,7 +266,6 @@ func (p *RcodeZeroProvider) submitChanges(changes []*rc0.RRSetChange) error {
case rc0.ChangeTypeDELETE: case rc0.ChangeTypeDELETE:
sr, err := p.Client.RRSet.Delete(zoneName, []*rc0.RRSetChange{change}) sr, err := p.Client.RRSet.Delete(zoneName, []*rc0.RRSetChange{change})
if err != nil { if err != nil {
return err return err
} }

View File

@ -53,7 +53,6 @@ func (m *mockZoneManagementService) resetTestConditions() {
} }
func TestRcodeZeroProvider_Records(t *testing.T) { func TestRcodeZeroProvider_Records(t *testing.T) {
mockRRSetService := &mockRRSetService{} mockRRSetService := &mockRRSetService{}
mockZoneManagementService := &mockZoneManagementService{} mockZoneManagementService := &mockZoneManagementService{}
@ -67,7 +66,6 @@ func TestRcodeZeroProvider_Records(t *testing.T) {
ctx := context.Background() ctx := context.Background()
endpoints, err := provider.Records(ctx) // should return 6 rrs endpoints, err := provider.Records(ctx) // should return 6 rrs
if err != nil { if err != nil {
t.Errorf("should not fail, %s", err) t.Errorf("should not fail, %s", err)
} }
@ -79,11 +77,9 @@ func TestRcodeZeroProvider_Records(t *testing.T) {
if err == nil { if err == nil {
t.Errorf("expected to fail, %s", err) t.Errorf("expected to fail, %s", err)
} }
} }
func TestRcodeZeroProvider_ApplyChanges(t *testing.T) { func TestRcodeZeroProvider_ApplyChanges(t *testing.T) {
mockRRSetService := &mockRRSetService{} mockRRSetService := &mockRRSetService{}
mockZoneManagementService := &mockZoneManagementService{} mockZoneManagementService := &mockZoneManagementService{}
@ -98,15 +94,12 @@ func TestRcodeZeroProvider_ApplyChanges(t *testing.T) {
changes := mockChanges() changes := mockChanges()
err := provider.ApplyChanges(context.Background(), changes) err := provider.ApplyChanges(context.Background(), changes)
if err != nil { if err != nil {
t.Errorf("should not fail, %s", err) t.Errorf("should not fail, %s", err)
} }
} }
func TestRcodeZeroProvider_NewRcodezeroChanges(t *testing.T) { func TestRcodeZeroProvider_NewRcodezeroChanges(t *testing.T) {
provider := &RcodeZeroProvider{} provider := &RcodeZeroProvider{}
changes := mockChanges() changes := mockChanges()
@ -125,7 +118,6 @@ func TestRcodeZeroProvider_NewRcodezeroChanges(t *testing.T) {
} }
func TestRcodeZeroProvider_NewRcodezeroChange(t *testing.T) { func TestRcodeZeroProvider_NewRcodezeroChange(t *testing.T) {
_endpoint := &endpoint.Endpoint{ _endpoint := &endpoint.Endpoint{
RecordType: "A", RecordType: "A",
DNSName: "app." + testZoneOne, DNSName: "app." + testZoneOne,
@ -140,12 +132,10 @@ func TestRcodeZeroProvider_NewRcodezeroChange(t *testing.T) {
require.Equal(t, _endpoint.RecordType, rrsetChange.Type) require.Equal(t, _endpoint.RecordType, rrsetChange.Type)
require.Equal(t, _endpoint.DNSName, rrsetChange.Name) require.Equal(t, _endpoint.DNSName, rrsetChange.Name)
require.Equal(t, _endpoint.Targets[0], rrsetChange.Records[0].Content) require.Equal(t, _endpoint.Targets[0], rrsetChange.Records[0].Content)
//require.Equal(t, endpoint.RecordTTL, rrsetChange.TTL) // require.Equal(t, endpoint.RecordTTL, rrsetChange.TTL)
} }
func Test_submitChanges(t *testing.T) { func Test_submitChanges(t *testing.T) {
mockRRSetService := &mockRRSetService{} mockRRSetService := &mockRRSetService{}
mockZoneManagementService := &mockZoneManagementService{} mockZoneManagementService := &mockZoneManagementService{}
@ -164,11 +154,9 @@ func Test_submitChanges(t *testing.T) {
if err == nil { if err == nil {
t.Errorf("expected to fail, %s", err) t.Errorf("expected to fail, %s", err)
} }
} }
func mockRRSetChanges(condition int) []*rc0.RRSetChange { func mockRRSetChanges(condition int) []*rc0.RRSetChange {
switch condition { switch condition {
case rrsetChangesUnsupportedChangeType: case rrsetChangesUnsupportedChangeType:
return []*rc0.RRSetChange{ return []*rc0.RRSetChange{
@ -185,7 +173,6 @@ func mockRRSetChanges(condition int) []*rc0.RRSetChange {
} }
func mockChanges() *plan.Changes { func mockChanges() *plan.Changes {
changes := &plan.Changes{} changes := &plan.Changes{}
changes.Create = []*endpoint.Endpoint{ changes.Create = []*endpoint.Endpoint{
@ -202,7 +189,6 @@ func mockChanges() *plan.Changes {
} }
func TestRcodeZeroProvider_Zones(t *testing.T) { func TestRcodeZeroProvider_Zones(t *testing.T) {
mockRRSetService := &mockRRSetService{} mockRRSetService := &mockRRSetService{}
mockZoneManagementService := &mockZoneManagementService{} mockZoneManagementService := &mockZoneManagementService{}
@ -216,7 +202,6 @@ func TestRcodeZeroProvider_Zones(t *testing.T) {
mockZoneManagementService.TestNilZonesReturned = true mockZoneManagementService.TestNilZonesReturned = true
zones, err := provider.Zones() zones, err := provider.Zones()
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -229,14 +214,11 @@ func TestRcodeZeroProvider_Zones(t *testing.T) {
if err == nil { if err == nil {
t.Errorf("expected to fail, %s", err) t.Errorf("expected to fail, %s", err)
} }
} }
func TestNewRcodeZeroProvider(t *testing.T) { func TestNewRcodeZeroProvider(t *testing.T) {
_ = os.Setenv("RC0_API_KEY", "123") _ = os.Setenv("RC0_API_KEY", "123")
p, err := NewRcodeZeroProvider(endpoint.NewDomainFilter([]string{"ext-dns-test." + testZoneOne + "."}), true, true) p, err := NewRcodeZeroProvider(endpoint.NewDomainFilter([]string{"ext-dns-test." + testZoneOne + "."}), true, true)
if err != nil { if err != nil {
t.Errorf("should not fail, %s", err) t.Errorf("should not fail, %s", err)
} }
@ -262,13 +244,11 @@ func TestNewRcodeZeroProvider(t *testing.T) {
if err == nil { if err == nil {
t.Errorf("expected to fail") t.Errorf("expected to fail")
} }
} }
/* mocking mockRRSetServiceInterface */ /* mocking mockRRSetServiceInterface */
func (m *mockRRSetService) List(zone string, options *rc0.ListOptions) ([]*rc0.RRType, *rc0.Page, error) { func (m *mockRRSetService) List(zone string, options *rc0.ListOptions) ([]*rc0.RRType, *rc0.Page, error) {
if m.TestErrorReturned { if m.TestErrorReturned {
return nil, nil, fmt.Errorf("operation RRSet.List failed") return nil, nil, fmt.Errorf("operation RRSet.List failed")
} }
@ -341,20 +321,18 @@ func mockRRSet(zone string) []*rc0.RRType {
} }
func (m *mockRRSetService) Create(zone string, rrsetCreate []*rc0.RRSetChange) (*rc0.StatusResponse, error) { func (m *mockRRSetService) Create(zone string, rrsetCreate []*rc0.RRSetChange) (*rc0.StatusResponse, error) {
return &rc0.StatusResponse{Status: "ok", Message: "pass"}, nil return &rc0.StatusResponse{Status: "ok", Message: "pass"}, nil
} }
func (m *mockRRSetService) Edit(zone string, rrsetEdit []*rc0.RRSetChange) (*rc0.StatusResponse, error) { func (m *mockRRSetService) Edit(zone string, rrsetEdit []*rc0.RRSetChange) (*rc0.StatusResponse, error) {
return &rc0.StatusResponse{Status: "ok", Message: "pass"}, nil return &rc0.StatusResponse{Status: "ok", Message: "pass"}, nil
} }
func (m *mockRRSetService) Delete(zone string, rrsetDelete []*rc0.RRSetChange) (*rc0.StatusResponse, error) { func (m *mockRRSetService) Delete(zone string, rrsetDelete []*rc0.RRSetChange) (*rc0.StatusResponse, error) {
return &rc0.StatusResponse{Status: "ok", Message: "pass"}, nil return &rc0.StatusResponse{Status: "ok", Message: "pass"}, nil
} }
func (m *mockRRSetService) SubmitChangeSet(zone string, changeSet []*rc0.RRSetChange) (*rc0.StatusResponse, error) {
func (m *mockRRSetService) SubmitChangeSet(zone string, changeSet []*rc0.RRSetChange) (*rc0.StatusResponse, error) {
return &rc0.StatusResponse{Status: "ok", Message: "pass"}, nil return &rc0.StatusResponse{Status: "ok", Message: "pass"}, nil
} }
@ -365,7 +343,6 @@ func (m *mockRRSetService) DecryptTXT(key []byte, rrType *rc0.RRType) {}
/* mocking ZoneManagementServiceInterface */ /* mocking ZoneManagementServiceInterface */
func (m *mockZoneManagementService) List(options *rc0.ListOptions) ([]*rc0.Zone, *rc0.Page, error) { func (m *mockZoneManagementService) List(options *rc0.ListOptions) ([]*rc0.Zone, *rc0.Page, error) {
if m.TestNilZonesReturned { if m.TestNilZonesReturned {
return nil, nil, nil return nil, nil, nil
} }
@ -407,6 +384,7 @@ func (m *mockZoneManagementService) Get(zone string) (*rc0.Zone, error) { return
func (m *mockZoneManagementService) Create(zoneCreate *rc0.ZoneCreate) (*rc0.StatusResponse, error) { func (m *mockZoneManagementService) Create(zoneCreate *rc0.ZoneCreate) (*rc0.StatusResponse, error) {
return nil, nil return nil, nil
} }
func (m *mockZoneManagementService) Edit(zone string, zoneEdit *rc0.ZoneEdit) (*rc0.StatusResponse, error) { func (m *mockZoneManagementService) Edit(zone string, zoneEdit *rc0.ZoneEdit) (*rc0.StatusResponse, error) {
return nil, nil return nil, nil
} }

View File

@ -282,7 +282,6 @@ func TestRDNSApplyChanges(t *testing.T) {
} }
client.validateRecords(client.rs, expectedRecords3, t) client.validateRecords(client.rs, expectedRecords3, t)
} }
func (c fakeEtcdv3Client) aggregationRecords(result *clientv3.GetResponse) ([]RDNSRecord, error) { func (c fakeEtcdv3Client) aggregationRecords(result *clientv3.GetResponse) ([]RDNSRecord, error) {

View File

@ -19,7 +19,7 @@ package provider
import "testing" import "testing"
func TestRecordTypeFilter(t *testing.T) { func TestRecordTypeFilter(t *testing.T) {
var records = []struct { records := []struct {
rtype string rtype string
expect bool expect bool
}{ }{

View File

@ -69,17 +69,15 @@ type rfc2136Provider struct {
actions rfc2136Actions actions rfc2136Actions
} }
var ( // Map of supported TSIG algorithms
// Map of supported TSIG algorithms var tsigAlgs = map[string]string{
tsigAlgs = map[string]string{
"hmac-md5": dns.HmacMD5, "hmac-md5": dns.HmacMD5,
"hmac-sha1": dns.HmacSHA1, "hmac-sha1": dns.HmacSHA1,
"hmac-sha224": dns.HmacSHA224, "hmac-sha224": dns.HmacSHA224,
"hmac-sha256": dns.HmacSHA256, "hmac-sha256": dns.HmacSHA256,
"hmac-sha384": dns.HmacSHA384, "hmac-sha384": dns.HmacSHA384,
"hmac-sha512": dns.HmacSHA512, "hmac-sha512": dns.HmacSHA512,
} }
)
type rfc2136Actions interface { type rfc2136Actions interface {
SendMessage(msg *dns.Msg) error SendMessage(msg *dns.Msg) error
@ -347,7 +345,7 @@ func (r rfc2136Provider) UpdateRecord(m *dns.Msg, oldEp *endpoint.Endpoint, newE
func (r rfc2136Provider) AddRecord(m *dns.Msg, ep *endpoint.Endpoint) error { func (r rfc2136Provider) AddRecord(m *dns.Msg, ep *endpoint.Endpoint) error {
log.Debugf("AddRecord.ep=%s", ep) log.Debugf("AddRecord.ep=%s", ep)
var ttl = int64(r.minTTL.Seconds()) ttl := int64(r.minTTL.Seconds())
if ep.RecordTTL.IsConfigured() && int64(ep.RecordTTL) > ttl { if ep.RecordTTL.IsConfigured() && int64(ep.RecordTTL) > ttl {
ttl = int64(ep.RecordTTL) ttl = int64(ep.RecordTTL)
} }

View File

@ -208,7 +208,6 @@ func TestRfc2136ApplyChanges(t *testing.T) {
assert.Equal(t, 2, len(stub.updateMsgs)) assert.Equal(t, 2, len(stub.updateMsgs))
assert.True(t, strings.Contains(stub.updateMsgs[0].String(), "v2.foo.com")) assert.True(t, strings.Contains(stub.updateMsgs[0].String(), "v2.foo.com"))
assert.True(t, strings.Contains(stub.updateMsgs[1].String(), "v2.foobar.com")) assert.True(t, strings.Contains(stub.updateMsgs[1].String(), "v2.foobar.com"))
} }
func TestRfc2136ApplyChangesWithDifferentTTLs(t *testing.T) { func TestRfc2136ApplyChangesWithDifferentTTLs(t *testing.T) {
@ -253,7 +252,6 @@ func TestRfc2136ApplyChangesWithDifferentTTLs(t *testing.T) {
assert.True(t, strings.Contains(createRecords[2], "v3.foo.com")) assert.True(t, strings.Contains(createRecords[2], "v3.foo.com"))
assert.True(t, strings.Contains(createRecords[2], "4.3.3.3")) assert.True(t, strings.Contains(createRecords[2], "4.3.3.3"))
assert.True(t, strings.Contains(createRecords[2], "300")) assert.True(t, strings.Contains(createRecords[2], "300"))
} }
func TestRfc2136ApplyChangesWithUpdate(t *testing.T) { func TestRfc2136ApplyChangesWithUpdate(t *testing.T) {
@ -331,7 +329,6 @@ func TestRfc2136ApplyChangesWithUpdate(t *testing.T) {
assert.True(t, strings.Contains(stub.updateMsgs[1].String(), "v1.foobar.com")) assert.True(t, strings.Contains(stub.updateMsgs[1].String(), "v1.foobar.com"))
assert.True(t, strings.Contains(stub.updateMsgs[1].String(), "boom")) assert.True(t, strings.Contains(stub.updateMsgs[1].String(), "boom"))
} }
func TestChunkBy(t *testing.T) { func TestChunkBy(t *testing.T) {

View File

@ -272,11 +272,11 @@ func getCompleteZoneName(zone *domain.DNSZone) string {
func endpointToScalewayRecords(zoneName string, ep *endpoint.Endpoint) []*domain.Record { func endpointToScalewayRecords(zoneName string, ep *endpoint.Endpoint) []*domain.Record {
// no annotation results in a TTL of 0, default to 300 for consistency with other providers // no annotation results in a TTL of 0, default to 300 for consistency with other providers
var ttl = scalewyRecordTTL ttl := scalewyRecordTTL
if ep.RecordTTL.IsConfigured() { if ep.RecordTTL.IsConfigured() {
ttl = uint32(ep.RecordTTL) ttl = uint32(ep.RecordTTL)
} }
var priority = scalewayDefaultPriority priority := scalewayDefaultPriority
if prop, ok := ep.GetProviderSpecificProperty(scalewayPriorityKey); ok { if prop, ok := ep.GetProviderSpecificProperty(scalewayPriorityKey); ok {
prio, err := strconv.ParseUint(prop.Value, 10, 32) prio, err := strconv.ParseUint(prop.Value, 10, 32)
if err != nil { if err != nil {

View File

@ -265,7 +265,7 @@ func APIRecord(apiAction Action, request string, response string) {
message := fmt.Sprintf("APIRecord API: %s/%s Request: %s, Response: %s", apiAction.Service, apiAction.Name, request, response) message := fmt.Sprintf("APIRecord API: %s/%s Request: %s, Response: %s", apiAction.Service, apiAction.Name, request, response)
if apiAction.ReadOnly { if apiAction.ReadOnly {
//log.Infof(message) // log.Infof(message)
} else { } else {
log.Infof(message) log.Infof(message)
} }

View File

@ -18,21 +18,22 @@ package tencentcloud
import ( import (
"context" "context"
"testing"
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
dnspod "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod/v20210323" dnspod "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod/v20210323"
"sigs.k8s.io/external-dns/endpoint" "sigs.k8s.io/external-dns/endpoint"
"sigs.k8s.io/external-dns/plan" "sigs.k8s.io/external-dns/plan"
"sigs.k8s.io/external-dns/provider" "sigs.k8s.io/external-dns/provider"
"sigs.k8s.io/external-dns/provider/tencentcloud/cloudapi" "sigs.k8s.io/external-dns/provider/tencentcloud/cloudapi"
"testing"
privatedns "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns/v20201028" privatedns "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns/v20201028"
) )
func NewMockTencentCloudProvider(domainFilter endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, zoneType string) *TencentCloudProvider { func NewMockTencentCloudProvider(domainFilter endpoint.DomainFilter, zoneIDFilter provider.ZoneIDFilter, zoneType string) *TencentCloudProvider {
cfg := tencentCloudConfig{ cfg := tencentCloudConfig{
//SecretId: "", // SecretId: "",
//SecretKey: "", // SecretKey: "",
RegionId: "ap-shanghai", RegionId: "ap-shanghai",
VPCId: "vpc-abcdefg", VPCId: "vpc-abcdefg",
} }

View File

@ -41,11 +41,14 @@ const (
// global variables // global variables
var sbPoolRunProbes = true var sbPoolRunProbes = true
var sbPoolActOnProbes = true
var ultradnsPoolType = "rdpool"
var accountName string
//Setting custom headers for ultradns api calls var (
sbPoolActOnProbes = true
ultradnsPoolType = "rdpool"
accountName string
)
// Setting custom headers for ultradns api calls
var customHeader = []udnssdk.CustomHeader{ var customHeader = []udnssdk.CustomHeader{
{ {
Key: "UltraClient", Key: "UltraClient",
@ -145,7 +148,6 @@ func (p *UltraDNSProvider) Zones(ctx context.Context) ([]udnssdk.Zone, error) {
zoneKey.Zone = zone zoneKey.Zone = zone
zoneKey.AccountName = accountName zoneKey.AccountName = accountName
zones, err := p.fetchZones(ctx, zoneKey) zones, err := p.fetchZones(ctx, zoneKey)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -489,7 +491,7 @@ func (p *UltraDNSProvider) newSBPoolObjectCreation(ctx context.Context, change *
return sbPoolObject, nil return sbPoolObject, nil
} }
//Creation of RDPoolObject // Creation of RDPoolObject
func (p *UltraDNSProvider) newRDPoolObjectCreation(ctx context.Context, change *UltraDNSChanges) (rdPool udnssdk.RDPoolProfile, err error) { func (p *UltraDNSProvider) newRDPoolObjectCreation(ctx context.Context, change *UltraDNSChanges) (rdPool udnssdk.RDPoolProfile, err error) {
rdPoolObject := udnssdk.RDPoolProfile{ rdPoolObject := udnssdk.RDPoolProfile{
Context: udnssdk.RDPoolSchema, Context: udnssdk.RDPoolSchema,

View File

@ -76,7 +76,6 @@ func (m *mockUltraDNSRecord) Select(k udnssdk.RRSetKey) ([]udnssdk.RRSet, error)
RData: []string{"1.1.1.1"}, RData: []string{"1.1.1.1"},
TTL: 86400, TTL: 86400,
}}, nil }}, nil
} }
func (m *mockUltraDNSRecord) SelectWithOffset(k udnssdk.RRSetKey, offset int) ([]udnssdk.RRSet, udnssdk.ResultInfo, *http.Response, error) { func (m *mockUltraDNSRecord) SelectWithOffset(k udnssdk.RRSetKey, offset int) ([]udnssdk.RRSet, udnssdk.ResultInfo, *http.Response, error) {
@ -117,7 +116,7 @@ func TestNewUltraDNSProvider(t *testing.T) {
assert.NotNilf(t, err, "Expected to fail %s", "formatted") assert.NotNilf(t, err, "Expected to fail %s", "formatted")
} }
//zones function test scenario // zones function test scenario
func TestUltraDNSProvider_Zones(t *testing.T) { func TestUltraDNSProvider_Zones(t *testing.T) {
mocked := mockUltraDNSZone{} mocked := mockUltraDNSZone{}
provider := &UltraDNSProvider{ provider := &UltraDNSProvider{
@ -136,10 +135,9 @@ func TestUltraDNSProvider_Zones(t *testing.T) {
zones, err := provider.Zones(context.Background()) zones, err := provider.Zones(context.Background())
assert.Nil(t, err) assert.Nil(t, err)
assert.Equal(t, reflect.DeepEqual(expected, zones), true) assert.Equal(t, reflect.DeepEqual(expected, zones), true)
} }
//Records function test case // Records function test case
func TestUltraDNSProvider_Records(t *testing.T) { func TestUltraDNSProvider_Records(t *testing.T) {
mocked := mockUltraDNSRecord{} mocked := mockUltraDNSRecord{}
mockedDomain := mockUltraDNSZone{} mockedDomain := mockUltraDNSZone{}
@ -159,10 +157,9 @@ func TestUltraDNSProvider_Records(t *testing.T) {
assert.Equal(t, v.RecordType, expected[0].RRType) assert.Equal(t, v.RecordType, expected[0].RRType)
assert.Equal(t, int(v.RecordTTL), expected[0].TTL) assert.Equal(t, int(v.RecordTTL), expected[0].TTL)
} }
} }
//ApplyChanges function testcase // ApplyChanges function testcase
func TestUltraDNSProvider_ApplyChanges(t *testing.T) { func TestUltraDNSProvider_ApplyChanges(t *testing.T) {
changes := &plan.Changes{} changes := &plan.Changes{}
mocked := mockUltraDNSRecord{nil} mocked := mockUltraDNSRecord{nil}
@ -209,7 +206,7 @@ func TestUltraDNSProvider_getSpecificRecord(t *testing.T) {
assert.Nil(t, err) assert.Nil(t, err)
} }
//Fail case scenario testing where CNAME and TXT Record name are same // Fail case scenario testing where CNAME and TXT Record name are same
func TestUltraDNSProvider_ApplyChangesCNAME(t *testing.T) { func TestUltraDNSProvider_ApplyChangesCNAME(t *testing.T) {
changes := &plan.Changes{} changes := &plan.Changes{}
mocked := mockUltraDNSRecord{nil} mocked := mockUltraDNSRecord{nil}
@ -233,11 +230,9 @@ func TestUltraDNSProvider_ApplyChangesCNAME(t *testing.T) {
// This will work if you would set the environment variables such as "ULTRADNS_INTEGRATION" and zone should be available "kubernetes-ultradns-provider-test.com" // This will work if you would set the environment variables such as "ULTRADNS_INTEGRATION" and zone should be available "kubernetes-ultradns-provider-test.com"
func TestUltraDNSProvider_ApplyChanges_Integration(t *testing.T) { func TestUltraDNSProvider_ApplyChanges_Integration(t *testing.T) {
_, ok := os.LookupEnv("ULTRADNS_INTEGRATION") _, ok := os.LookupEnv("ULTRADNS_INTEGRATION")
if !ok { if !ok {
log.Printf("Skipping test") log.Printf("Skipping test")
} else { } else {
providerUltradns, err := NewUltraDNSProvider(endpoint.NewDomainFilter([]string{"kubernetes-ultradns-provider-test.com"}), false) providerUltradns, err := NewUltraDNSProvider(endpoint.NewDomainFilter([]string{"kubernetes-ultradns-provider-test.com"}), false)
@ -271,7 +266,8 @@ func TestUltraDNSProvider_ApplyChanges_Integration(t *testing.T) {
changes = &plan.Changes{} changes = &plan.Changes{}
changes.UpdateNew = []*endpoint.Endpoint{ changes.UpdateNew = []*endpoint.Endpoint{
{DNSName: "kubernetes-ultradns-provider-test.com", Targets: endpoint.Targets{"1.1.2.2"}, RecordType: "A", RecordTTL: 100}, {DNSName: "kubernetes-ultradns-provider-test.com", Targets: endpoint.Targets{"1.1.2.2"}, RecordType: "A", RecordTTL: 100},
{DNSName: "ttl.kubernetes-ultradns-provider-test.com", Targets: endpoint.Targets{"2001:0db8:85a3:0000:0000:8a2e:0370:7335"}, RecordType: "AAAA", RecordTTL: 100}} {DNSName: "ttl.kubernetes-ultradns-provider-test.com", Targets: endpoint.Targets{"2001:0db8:85a3:0000:0000:8a2e:0370:7335"}, RecordType: "AAAA", RecordTTL: 100},
}
err = providerUltradns.ApplyChanges(context.Background(), changes) err = providerUltradns.ApplyChanges(context.Background(), changes)
assert.Nil(t, err) assert.Nil(t, err)
@ -296,7 +292,8 @@ func TestUltraDNSProvider_ApplyChanges_Integration(t *testing.T) {
changes = &plan.Changes{} changes = &plan.Changes{}
changes.Delete = []*endpoint.Endpoint{ changes.Delete = []*endpoint.Endpoint{
{DNSName: "ttl.kubernetes-ultradns-provider-test.com", Targets: endpoint.Targets{"2001:0db8:85a3:0000:0000:8a2e:0370:7335"}, RecordType: "AAAA", RecordTTL: 100}, {DNSName: "ttl.kubernetes-ultradns-provider-test.com", Targets: endpoint.Targets{"2001:0db8:85a3:0000:0000:8a2e:0370:7335"}, RecordType: "AAAA", RecordTTL: 100},
{DNSName: "kubernetes-ultradns-provider-test.com", Targets: endpoint.Targets{"1.1.2.2"}, RecordType: "A", RecordTTL: 100}} {DNSName: "kubernetes-ultradns-provider-test.com", Targets: endpoint.Targets{"1.1.2.2"}, RecordType: "A", RecordTTL: 100},
}
err = providerUltradns.ApplyChanges(context.Background(), changes) err = providerUltradns.ApplyChanges(context.Background(), changes)
assert.Nil(t, err) assert.Nil(t, err)
@ -308,7 +305,6 @@ func TestUltraDNSProvider_ApplyChanges_Integration(t *testing.T) {
assert.Equal(t, resp.Status, "404 Not Found") assert.Equal(t, resp.Status, "404 Not Found")
} }
} }
// This will work if you would set the environment variables such as "ULTRADNS_INTEGRATION" and zone should be available "kubernetes-ultradns-provider-test.com" for multiple target // This will work if you would set the environment variables such as "ULTRADNS_INTEGRATION" and zone should be available "kubernetes-ultradns-provider-test.com" for multiple target
@ -316,13 +312,13 @@ func TestUltraDNSProvider_ApplyChanges_MultipleTarget_integeration(t *testing.T)
_, ok := os.LookupEnv("ULTRADNS_INTEGRATION") _, ok := os.LookupEnv("ULTRADNS_INTEGRATION")
if !ok { if !ok {
log.Printf("Skipping test") log.Printf("Skipping test")
} else { } else {
provider, err := NewUltraDNSProvider(endpoint.NewDomainFilter([]string{"kubernetes-ultradns-provider-test.com"}), false) provider, err := NewUltraDNSProvider(endpoint.NewDomainFilter([]string{"kubernetes-ultradns-provider-test.com"}), false)
changes := &plan.Changes{} changes := &plan.Changes{}
changes.Create = []*endpoint.Endpoint{ changes.Create = []*endpoint.Endpoint{
{DNSName: "kubernetes-ultradns-provider-test.com", Targets: endpoint.Targets{"1.1.1.1", "1.1.2.2"}, RecordType: "A"}} {DNSName: "kubernetes-ultradns-provider-test.com", Targets: endpoint.Targets{"1.1.1.1", "1.1.2.2"}, RecordType: "A"},
}
err = provider.ApplyChanges(context.Background(), changes) err = provider.ApplyChanges(context.Background(), changes)
assert.Nil(t, err) assert.Nil(t, err)
@ -404,7 +400,7 @@ func TestUltraDNSProvider_newSBPoolObjectCreation(t *testing.T) {
}, },
} }
for _, _ = range changesList.ResourceRecordSetUltraDNS.RData { for range changesList.ResourceRecordSetUltraDNS.RData {
rrdataInfo := udnssdk.SBRDataInfo{ rrdataInfo := udnssdk.SBRDataInfo{
RunProbes: true, RunProbes: true,
@ -428,15 +424,13 @@ func TestUltraDNSProvider_newSBPoolObjectCreation(t *testing.T) {
actualSBPoolObject, _ := provider.newSBPoolObjectCreation(context.Background(), changesList) actualSBPoolObject, _ := provider.newSBPoolObjectCreation(context.Background(), changesList)
assert.Equal(t, sbPoolObject, actualSBPoolObject) assert.Equal(t, sbPoolObject, actualSBPoolObject)
} }
//Testcase to check fail scenario for multiple AAAA targets // Testcase to check fail scenario for multiple AAAA targets
func TestUltraDNSProvider_MultipleTargetAAAA(t *testing.T) { func TestUltraDNSProvider_MultipleTargetAAAA(t *testing.T) {
_, ok := os.LookupEnv("ULTRADNS_INTEGRATION") _, ok := os.LookupEnv("ULTRADNS_INTEGRATION")
if !ok { if !ok {
log.Printf("Skipping test") log.Printf("Skipping test")
} else { } else {
_ = os.Setenv("ULTRADNS_POOL_TYPE", "sbpool") _ = os.Setenv("ULTRADNS_POOL_TYPE", "sbpool")
@ -454,12 +448,11 @@ func TestUltraDNSProvider_MultipleTargetAAAA(t *testing.T) {
} }
} }
//Testcase to check fail scenario for multiple AAAA targets // Testcase to check fail scenario for multiple AAAA targets
func TestUltraDNSProvider_MultipleTargetAAAARDPool(t *testing.T) { func TestUltraDNSProvider_MultipleTargetAAAARDPool(t *testing.T) {
_, ok := os.LookupEnv("ULTRADNS_INTEGRATION") _, ok := os.LookupEnv("ULTRADNS_INTEGRATION")
if !ok { if !ok {
log.Printf("Skipping test") log.Printf("Skipping test")
} else { } else {
_ = os.Setenv("ULTRADNS_POOL_TYPE", "rdpool") _ = os.Setenv("ULTRADNS_POOL_TYPE", "rdpool")
provider, _ := NewUltraDNSProvider(endpoint.NewDomainFilter([]string{"kubernetes-ultradns-provider-test.com"}), false) provider, _ := NewUltraDNSProvider(endpoint.NewDomainFilter([]string{"kubernetes-ultradns-provider-test.com"}), false)
@ -491,7 +484,6 @@ func TestUltraDNSProvider_MultipleTargetCNAME(t *testing.T) {
_, ok := os.LookupEnv("ULTRADNS_INTEGRATION") _, ok := os.LookupEnv("ULTRADNS_INTEGRATION")
if !ok { if !ok {
log.Printf("Skipping test") log.Printf("Skipping test")
} else { } else {
provider, err := NewUltraDNSProvider(endpoint.NewDomainFilter([]string{"kubernetes-ultradns-provider-test.com"}), false) provider, err := NewUltraDNSProvider(endpoint.NewDomainFilter([]string{"kubernetes-ultradns-provider-test.com"}), false)
changes := &plan.Changes{} changes := &plan.Changes{}
@ -508,7 +500,7 @@ func TestUltraDNSProvider_MultipleTargetCNAME(t *testing.T) {
} }
} }
//Testing creation of RD Pool // Testing creation of RD Pool
func TestUltraDNSProvider_newRDPoolObjectCreation(t *testing.T) { func TestUltraDNSProvider_newRDPoolObjectCreation(t *testing.T) {
mocked := mockUltraDNSRecord{nil} mocked := mockUltraDNSRecord{nil}
mockedDomain := mockUltraDNSZone{nil} mockedDomain := mockUltraDNSZone{nil}
@ -538,10 +530,9 @@ func TestUltraDNSProvider_newRDPoolObjectCreation(t *testing.T) {
actualRDPoolObject, _ := provider.newRDPoolObjectCreation(context.Background(), changesList) actualRDPoolObject, _ := provider.newRDPoolObjectCreation(context.Background(), changesList)
assert.Equal(t, rdPoolObject, actualRDPoolObject) assert.Equal(t, rdPoolObject, actualRDPoolObject)
} }
//Testing Failure scenarios over NewUltraDNS Provider // Testing Failure scenarios over NewUltraDNS Provider
func TestNewUltraDNSProvider_FailCases(t *testing.T) { func TestNewUltraDNSProvider_FailCases(t *testing.T) {
_ = os.Setenv("ULTRADNS_USERNAME", "") _ = os.Setenv("ULTRADNS_USERNAME", "")
_ = os.Setenv("ULTRADNS_PASSWORD", "") _ = os.Setenv("ULTRADNS_PASSWORD", "")
@ -590,7 +581,6 @@ func TestNewUltraDNSProvider_FailCases(t *testing.T) {
_ = os.Unsetenv("ULTRADNS_POOL_TYPE") _ = os.Unsetenv("ULTRADNS_POOL_TYPE")
_, accounterr := NewUltraDNSProvider(endpoint.NewDomainFilter([]string{"test-ultradns-provider.com"}), true) _, accounterr := NewUltraDNSProvider(endpoint.NewDomainFilter([]string{"test-ultradns-provider.com"}), true)
assert.Nil(t, accounterr) assert.Nil(t, accounterr)
} }
// Testing success scenarios for newly introduced environment variables // Testing success scenarios for newly introduced environment variables
@ -618,12 +608,10 @@ func TestNewUltraDNSProvider_NewEnvVariableSuccessCases(t *testing.T) {
_ = os.Setenv("ULTRADNS_ENABLE_ACTONPROBE", "true") _ = os.Setenv("ULTRADNS_ENABLE_ACTONPROBE", "true")
_, err2 := NewUltraDNSProvider(endpoint.NewDomainFilter([]string{"test-ultradns-provider.com"}), true) _, err2 := NewUltraDNSProvider(endpoint.NewDomainFilter([]string{"test-ultradns-provider.com"}), true)
assert.Nilf(t, err2, "ActOnProbe given value is not working %s", "formatted") assert.Nilf(t, err2, "ActOnProbe given value is not working %s", "formatted")
} }
// Base64 Bad string decoding scenario // Base64 Bad string decoding scenario
func TestNewUltraDNSProvider_Base64DecodeFailcase(t *testing.T) { func TestNewUltraDNSProvider_Base64DecodeFailcase(t *testing.T) {
_ = os.Setenv("ULTRADNS_USERNAME", "") _ = os.Setenv("ULTRADNS_USERNAME", "")
_ = os.Setenv("ULTRADNS_PASSWORD", "12345") _ = os.Setenv("ULTRADNS_PASSWORD", "12345")
_ = os.Setenv("ULTRADNS_BASEURL", "") _ = os.Setenv("ULTRADNS_BASEURL", "")
@ -631,17 +619,14 @@ func TestNewUltraDNSProvider_Base64DecodeFailcase(t *testing.T) {
_ = os.Setenv("ULTRADNS_ENABLE_ACTONPROBE", "true") _ = os.Setenv("ULTRADNS_ENABLE_ACTONPROBE", "true")
_, err := NewUltraDNSProvider(endpoint.NewDomainFilter([]string{"test-ultradns-provider.com"}), true) _, err := NewUltraDNSProvider(endpoint.NewDomainFilter([]string{"test-ultradns-provider.com"}), true)
assert.NotNilf(t, err, "Base64 decode should fail in this case %s", "formatted") assert.NotNilf(t, err, "Base64 decode should fail in this case %s", "formatted")
} }
func TestUltraDNSProvider_PoolConversionCase(t *testing.T) { func TestUltraDNSProvider_PoolConversionCase(t *testing.T) {
_, ok := os.LookupEnv("ULTRADNS_INTEGRATION") _, ok := os.LookupEnv("ULTRADNS_INTEGRATION")
if !ok { if !ok {
log.Printf("Skipping test") log.Printf("Skipping test")
} else { } else {
//Creating SBPool Record // Creating SBPool Record
_ = os.Setenv("ULTRADNS_POOL_TYPE", "sbpool") _ = os.Setenv("ULTRADNS_POOL_TYPE", "sbpool")
provider, _ := NewUltraDNSProvider(endpoint.NewDomainFilter([]string{"kubernetes-ultradns-provider-test.com"}), false) provider, _ := NewUltraDNSProvider(endpoint.NewDomainFilter([]string{"kubernetes-ultradns-provider-test.com"}), false)
changes := &plan.Changes{} changes := &plan.Changes{}
@ -652,7 +637,7 @@ func TestUltraDNSProvider_PoolConversionCase(t *testing.T) {
resp, _ := provider.client.Do("GET", "zones/kubernetes-ultradns-provider-test.com./rrsets/A/ttl.kubernetes-ultradns-provider-test.com.", nil, udnssdk.RRSetListDTO{}) resp, _ := provider.client.Do("GET", "zones/kubernetes-ultradns-provider-test.com./rrsets/A/ttl.kubernetes-ultradns-provider-test.com.", nil, udnssdk.RRSetListDTO{})
assert.Equal(t, resp.Status, "200 OK") assert.Equal(t, resp.Status, "200 OK")
//Converting to RD Pool // Converting to RD Pool
_ = os.Setenv("ULTRADNS_POOL_TYPE", "rdpool") _ = os.Setenv("ULTRADNS_POOL_TYPE", "rdpool")
provider, _ = NewUltraDNSProvider(endpoint.NewDomainFilter([]string{"kubernetes-ultradns-provider-test.com"}), false) provider, _ = NewUltraDNSProvider(endpoint.NewDomainFilter([]string{"kubernetes-ultradns-provider-test.com"}), false)
changes = &plan.Changes{} changes = &plan.Changes{}
@ -662,7 +647,7 @@ func TestUltraDNSProvider_PoolConversionCase(t *testing.T) {
resp, _ = provider.client.Do("GET", "zones/kubernetes-ultradns-provider-test.com./rrsets/A/ttl.kubernetes-ultradns-provider-test.com.", nil, udnssdk.RRSetListDTO{}) resp, _ = provider.client.Do("GET", "zones/kubernetes-ultradns-provider-test.com./rrsets/A/ttl.kubernetes-ultradns-provider-test.com.", nil, udnssdk.RRSetListDTO{})
assert.Equal(t, resp.Status, "200 OK") assert.Equal(t, resp.Status, "200 OK")
//Converting back to SB Pool // Converting back to SB Pool
_ = os.Setenv("ULTRADNS_POOL_TYPE", "sbpool") _ = os.Setenv("ULTRADNS_POOL_TYPE", "sbpool")
provider, _ = NewUltraDNSProvider(endpoint.NewDomainFilter([]string{"kubernetes-ultradns-provider-test.com"}), false) provider, _ = NewUltraDNSProvider(endpoint.NewDomainFilter([]string{"kubernetes-ultradns-provider-test.com"}), false)
changes = &plan.Changes{} changes = &plan.Changes{}
@ -672,7 +657,7 @@ func TestUltraDNSProvider_PoolConversionCase(t *testing.T) {
resp, _ = provider.client.Do("GET", "zones/kubernetes-ultradns-provider-test.com./rrsets/A/ttl.kubernetes-ultradns-provider-test.com.", nil, udnssdk.RRSetListDTO{}) resp, _ = provider.client.Do("GET", "zones/kubernetes-ultradns-provider-test.com./rrsets/A/ttl.kubernetes-ultradns-provider-test.com.", nil, udnssdk.RRSetListDTO{})
assert.Equal(t, resp.Status, "200 OK") assert.Equal(t, resp.Status, "200 OK")
//Deleting Record // Deleting Record
changes = &plan.Changes{} changes = &plan.Changes{}
changes.Delete = []*endpoint.Endpoint{{DNSName: "ttl.kubernetes-ultradns-provider-test.com", Targets: endpoint.Targets{"1.1.1.1", "1.2.3.4"}, RecordType: "A"}} changes.Delete = []*endpoint.Endpoint{{DNSName: "ttl.kubernetes-ultradns-provider-test.com", Targets: endpoint.Targets{"1.1.1.1", "1.2.3.4"}, RecordType: "A"}}
err = provider.ApplyChanges(context.Background(), changes) err = provider.ApplyChanges(context.Background(), changes)
@ -683,11 +668,9 @@ func TestUltraDNSProvider_PoolConversionCase(t *testing.T) {
} }
func TestUltraDNSProvider_DomainFilter(t *testing.T) { func TestUltraDNSProvider_DomainFilter(t *testing.T) {
_, ok := os.LookupEnv("ULTRADNS_INTEGRATION") _, ok := os.LookupEnv("ULTRADNS_INTEGRATION")
if !ok { if !ok {
log.Printf("Skipping test") log.Printf("Skipping test")
} else { } else {
provider, _ := NewUltraDNSProvider(endpoint.NewDomainFilter([]string{"kubernetes-ultradns-provider-test.com", "kubernetes-ultradns-provider-test.com"}), true) provider, _ := NewUltraDNSProvider(endpoint.NewDomainFilter([]string{"kubernetes-ultradns-provider-test.com", "kubernetes-ultradns-provider-test.com"}), true)
zones, err := provider.Zones(context.Background()) zones, err := provider.Zones(context.Background())
@ -703,11 +686,9 @@ func TestUltraDNSProvider_DomainFilter(t *testing.T) {
} }
func TestUltraDNSProvider_DomainFiltersZonesFailCase(t *testing.T) { func TestUltraDNSProvider_DomainFiltersZonesFailCase(t *testing.T) {
_, ok := os.LookupEnv("ULTRADNS_INTEGRATION") _, ok := os.LookupEnv("ULTRADNS_INTEGRATION")
if !ok { if !ok {
log.Printf("Skipping test") log.Printf("Skipping test")
} else { } else {
provider, _ := NewUltraDNSProvider(endpoint.NewDomainFilter([]string{"kubernetes-ultradns-provider-test.com", "kubernetes-uldsvdsvadvvdsvadvstradns-provider-test.com"}), true) provider, _ := NewUltraDNSProvider(endpoint.NewDomainFilter([]string{"kubernetes-ultradns-provider-test.com", "kubernetes-uldsvdsvadvvdsvadvstradns-provider-test.com"}), true)
_, err := provider.Zones(context.Background()) _, err := provider.Zones(context.Background())
@ -715,7 +696,7 @@ func TestUltraDNSProvider_DomainFiltersZonesFailCase(t *testing.T) {
} }
} }
//zones function with domain filter test scenario // zones function with domain filter test scenario
func TestUltraDNSProvider_DomainFilterZonesMocked(t *testing.T) { func TestUltraDNSProvider_DomainFilterZonesMocked(t *testing.T) {
mocked := mockUltraDNSZone{} mocked := mockUltraDNSZone{}
provider := &UltraDNSProvider{ provider := &UltraDNSProvider{
@ -756,7 +737,7 @@ func TestUltraDNSProvider_DomainFilterZonesMocked(t *testing.T) {
assert.Nil(t, err) assert.Nil(t, err)
assert.Equal(t, reflect.DeepEqual(expected, zones), true) assert.Equal(t, reflect.DeepEqual(expected, zones), true)
//When zone is not given but account is provided // When zone is not given but account is provided
provider = &UltraDNSProvider{ provider = &UltraDNSProvider{
client: udnssdk.Client{ client: udnssdk.Client{
Zone: &mocked, Zone: &mocked,
@ -772,5 +753,4 @@ func TestUltraDNSProvider_DomainFilterZonesMocked(t *testing.T) {
zones, err = provider.Zones(context.Background()) zones, err = provider.Zones(context.Background())
assert.Nil(t, err) assert.Nil(t, err)
assert.Equal(t, reflect.DeepEqual(expected, zones), true) assert.Equal(t, reflect.DeepEqual(expected, zones), true)
} }

View File

@ -103,7 +103,7 @@ func (p *vinyldnsProvider) Records(ctx context.Context) (endpoints []*endpoint.E
recordsCount := len(r.Records) recordsCount := len(r.Records)
log.Debugf(fmt.Sprintf("%s.%s.%d.%s", r.Name, r.Type, recordsCount, zone.Name)) log.Debugf(fmt.Sprintf("%s.%s.%d.%s", r.Name, r.Type, recordsCount, zone.Name))
//TODO: AAAA Records // TODO: AAAA Records
if len(r.Records) > 0 { if len(r.Records) > 0 {
targets := make([]string, len(r.Records)) targets := make([]string, len(r.Records))
for idx, rr := range r.Records { for idx, rr := range r.Records {
@ -231,7 +231,7 @@ func newVinylDNSChanges(action string, endpoints []*endpoint.Endpoint) []*vinyld
} }
func newVinylDNSChange(action string, endpoint *endpoint.Endpoint) *vinyldnsChange { func newVinylDNSChange(action string, endpoint *endpoint.Endpoint) *vinyldnsChange {
var ttl = vinyldnsRecordTTL ttl := vinyldnsRecordTTL
if endpoint.RecordTTL.IsConfigured() { if endpoint.RecordTTL.IsConfigured() {
ttl = int(endpoint.RecordTTL) ttl = int(endpoint.RecordTTL)
} }

View File

@ -37,9 +37,11 @@ type mockVinyldnsZoneInterface struct {
var mockVinylDNSProvider vinyldnsProvider var mockVinylDNSProvider vinyldnsProvider
var vinylDNSZones []vinyldns.Zone var (
var vinylDNSRecords []vinyldns.RecordSet vinylDNSZones []vinyldns.Zone
var vinylDNSRecordSetUpdateResponse *vinyldns.RecordSetUpdateResponse vinylDNSRecords []vinyldns.RecordSet
vinylDNSRecordSetUpdateResponse *vinyldns.RecordSetUpdateResponse
)
func TestVinylDNSServices(t *testing.T) { func TestVinylDNSServices(t *testing.T) {
firstZone := vinyldns.Zone{ firstZone := vinyldns.Zone{

View File

@ -72,7 +72,6 @@ func (m mockVultrDomain) GetDNSSec(ctx context.Context, domain string) ([]string
return nil, nil return nil, nil
} }
type mockVultrRecord struct { type mockVultrRecord struct {
client *govultr.Client client *govultr.Client
} }

View File

@ -37,22 +37,22 @@ func TestZoneTypeFilterMatch(t *testing.T) {
zones []interface{} zones []interface{}
}{ }{
{ {
"", true, []interface{}{ publicZoneStr, privateZoneStr, &route53.HostedZone{} }, "", true, []interface{}{publicZoneStr, privateZoneStr, &route53.HostedZone{}},
}, },
{ {
"public", true, []interface{}{ publicZoneStr, publicZoneAWS, &route53.HostedZone{} }, "public", true, []interface{}{publicZoneStr, publicZoneAWS, &route53.HostedZone{}},
}, },
{ {
"public", false, []interface{}{ privateZoneStr, privateZoneAWS }, "public", false, []interface{}{privateZoneStr, privateZoneAWS},
}, },
{ {
"private", true, []interface{}{ privateZoneStr, privateZoneAWS }, "private", true, []interface{}{privateZoneStr, privateZoneAWS},
}, },
{ {
"private", false, []interface{}{ publicZoneStr, publicZoneAWS, &route53.HostedZone{} }, "private", false, []interface{}{publicZoneStr, publicZoneAWS, &route53.HostedZone{}},
}, },
{ {
"unknown", false, []interface{}{ publicZoneStr }, "unknown", false, []interface{}{publicZoneStr},
}, },
} { } {
zoneTypeFilter := NewZoneTypeFilter(tc.zoneTypeFilter) zoneTypeFilter := NewZoneTypeFilter(tc.zoneTypeFilter)

View File

@ -108,7 +108,7 @@ func testNoopApplyChanges(t *testing.T) {
}) })
assert.EqualError(t, err, inmemory.ErrRecordAlreadyExists.Error()) assert.EqualError(t, err, inmemory.ErrRecordAlreadyExists.Error())
//correct changes // correct changes
require.NoError(t, r.ApplyChanges(ctx, &plan.Changes{ require.NoError(t, r.ApplyChanges(ctx, &plan.Changes{
Create: []*endpoint.Endpoint{ Create: []*endpoint.Endpoint{
{ {

View File

@ -38,7 +38,7 @@ type Registry interface {
MissingRecords() []*endpoint.Endpoint MissingRecords() []*endpoint.Endpoint
} }
//TODO(ideahitme): consider moving this to Plan // TODO(ideahitme): consider moving this to Plan
func filterOwnedRecords(ownerID string, eps []*endpoint.Endpoint) []*endpoint.Endpoint { func filterOwnedRecords(ownerID string, eps []*endpoint.Endpoint) []*endpoint.Endpoint {
filtered := []*endpoint.Endpoint{} filtered := []*endpoint.Endpoint{}
for _, ep := range eps { for _, ep := range eps {

View File

@ -35,7 +35,7 @@ const recordTemplate = "%{record_type}"
// TXTRegistry implements registry interface with ownership implemented via associated TXT records // TXTRegistry implements registry interface with ownership implemented via associated TXT records
type TXTRegistry struct { type TXTRegistry struct {
provider provider.Provider provider provider.Provider
ownerID string //refers to the owner id of the current instance ownerID string // refers to the owner id of the current instance
mapper nameMapper mapper nameMapper
// cache the records in memory and update on an interval instead. // cache the records in memory and update on an interval instead.
@ -114,9 +114,9 @@ func (im *TXTRegistry) Records(ctx context.Context) ([]*endpoint.Endpoint, error
// We simply assume that TXT records for the registry will always have only one target. // We simply assume that TXT records for the registry will always have only one target.
labels, err := endpoint.NewLabelsFromString(record.Targets[0]) labels, err := endpoint.NewLabelsFromString(record.Targets[0])
if err == endpoint.ErrInvalidHeritage { if err == endpoint.ErrInvalidHeritage {
//if no heritage is found or it is invalid // if no heritage is found or it is invalid
//case when value of txt record cannot be identified // case when value of txt record cannot be identified
//record will not be removed as it will have empty owner // record will not be removed as it will have empty owner
endpoints = append(endpoints, record) endpoints = append(endpoints, record)
continue continue
} }
@ -343,6 +343,7 @@ func (pr affixNameMapper) dropAffixTemplate(name string) string {
func (pr affixNameMapper) isPrefix() bool { func (pr affixNameMapper) isPrefix() bool {
return len(pr.suffix) == 0 return len(pr.suffix) == 0
} }
func (pr affixNameMapper) isSuffix() bool { func (pr affixNameMapper) isSuffix() bool {
return len(pr.prefix) == 0 && len(pr.suffix) > 0 return len(pr.prefix) == 0 && len(pr.suffix) > 0
} }
@ -395,6 +396,7 @@ func (pr affixNameMapper) normalizeAffixTemplate(afix, recordType string) string
} }
return afix return afix
} }
func (pr affixNameMapper) toNewTXTName(endpointDNSName, recordType string) string { func (pr affixNameMapper) toNewTXTName(endpointDNSName, recordType string) string {
DNSName := strings.SplitN(endpointDNSName, ".", 2) DNSName := strings.SplitN(endpointDNSName, ".", 2)
recordType = strings.ToLower(recordType) recordType = strings.ToLower(recordType)

View File

@ -536,6 +536,7 @@ func testTXTRegistryApplyChangesWithTemplatedPrefix(t *testing.T) {
err := r.ApplyChanges(ctx, changes) err := r.ApplyChanges(ctx, changes)
require.NoError(t, err) require.NoError(t, err)
} }
func testTXTRegistryApplyChangesWithTemplatedSuffix(t *testing.T) { func testTXTRegistryApplyChangesWithTemplatedSuffix(t *testing.T) {
p := inmemory.NewInMemoryProvider() p := inmemory.NewInMemoryProvider()
p.CreateZone(testZone) p.CreateZone(testZone)
@ -579,6 +580,7 @@ func testTXTRegistryApplyChangesWithTemplatedSuffix(t *testing.T) {
err := r.ApplyChanges(ctx, changes) err := r.ApplyChanges(ctx, changes)
require.NoError(t, err) require.NoError(t, err)
} }
func testTXTRegistryApplyChangesWithSuffix(t *testing.T) { func testTXTRegistryApplyChangesWithSuffix(t *testing.T) {
p := inmemory.NewInMemoryProvider() p := inmemory.NewInMemoryProvider()
p.CreateZone(testZone) p.CreateZone(testZone)

View File

@ -66,7 +66,8 @@ func NewAmbassadorHostSource(
ctx context.Context, ctx context.Context,
dynamicKubeClient dynamic.Interface, dynamicKubeClient dynamic.Interface,
kubeClient kubernetes.Interface, kubeClient kubernetes.Interface,
namespace string) (Source, error) { namespace string,
) (Source, error) {
var err error var err error
// Use shared informer to listen for add/update/delete of Host in the specified namespace. // Use shared informer to listen for add/update/delete of Host in the specified namespace.

View File

@ -80,7 +80,6 @@ func TestAmbassadorHostSource(t *testing.T) {
t.Fatalf("could not collect ambassador source endpoints: %v", err) t.Fatalf("could not collect ambassador source endpoints: %v", err)
} }
} }
} }
func createAmbassadorHost(name, ambassadorService string) (*unstructured.Unstructured, error) { func createAmbassadorHost(name, ambassadorService string) (*unstructured.Unstructured, error) {

View File

@ -33,7 +33,6 @@ type ConnectorSuite struct {
} }
func (suite *ConnectorSuite) SetupTest() { func (suite *ConnectorSuite) SetupTest() {
} }
func startServerToServeTargets(t *testing.T, endpoints []*endpoint.Endpoint) net.Listener { func startServerToServeTargets(t *testing.T, endpoints []*endpoint.Endpoint) net.Listener {
@ -91,7 +90,8 @@ func testConnectorSourceEndpoints(t *testing.T) {
title: "valid remote server", title: "valid remote server",
server: true, server: true,
expected: []*endpoint.Endpoint{ expected: []*endpoint.Endpoint{
{DNSName: "abc.example.org", {
DNSName: "abc.example.org",
Targets: endpoint.Targets{"1.2.3.4"}, Targets: endpoint.Targets{"1.2.3.4"},
RecordType: endpoint.RecordTypeA, RecordType: endpoint.RecordTypeA,
RecordTTL: 180, RecordTTL: 180,
@ -103,12 +103,14 @@ func testConnectorSourceEndpoints(t *testing.T) {
title: "valid remote server with multiple endpoints", title: "valid remote server with multiple endpoints",
server: true, server: true,
expected: []*endpoint.Endpoint{ expected: []*endpoint.Endpoint{
{DNSName: "abc.example.org", {
DNSName: "abc.example.org",
Targets: endpoint.Targets{"1.2.3.4"}, Targets: endpoint.Targets{"1.2.3.4"},
RecordType: endpoint.RecordTypeA, RecordType: endpoint.RecordTypeA,
RecordTTL: 180, RecordTTL: 180,
}, },
{DNSName: "xyz.example.org", {
DNSName: "xyz.example.org",
Targets: endpoint.Targets{"abc.example.org"}, Targets: endpoint.Targets{"abc.example.org"},
RecordType: endpoint.RecordTypeCNAME, RecordType: endpoint.RecordTypeCNAME,
RecordTTL: 180, RecordTTL: 180,

View File

@ -45,7 +45,6 @@ type CRDSuite struct {
} }
func (suite *CRDSuite) SetupTest() { func (suite *CRDSuite) SetupTest() {
} }
func defaultHeader() http.Header { func defaultHeader() http.Header {
@ -152,7 +151,8 @@ func testCRDSourceEndpoints(t *testing.T) {
registeredKind: "DNSEndpoint", registeredKind: "DNSEndpoint",
kind: "DNSEndpoint", kind: "DNSEndpoint",
endpoints: []*endpoint.Endpoint{ endpoints: []*endpoint.Endpoint{
{DNSName: "abc.example.org", {
DNSName: "abc.example.org",
Targets: endpoint.Targets{"1.2.3.4"}, Targets: endpoint.Targets{"1.2.3.4"},
RecordType: endpoint.RecordTypeA, RecordType: endpoint.RecordTypeA,
RecordTTL: 180, RecordTTL: 180,
@ -168,7 +168,8 @@ func testCRDSourceEndpoints(t *testing.T) {
registeredKind: "DNSEndpoint", registeredKind: "DNSEndpoint",
kind: "JustEndpoint", kind: "JustEndpoint",
endpoints: []*endpoint.Endpoint{ endpoints: []*endpoint.Endpoint{
{DNSName: "abc.example.org", {
DNSName: "abc.example.org",
Targets: endpoint.Targets{"1.2.3.4"}, Targets: endpoint.Targets{"1.2.3.4"},
RecordType: endpoint.RecordTypeA, RecordType: endpoint.RecordTypeA,
RecordTTL: 180, RecordTTL: 180,
@ -186,7 +187,8 @@ func testCRDSourceEndpoints(t *testing.T) {
namespace: "foo", namespace: "foo",
registeredNamespace: "foo", registeredNamespace: "foo",
endpoints: []*endpoint.Endpoint{ endpoints: []*endpoint.Endpoint{
{DNSName: "abc.example.org", {
DNSName: "abc.example.org",
Targets: endpoint.Targets{"1.2.3.4"}, Targets: endpoint.Targets{"1.2.3.4"},
RecordType: endpoint.RecordTypeA, RecordType: endpoint.RecordTypeA,
RecordTTL: 180, RecordTTL: 180,
@ -204,7 +206,8 @@ func testCRDSourceEndpoints(t *testing.T) {
namespace: "foo", namespace: "foo",
registeredNamespace: "bar", registeredNamespace: "bar",
endpoints: []*endpoint.Endpoint{ endpoints: []*endpoint.Endpoint{
{DNSName: "abc.example.org", {
DNSName: "abc.example.org",
Targets: endpoint.Targets{"1.2.3.4"}, Targets: endpoint.Targets{"1.2.3.4"},
RecordType: endpoint.RecordTypeA, RecordType: endpoint.RecordTypeA,
RecordTTL: 180, RecordTTL: 180,
@ -222,7 +225,8 @@ func testCRDSourceEndpoints(t *testing.T) {
namespace: "foo", namespace: "foo",
registeredNamespace: "foo", registeredNamespace: "foo",
endpoints: []*endpoint.Endpoint{ endpoints: []*endpoint.Endpoint{
{DNSName: "abc.example.org", {
DNSName: "abc.example.org",
Targets: endpoint.Targets{}, Targets: endpoint.Targets{},
RecordType: endpoint.RecordTypeA, RecordType: endpoint.RecordTypeA,
RecordTTL: 180, RecordTTL: 180,
@ -240,7 +244,8 @@ func testCRDSourceEndpoints(t *testing.T) {
namespace: "foo", namespace: "foo",
registeredNamespace: "foo", registeredNamespace: "foo",
endpoints: []*endpoint.Endpoint{ endpoints: []*endpoint.Endpoint{
{DNSName: "abc.example.org", {
DNSName: "abc.example.org",
Targets: endpoint.Targets{"1.2.3.4"}, Targets: endpoint.Targets{"1.2.3.4"},
RecordType: endpoint.RecordTypeA, RecordType: endpoint.RecordTypeA,
RecordTTL: 180, RecordTTL: 180,
@ -258,12 +263,14 @@ func testCRDSourceEndpoints(t *testing.T) {
namespace: "foo", namespace: "foo",
registeredNamespace: "foo", registeredNamespace: "foo",
endpoints: []*endpoint.Endpoint{ endpoints: []*endpoint.Endpoint{
{DNSName: "abc.example.org", {
DNSName: "abc.example.org",
Targets: endpoint.Targets{"1.2.3.4"}, Targets: endpoint.Targets{"1.2.3.4"},
RecordType: endpoint.RecordTypeA, RecordType: endpoint.RecordTypeA,
RecordTTL: 180, RecordTTL: 180,
}, },
{DNSName: "xyz.example.org", {
DNSName: "xyz.example.org",
Targets: endpoint.Targets{"abc.example.org"}, Targets: endpoint.Targets{"abc.example.org"},
RecordType: endpoint.RecordTypeCNAME, RecordType: endpoint.RecordTypeCNAME,
RecordTTL: 180, RecordTTL: 180,
@ -283,7 +290,8 @@ func testCRDSourceEndpoints(t *testing.T) {
annotations: map[string]string{"test": "that"}, annotations: map[string]string{"test": "that"},
annotationFilter: "test=filter_something_else", annotationFilter: "test=filter_something_else",
endpoints: []*endpoint.Endpoint{ endpoints: []*endpoint.Endpoint{
{DNSName: "abc.example.org", {
DNSName: "abc.example.org",
Targets: endpoint.Targets{"1.2.3.4"}, Targets: endpoint.Targets{"1.2.3.4"},
RecordType: endpoint.RecordTypeA, RecordType: endpoint.RecordTypeA,
RecordTTL: 180, RecordTTL: 180,
@ -303,7 +311,8 @@ func testCRDSourceEndpoints(t *testing.T) {
annotations: map[string]string{"test": "that"}, annotations: map[string]string{"test": "that"},
annotationFilter: "test=that", annotationFilter: "test=that",
endpoints: []*endpoint.Endpoint{ endpoints: []*endpoint.Endpoint{
{DNSName: "abc.example.org", {
DNSName: "abc.example.org",
Targets: endpoint.Targets{"1.2.3.4"}, Targets: endpoint.Targets{"1.2.3.4"},
RecordType: endpoint.RecordTypeA, RecordType: endpoint.RecordTypeA,
RecordTTL: 180, RecordTTL: 180,
@ -323,7 +332,8 @@ func testCRDSourceEndpoints(t *testing.T) {
labels: map[string]string{"test": "that"}, labels: map[string]string{"test": "that"},
labelFilter: "test=filter_something_else", labelFilter: "test=filter_something_else",
endpoints: []*endpoint.Endpoint{ endpoints: []*endpoint.Endpoint{
{DNSName: "abc.example.org", {
DNSName: "abc.example.org",
Targets: endpoint.Targets{"1.2.3.4"}, Targets: endpoint.Targets{"1.2.3.4"},
RecordType: endpoint.RecordTypeA, RecordType: endpoint.RecordTypeA,
RecordTTL: 180, RecordTTL: 180,
@ -343,7 +353,8 @@ func testCRDSourceEndpoints(t *testing.T) {
labels: map[string]string{"test": "that"}, labels: map[string]string{"test": "that"},
labelFilter: "test=that", labelFilter: "test=that",
endpoints: []*endpoint.Endpoint{ endpoints: []*endpoint.Endpoint{
{DNSName: "abc.example.org", {
DNSName: "abc.example.org",
Targets: endpoint.Targets{"1.2.3.4"}, Targets: endpoint.Targets{"1.2.3.4"},
RecordType: endpoint.RecordTypeA, RecordType: endpoint.RecordTypeA,
RecordTTL: 180, RecordTTL: 180,
@ -363,7 +374,8 @@ func testCRDSourceEndpoints(t *testing.T) {
labels: map[string]string{"test": "that"}, labels: map[string]string{"test": "that"},
labelFilter: "test=that", labelFilter: "test=that",
endpoints: []*endpoint.Endpoint{ endpoints: []*endpoint.Endpoint{
{DNSName: "abc.example.org", {
DNSName: "abc.example.org",
Targets: endpoint.Targets{"ns1.k8s.io", "ns2.k8s.io"}, Targets: endpoint.Targets{"ns1.k8s.io", "ns2.k8s.io"},
RecordType: endpoint.RecordTypeNS, RecordType: endpoint.RecordTypeNS,
RecordTTL: 180, RecordTTL: 180,

View File

@ -446,7 +446,8 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) {
Status: httpRouteStatus(gatewayParentRef("default", "test")), Status: httpRouteStatus(gatewayParentRef("default", "test")),
}}, }},
endpoints: []*endpoint.Endpoint{ endpoints: []*endpoint.Endpoint{
newTestEndpoint("foo.example.internal", "A", "1.2.3.4")}, newTestEndpoint("foo.example.internal", "A", "1.2.3.4"),
},
}, },
{ {
title: "WildcardInRoute", title: "WildcardInRoute",
@ -472,7 +473,8 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) {
Status: httpRouteStatus(gatewayParentRef("default", "test")), Status: httpRouteStatus(gatewayParentRef("default", "test")),
}}, }},
endpoints: []*endpoint.Endpoint{ endpoints: []*endpoint.Endpoint{
newTestEndpoint("foo.example.internal", "A", "1.2.3.4")}, newTestEndpoint("foo.example.internal", "A", "1.2.3.4"),
},
}, },
{ {
title: "WildcardInRouteAndGateway", title: "WildcardInRouteAndGateway",
@ -498,7 +500,8 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) {
Status: httpRouteStatus(gatewayParentRef("default", "test")), Status: httpRouteStatus(gatewayParentRef("default", "test")),
}}, }},
endpoints: []*endpoint.Endpoint{ endpoints: []*endpoint.Endpoint{
newTestEndpoint("*.example.internal", "A", "1.2.3.4")}, newTestEndpoint("*.example.internal", "A", "1.2.3.4"),
},
}, },
{ {
title: "NoRouteHostname", title: "NoRouteHostname",
@ -522,7 +525,8 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) {
Status: httpRouteStatus(gatewayParentRef("default", "test")), Status: httpRouteStatus(gatewayParentRef("default", "test")),
}}, }},
endpoints: []*endpoint.Endpoint{ endpoints: []*endpoint.Endpoint{
newTestEndpoint("foo.example.internal", "A", "1.2.3.4")}, newTestEndpoint("foo.example.internal", "A", "1.2.3.4"),
},
}, },
{ {
title: "NoGateways", title: "NoGateways",

View File

@ -94,13 +94,13 @@ var internalProxySvc = corev1.Service{
Status: corev1.ServiceStatus{ Status: corev1.ServiceStatus{
LoadBalancer: corev1.LoadBalancerStatus{ LoadBalancer: corev1.LoadBalancerStatus{
Ingress: []corev1.LoadBalancerIngress{ Ingress: []corev1.LoadBalancerIngress{
corev1.LoadBalancerIngress{ {
IP: "203.0.113.1", IP: "203.0.113.1",
}, },
corev1.LoadBalancerIngress{ {
IP: "203.0.113.2", IP: "203.0.113.2",
}, },
corev1.LoadBalancerIngress{ {
IP: "203.0.113.3", IP: "203.0.113.3",
}, },
}, },
@ -181,13 +181,13 @@ var externalProxySvc = corev1.Service{
Status: corev1.ServiceStatus{ Status: corev1.ServiceStatus{
LoadBalancer: corev1.LoadBalancerStatus{ LoadBalancer: corev1.LoadBalancerStatus{
Ingress: []corev1.LoadBalancerIngress{ Ingress: []corev1.LoadBalancerIngress{
corev1.LoadBalancerIngress{ {
Hostname: "a.example.org", Hostname: "a.example.org",
}, },
corev1.LoadBalancerIngress{ {
Hostname: "b.example.org", Hostname: "b.example.org",
}, },
corev1.LoadBalancerIngress{ {
Hostname: "c.example.org", Hostname: "c.example.org",
}, },
}, },
@ -270,7 +270,7 @@ func TestGlooSource(t *testing.T) {
assert.NoError(t, err) assert.NoError(t, err)
assert.Len(t, endpoints, 5) assert.Len(t, endpoints, 5)
assert.ElementsMatch(t, endpoints, []*endpoint.Endpoint{ assert.ElementsMatch(t, endpoints, []*endpoint.Endpoint{
&endpoint.Endpoint{ {
DNSName: "a.test", DNSName: "a.test",
Targets: []string{internalProxySvc.Status.LoadBalancer.Ingress[0].IP, internalProxySvc.Status.LoadBalancer.Ingress[1].IP, internalProxySvc.Status.LoadBalancer.Ingress[2].IP}, Targets: []string{internalProxySvc.Status.LoadBalancer.Ingress[0].IP, internalProxySvc.Status.LoadBalancer.Ingress[1].IP, internalProxySvc.Status.LoadBalancer.Ingress[2].IP},
RecordType: endpoint.RecordTypeA, RecordType: endpoint.RecordTypeA,
@ -278,7 +278,7 @@ func TestGlooSource(t *testing.T) {
Labels: endpoint.Labels{}, Labels: endpoint.Labels{},
ProviderSpecific: endpoint.ProviderSpecific{}, ProviderSpecific: endpoint.ProviderSpecific{},
}, },
&endpoint.Endpoint{ {
DNSName: "b.test", DNSName: "b.test",
Targets: []string{internalProxySvc.Status.LoadBalancer.Ingress[0].IP, internalProxySvc.Status.LoadBalancer.Ingress[1].IP, internalProxySvc.Status.LoadBalancer.Ingress[2].IP}, Targets: []string{internalProxySvc.Status.LoadBalancer.Ingress[0].IP, internalProxySvc.Status.LoadBalancer.Ingress[1].IP, internalProxySvc.Status.LoadBalancer.Ingress[2].IP},
RecordType: endpoint.RecordTypeA, RecordType: endpoint.RecordTypeA,
@ -286,7 +286,7 @@ func TestGlooSource(t *testing.T) {
Labels: endpoint.Labels{}, Labels: endpoint.Labels{},
ProviderSpecific: endpoint.ProviderSpecific{}, ProviderSpecific: endpoint.ProviderSpecific{},
}, },
&endpoint.Endpoint{ {
DNSName: "c.test", DNSName: "c.test",
Targets: []string{internalProxySvc.Status.LoadBalancer.Ingress[0].IP, internalProxySvc.Status.LoadBalancer.Ingress[1].IP, internalProxySvc.Status.LoadBalancer.Ingress[2].IP}, Targets: []string{internalProxySvc.Status.LoadBalancer.Ingress[0].IP, internalProxySvc.Status.LoadBalancer.Ingress[1].IP, internalProxySvc.Status.LoadBalancer.Ingress[2].IP},
RecordType: endpoint.RecordTypeA, RecordType: endpoint.RecordTypeA,
@ -300,7 +300,7 @@ func TestGlooSource(t *testing.T) {
}, },
}, },
}, },
&endpoint.Endpoint{ {
DNSName: "d.test", DNSName: "d.test",
Targets: []string{externalProxySvc.Status.LoadBalancer.Ingress[0].Hostname, externalProxySvc.Status.LoadBalancer.Ingress[1].Hostname, externalProxySvc.Status.LoadBalancer.Ingress[2].Hostname}, Targets: []string{externalProxySvc.Status.LoadBalancer.Ingress[0].Hostname, externalProxySvc.Status.LoadBalancer.Ingress[1].Hostname, externalProxySvc.Status.LoadBalancer.Ingress[2].Hostname},
RecordType: endpoint.RecordTypeCNAME, RecordType: endpoint.RecordTypeCNAME,
@ -308,7 +308,7 @@ func TestGlooSource(t *testing.T) {
Labels: endpoint.Labels{}, Labels: endpoint.Labels{},
ProviderSpecific: endpoint.ProviderSpecific{}, ProviderSpecific: endpoint.ProviderSpecific{},
}, },
&endpoint.Endpoint{ {
DNSName: "e.test", DNSName: "e.test",
Targets: []string{externalProxySvc.Status.LoadBalancer.Ingress[0].Hostname, externalProxySvc.Status.LoadBalancer.Ingress[1].Hostname, externalProxySvc.Status.LoadBalancer.Ingress[2].Hostname}, Targets: []string{externalProxySvc.Status.LoadBalancer.Ingress[0].Hostname, externalProxySvc.Status.LoadBalancer.Ingress[1].Hostname, externalProxySvc.Status.LoadBalancer.Ingress[2].Hostname},
RecordType: endpoint.RecordTypeCNAME, RecordType: endpoint.RecordTypeCNAME,

View File

@ -255,11 +255,10 @@ func newKongUnstructuredConverter() (*unstructuredConverter, error) {
return uc, nil return uc, nil
} }
//Kong types based on https://github.com/Kong/kubernetes-ingress-controller/blob/v1.2.0/pkg/apis/configuration/v1beta1/types.go to facilitate testing // Kong types based on https://github.com/Kong/kubernetes-ingress-controller/blob/v1.2.0/pkg/apis/configuration/v1beta1/types.go to facilitate testing
//When trying to import them from the Kong repo as a dependency it required upgrading the k8s.io/client-go and k8s.io/apimachinery which seemed // When trying to import them from the Kong repo as a dependency it required upgrading the k8s.io/client-go and k8s.io/apimachinery which seemed
//cause several changes in how the mock clients were working that resulted in a bunch of failures in other tests // cause several changes in how the mock clients were working that resulted in a bunch of failures in other tests
//If that is dealt with at some point the below can be removed and replaced with an actual import // If that is dealt with at some point the below can be removed and replaced with an actual import
type TCPIngress struct { type TCPIngress struct {
metav1.TypeMeta `json:",inline"` metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"` metav1.ObjectMeta `json:"metadata,omitempty"`

View File

@ -490,7 +490,6 @@ func testOcpRouteSourceEndpoints(t *testing.T) {
title: "route without matching labels", title: "route without matching labels",
labelFilter: "app=web-external", labelFilter: "app=web-external",
ocpRoute: &routev1.Route{ ocpRoute: &routev1.Route{
Spec: routev1.RouteSpec{ Spec: routev1.RouteSpec{
Host: "my-annotation-domain.com", Host: "my-annotation-domain.com",
}, },

View File

@ -74,7 +74,6 @@ func NewPodSource(ctx context.Context, kubeClient kubernetes.Interface, namespac
} }
func (*podSource) AddEventHandler(ctx context.Context, handler func()) { func (*podSource) AddEventHandler(ctx context.Context, handler func()) {
} }
func (ps *podSource) Endpoints(ctx context.Context) ([]*endpoint.Endpoint, error) { func (ps *podSource) Endpoints(ctx context.Context) ([]*endpoint.Endpoint, error) {

View File

@ -686,7 +686,8 @@ func testServiceSourceEndpoints(t *testing.T) {
{DNSName: "internal.foo.example.org", Targets: endpoint.Targets{"1.2.3.4"}}, {DNSName: "internal.foo.example.org", Targets: endpoint.Targets{"1.2.3.4"}},
{DNSName: "internal.foo.example.org", Targets: endpoint.Targets{"lb.example.com"}}, {DNSName: "internal.foo.example.org", Targets: endpoint.Targets{"lb.example.com"}},
}, },
}, { },
{
title: "load balancer services annotated with DNS Controller annotations return an endpoint with both annotations in compatibility mode", title: "load balancer services annotated with DNS Controller annotations return an endpoint with both annotations in compatibility mode",
svcNamespace: "testing", svcNamespace: "testing",
svcName: "foo", svcName: "foo",

View File

@ -215,14 +215,14 @@ func TestEndpointsFromRouteGroups(t *testing.T) {
Targets: endpoint.Targets([]string{"lb.example.org"}), Targets: endpoint.Targets([]string{"lb.example.org"}),
}, },
}, },
}} { },
} {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
got := tt.source.endpointsFromRouteGroup(tt.rg) got := tt.source.endpointsFromRouteGroup(tt.rg)
validateEndpoints(t, got, tt.want) validateEndpoints(t, got, tt.want)
}) })
} }
} }
type fakeRouteGroupClient struct { type fakeRouteGroupClient struct {
@ -709,7 +709,8 @@ func TestRouteGroupsEndpoints(t *testing.T) {
Targets: endpoint.Targets([]string{"lb.example.org"}), Targets: endpoint.Targets([]string{"lb.example.org"}),
}, },
}, },
}} { },
} {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
if tt.fqdnTemplate != "" { if tt.fqdnTemplate != "" {
tmpl, err := parseTemplate(tt.fqdnTemplate) tmpl, err := parseTemplate(tt.fqdnTemplate)