This commit is contained in:
Andy Bursavich 2022-09-20 15:49:18 -07:00
parent 4b5b64c339
commit 74ffff6c26
78 changed files with 330 additions and 425 deletions

View File

@ -31,7 +31,7 @@ func removeLinkPrefixInIndex() {
updatedContent := strings.ReplaceAll(string(content), "](./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 {
log.Fatalf("Could not open index.md file to update content. Original error: %s", err)
}

View File

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

View File

@ -32,7 +32,7 @@ type LabelsSuite struct {
barTextAsMap Labels
noHeritageText string
wrongHeritageText string
multipleHeritageText string //considered invalid
multipleHeritageText string // considered invalid
}
func (suite *LabelsSuite) SetupTest() {
@ -48,7 +48,7 @@ func (suite *LabelsSuite) SetupTest() {
"resource": "bar-resource",
"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.wrongHeritageText = "heritage=mate,external-dns/owner=random-owner"

View File

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

View File

@ -338,7 +338,7 @@ func main() {
p, err = safedns.NewSafeDNSProvider(domainFilter, cfg.DryRun)
case "plural":
p, err = plural.NewPluralProvider(cfg.PluralCluster, cfg.PluralProvider)
case "tencentcloud":
case "tencentcloud":
p, err = tencentcloud.NewTencentCloudProvider(domainFilter, zoneIDFilter, cfg.TencentCloudConfigFile, cfg.TencentCloudZoneType, cfg.DryRun)
default:
log.Fatalf("unknown dns provider: %s", cfg.Provider)

View File

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

View File

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

View File

@ -84,7 +84,7 @@ func (suite *ResolverSuite) SetupTest() {
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",
Targets: endpoint.Targets{"8.8.8.8"},
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.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.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")

View File

@ -82,7 +82,7 @@ type planTable struct {
resolver ConflictResolver
}
func newPlanTable() planTable { //TODO: make resolver configurable
func newPlanTable() planTable { // TODO: make resolver configurable
return planTable{map[string]map[string]*planTableRow{}, PerResource{}}
}
@ -148,7 +148,7 @@ func (p *Plan) Calculate() *Plan {
for _, topRow := range t.rows {
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))
}
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
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)
// 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) {

View File

@ -226,7 +226,7 @@ func (suite *PlanTestSuite) SetupTest() {
func (suite *PlanTestSuite) TestSyncFirstRound() {
current := []*endpoint.Endpoint{}
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{}
expectedUpdateNew := []*endpoint.Endpoint{}
expectedDelete := []*endpoint.Endpoint{}
@ -544,7 +544,7 @@ func (suite *PlanTestSuite) TestRemoveEndpointWithUpsert() {
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() {
current := []*endpoint.Endpoint{suite.fooV3CnameSameResource, suite.bar192A}
desired := []*endpoint.Endpoint{suite.fooV1Cname, suite.fooV3CnameSameResource}
@ -567,9 +567,8 @@ func (suite *PlanTestSuite) TestDuplicatedEndpointsForSameResourceReplace() {
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() {
current := []*endpoint.Endpoint{suite.fooV1Cname, suite.bar192A}
desired := []*endpoint.Endpoint{suite.fooV1Cname, suite.fooV3CnameSameResource}
expectedCreate := []*endpoint.Endpoint{}
@ -592,7 +591,6 @@ func (suite *PlanTestSuite) TestDuplicatedEndpointsForSameResourceRetain() {
}
func (suite *PlanTestSuite) TestMultipleRecordsSameNameDifferentSetIdentifier() {
current := []*endpoint.Endpoint{suite.multiple1}
desired := []*endpoint.Endpoint{suite.multiple2, suite.multiple3}
expectedCreate := []*endpoint.Endpoint{suite.multiple3}
@ -615,7 +613,6 @@ func (suite *PlanTestSuite) TestMultipleRecordsSameNameDifferentSetIdentifier()
}
func (suite *PlanTestSuite) TestSetIdentifierUpdateCreatesAndDeletes() {
current := []*endpoint.Endpoint{suite.multiple2}
desired := []*endpoint.Endpoint{suite.multiple3}
expectedCreate := []*endpoint.Endpoint{suite.multiple3}
@ -638,7 +635,6 @@ func (suite *PlanTestSuite) TestSetIdentifierUpdateCreatesAndDeletes() {
}
func (suite *PlanTestSuite) TestDomainFiltersInitial() {
current := []*endpoint.Endpoint{suite.domainFilterExcluded}
desired := []*endpoint.Endpoint{suite.domainFilterExcluded, 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() {
current := []*endpoint.Endpoint{suite.domainFilterExcluded, suite.domainFilterFiltered1, suite.domainFilterFiltered2}
desired := []*endpoint.Endpoint{suite.domainFilterExcluded, suite.domainFilterFiltered1, suite.domainFilterFiltered2, suite.domainFilterFiltered3}
expectedCreate := []*endpoint.Endpoint{suite.domainFilterFiltered3}
@ -686,7 +681,6 @@ func (suite *PlanTestSuite) TestDomainFiltersUpdate() {
}
func (suite *PlanTestSuite) TestMissing() {
missing := []*endpoint.Endpoint{suite.domainFilterFilteredTXT1, suite.domainFilterFilteredTXT2, suite.domainFilterExcludedTXT}
expectedCreate := []*endpoint.Endpoint{suite.domainFilterFilteredTXT1, suite.domainFilterFilteredTXT2}
@ -893,7 +887,6 @@ func TestShouldUpdateProviderSpecific(tt *testing.T) {
}
b := plan.shouldUpdateProviderSpecific(test.desired, test.current)
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, ",")
}
resp, err := p.client.ListZones(queryArgs) // retrieve all primary zones filtered by contract ids
if err != nil {
log.Errorf("Failed to fetch zones from Akamai")
return filteredZones, err
@ -215,7 +214,7 @@ func (p AkamaiProvider) fetchZones() (akamaiZones, error) {
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) {
zones, err := p.fetchZones() // returns a filtered set of zones
if err != nil {
@ -242,7 +241,7 @@ func (p AkamaiProvider) Records(context.Context) (endpoints []*endpoint.Endpoint
continue
}
var temp interface{} = int64(recordset.TTL)
var ttl = endpoint.TTL(temp.(int64))
ttl := endpoint.TTL(temp.(int64))
endpoints = append(endpoints, endpoint.NewEndpointWithTTL(recordset.Name,
recordset.Type,
ttl,
@ -359,7 +358,7 @@ func trimTxtRdata(rdata []string, rtype string) []string {
func ttlAsInt(src endpoint.TTL) int {
var temp interface{} = int64(src)
var temp64 = temp.(int64)
temp64 := temp.(int64)
var ttl int = edgeDNSRecordTTL
if temp64 > 0 && temp64 <= int64(maxInt) {
ttl = int(temp64)

View File

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

View File

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

View File

@ -63,68 +63,66 @@ const (
sameZoneAlias = "same-zone"
)
var (
// see: https://docs.aws.amazon.com/general/latest/gr/elb.html
canonicalHostedZones = map[string]string{
// Application Load Balancers and Classic Load Balancers
"us-east-2.elb.amazonaws.com": "Z3AADJGX6KTTL2",
"us-east-1.elb.amazonaws.com": "Z35SXDOTRQ7X7K",
"us-west-1.elb.amazonaws.com": "Z368ELLRRE2KJ0",
"us-west-2.elb.amazonaws.com": "Z1H1FL5HABSF5",
"ca-central-1.elb.amazonaws.com": "ZQSVJUPU6J1EY",
"ap-east-1.elb.amazonaws.com": "Z3DQVH9N71FHZ0",
"ap-south-1.elb.amazonaws.com": "ZP97RAFLXTNZK",
"ap-northeast-2.elb.amazonaws.com": "ZWKZPGTI48KDX",
"ap-northeast-3.elb.amazonaws.com": "Z5LXEXXYW11ES",
"ap-southeast-1.elb.amazonaws.com": "Z1LMS91P8CMLE5",
"ap-southeast-2.elb.amazonaws.com": "Z1GM3OXH4ZPM65",
"ap-southeast-3.elb.amazonaws.com": "Z08888821HLRG5A9ZRTER",
"ap-northeast-1.elb.amazonaws.com": "Z14GRHDCWA56QT",
"eu-central-1.elb.amazonaws.com": "Z215JYRZR1TBD5",
"eu-west-1.elb.amazonaws.com": "Z32O12XQLNTSW2",
"eu-west-2.elb.amazonaws.com": "ZHURV8PSTC4K8",
"eu-west-3.elb.amazonaws.com": "Z3Q77PNBQS71R4",
"eu-north-1.elb.amazonaws.com": "Z23TAZ6LKFMNIO",
"eu-south-1.elb.amazonaws.com": "Z3ULH7SSC9OV64",
"sa-east-1.elb.amazonaws.com": "Z2P70J7HTTTPLU",
"cn-north-1.elb.amazonaws.com.cn": "Z1GDH35T77C1KE",
"cn-northwest-1.elb.amazonaws.com.cn": "ZM7IZAIOVVDZF",
"us-gov-west-1.elb.amazonaws.com": "Z33AYJ8TM3BH4J",
"us-gov-east-1.elb.amazonaws.com": "Z166TLBEWOO7G0",
"me-south-1.elb.amazonaws.com": "ZS929ML54UICD",
"af-south-1.elb.amazonaws.com": "Z268VQBMOI5EKX",
// Network Load Balancers
"elb.us-east-2.amazonaws.com": "ZLMOA37VPKANP",
"elb.us-east-1.amazonaws.com": "Z26RNL4JYFTOTI",
"elb.us-west-1.amazonaws.com": "Z24FKFUX50B4VW",
"elb.us-west-2.amazonaws.com": "Z18D5FSROUN65G",
"elb.ca-central-1.amazonaws.com": "Z2EPGBW3API2WT",
"elb.ap-east-1.amazonaws.com": "Z12Y7K3UBGUAD1",
"elb.ap-south-1.amazonaws.com": "ZVDDRBQ08TROA",
"elb.ap-northeast-2.amazonaws.com": "ZIBE1TIR4HY56",
"elb.ap-southeast-1.amazonaws.com": "ZKVM4W9LS7TM",
"elb.ap-southeast-2.amazonaws.com": "ZCT6FZBF4DROD",
"elb.ap-southeast-3.amazonaws.com": "Z01971771FYVNCOVWJU1G",
"elb.ap-northeast-1.amazonaws.com": "Z31USIVHYNEOWT",
"elb.eu-central-1.amazonaws.com": "Z3F0SRJ5LGBH90",
"elb.eu-west-1.amazonaws.com": "Z2IFOLAFXWLO4F",
"elb.eu-west-2.amazonaws.com": "ZD4D7Y8KGAS4G",
"elb.eu-west-3.amazonaws.com": "Z1CMS0P5QUZ6D5",
"elb.eu-north-1.amazonaws.com": "Z1UDT6IFJ4EJM",
"elb.eu-south-1.amazonaws.com": "Z23146JA1KNAFP",
"elb.sa-east-1.amazonaws.com": "ZTK26PT1VY4CU",
"elb.cn-north-1.amazonaws.com.cn": "Z3QFB96KMJ7ED6",
"elb.cn-northwest-1.amazonaws.com.cn": "ZQEIKTCZ8352D",
"elb.us-gov-west-1.amazonaws.com": "ZMG1MZ2THAWF1",
"elb.us-gov-east-1.amazonaws.com": "Z1ZSMQQ6Q24QQ8",
"elb.me-south-1.amazonaws.com": "Z3QSRYVP46NYYV",
"elb.af-south-1.amazonaws.com": "Z203XCE67M25HM",
// Global Accelerator
"awsglobalaccelerator.com": "Z2BJ6XQ5FK7U4H",
// Cloudfront
"cloudfront.net": "Z2FDTNDATAQYW2",
}
)
// see: https://docs.aws.amazon.com/general/latest/gr/elb.html
var canonicalHostedZones = map[string]string{
// Application Load Balancers and Classic Load Balancers
"us-east-2.elb.amazonaws.com": "Z3AADJGX6KTTL2",
"us-east-1.elb.amazonaws.com": "Z35SXDOTRQ7X7K",
"us-west-1.elb.amazonaws.com": "Z368ELLRRE2KJ0",
"us-west-2.elb.amazonaws.com": "Z1H1FL5HABSF5",
"ca-central-1.elb.amazonaws.com": "ZQSVJUPU6J1EY",
"ap-east-1.elb.amazonaws.com": "Z3DQVH9N71FHZ0",
"ap-south-1.elb.amazonaws.com": "ZP97RAFLXTNZK",
"ap-northeast-2.elb.amazonaws.com": "ZWKZPGTI48KDX",
"ap-northeast-3.elb.amazonaws.com": "Z5LXEXXYW11ES",
"ap-southeast-1.elb.amazonaws.com": "Z1LMS91P8CMLE5",
"ap-southeast-2.elb.amazonaws.com": "Z1GM3OXH4ZPM65",
"ap-southeast-3.elb.amazonaws.com": "Z08888821HLRG5A9ZRTER",
"ap-northeast-1.elb.amazonaws.com": "Z14GRHDCWA56QT",
"eu-central-1.elb.amazonaws.com": "Z215JYRZR1TBD5",
"eu-west-1.elb.amazonaws.com": "Z32O12XQLNTSW2",
"eu-west-2.elb.amazonaws.com": "ZHURV8PSTC4K8",
"eu-west-3.elb.amazonaws.com": "Z3Q77PNBQS71R4",
"eu-north-1.elb.amazonaws.com": "Z23TAZ6LKFMNIO",
"eu-south-1.elb.amazonaws.com": "Z3ULH7SSC9OV64",
"sa-east-1.elb.amazonaws.com": "Z2P70J7HTTTPLU",
"cn-north-1.elb.amazonaws.com.cn": "Z1GDH35T77C1KE",
"cn-northwest-1.elb.amazonaws.com.cn": "ZM7IZAIOVVDZF",
"us-gov-west-1.elb.amazonaws.com": "Z33AYJ8TM3BH4J",
"us-gov-east-1.elb.amazonaws.com": "Z166TLBEWOO7G0",
"me-south-1.elb.amazonaws.com": "ZS929ML54UICD",
"af-south-1.elb.amazonaws.com": "Z268VQBMOI5EKX",
// Network Load Balancers
"elb.us-east-2.amazonaws.com": "ZLMOA37VPKANP",
"elb.us-east-1.amazonaws.com": "Z26RNL4JYFTOTI",
"elb.us-west-1.amazonaws.com": "Z24FKFUX50B4VW",
"elb.us-west-2.amazonaws.com": "Z18D5FSROUN65G",
"elb.ca-central-1.amazonaws.com": "Z2EPGBW3API2WT",
"elb.ap-east-1.amazonaws.com": "Z12Y7K3UBGUAD1",
"elb.ap-south-1.amazonaws.com": "ZVDDRBQ08TROA",
"elb.ap-northeast-2.amazonaws.com": "ZIBE1TIR4HY56",
"elb.ap-southeast-1.amazonaws.com": "ZKVM4W9LS7TM",
"elb.ap-southeast-2.amazonaws.com": "ZCT6FZBF4DROD",
"elb.ap-southeast-3.amazonaws.com": "Z01971771FYVNCOVWJU1G",
"elb.ap-northeast-1.amazonaws.com": "Z31USIVHYNEOWT",
"elb.eu-central-1.amazonaws.com": "Z3F0SRJ5LGBH90",
"elb.eu-west-1.amazonaws.com": "Z2IFOLAFXWLO4F",
"elb.eu-west-2.amazonaws.com": "ZD4D7Y8KGAS4G",
"elb.eu-west-3.amazonaws.com": "Z1CMS0P5QUZ6D5",
"elb.eu-north-1.amazonaws.com": "Z1UDT6IFJ4EJM",
"elb.eu-south-1.amazonaws.com": "Z23146JA1KNAFP",
"elb.sa-east-1.amazonaws.com": "ZTK26PT1VY4CU",
"elb.cn-north-1.amazonaws.com.cn": "Z3QFB96KMJ7ED6",
"elb.cn-northwest-1.amazonaws.com.cn": "ZQEIKTCZ8352D",
"elb.us-gov-west-1.amazonaws.com": "ZMG1MZ2THAWF1",
"elb.us-gov-east-1.amazonaws.com": "Z1ZSMQQ6Q24QQ8",
"elb.me-south-1.amazonaws.com": "Z3QSRYVP46NYYV",
"elb.af-south-1.amazonaws.com": "Z203XCE67M25HM",
// Global Accelerator
"awsglobalaccelerator.com": "Z2BJ6XQ5FK7U4H",
// Cloudfront
"cloudfront.net": "Z2FDTNDATAQYW2",
}
// 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
@ -528,7 +526,7 @@ func (p *AWSProvider) submitChanges(ctx context.Context, changes []*route53.Chan
if _, err := p.client.ChangeResourceRecordSetsWithContext(ctx, params); err != nil {
log.Errorf("Failure in zone %s [Id: %s]", aws.StringValue(zones[z].Name), z)
log.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
} else {
// 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)
}
var geolocation = &route53.GeoLocation{}
geolocation := &route53.GeoLocation{}
useGeolocation := false
if prop, ok := ep.GetProviderSpecificProperty(providerSpecificGeolocationContinentCode); ok {
geolocation.ContinentCode = aws.String(prop.Value)
@ -820,7 +818,8 @@ func changesByZone(zones map[string]*route53.HostedZone, changeSet []*route53.Ch
}
// 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 {
var matchingZones []*route53.HostedZone
var publicZone *route53.HostedZone

View File

@ -62,7 +62,7 @@ type Route53APIStub struct {
// MockMethod starts a description of an expectation of the specified method
// being called.
//
// Route53APIStub.MockMethod("MyMethod", arg1, arg2)
// Route53APIStub.MockMethod("MyMethod", arg1, arg2)
func (r *Route53APIStub) MockMethod(method string, args ...interface{}) *mock.Call {
return r.m.On(method, args...)
}
@ -1241,7 +1241,6 @@ func setupAWSRecords(t *testing.T, provider *AWSProvider, endpoints []*endpoint.
_, err = provider.Records(ctx)
require.NoError(t, err)
}
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)
}
}
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)
}

View File

@ -18,13 +18,11 @@ package awssd
import (
"context"
"strings"
"crypto/sha256"
"encoding/hex"
"fmt"
"regexp"
"strings"
"github.com/aws/aws-sdk-go/aws"
"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),
TTL: aws.Int64(ttl),
}},
}}})
},
},
})
if err != nil {
return err
}

View File

@ -50,7 +50,6 @@ type AWSSDClientStub struct {
}
func (s *AWSSDClientStub) CreateService(input *sd.CreateServiceInput) (*sd.CreateServiceOutput, error) {
srv := &sd.Service{
Id: aws.String(strconv.Itoa(rand.Intn(10000))),
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) {
srvInstances, ok := s.instances[*input.ServiceId]
if !ok {
srvInstances = make(map[string]*sd.Instance)

View File

@ -139,12 +139,15 @@ func privateOthersRecordSetPropertiesGetter(values []string, ttl int64) *private
TTL: to.Int64Ptr(ttl),
}
}
func createPrivateMockRecordSet(name, recordType string, values ...string) privatedns.RecordSet {
return createPrivateMockRecordSetMultiWithTTL(name, recordType, 0, values...)
}
func createPrivateMockRecordSetWithTTL(name, recordType, value string, ttl int64) privatedns.RecordSet {
return createPrivateMockRecordSetMultiWithTTL(name, recordType, ttl, value)
}
func createPrivateMockRecordSetMultiWithTTL(name, recordType string, ttl int64, values ...string) privatedns.RecordSet {
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),
RecordSetProperties: getterFunc(values, ttl),
}
}
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("hack", endpoint.RecordTypeCNAME, "hack.azurewebsites.net", 10),
})
if err != nil {
t.Fatal(err)
}
actual, err := provider.Records(context.Background())
if err != nil {
t.Fatal(err)
}
@ -284,7 +284,6 @@ func TestAzurePrivateDNSRecord(t *testing.T) {
}
validateAzureEndpoints(t, actual, expected)
}
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("hack", endpoint.RecordTypeCNAME, "hack.azurewebsites.net", 10),
})
if err != nil {
t.Fatal(err)
}
actual, err := provider.Records(context.Background())
if err != nil {
t.Fatal(err)
}
@ -320,7 +317,6 @@ func TestAzurePrivateDNSMultiRecord(t *testing.T) {
}
validateAzureEndpoints(t, actual, expected)
}
func TestAzurePrivateDNSApplyChanges(t *testing.T) {

View File

@ -138,12 +138,15 @@ func othersRecordSetPropertiesGetter(values []string, ttl int64) *dns.RecordSetP
TTL: to.Int64Ptr(ttl),
}
}
func createMockRecordSet(name, recordType string, values ...string) dns.RecordSet {
return createMockRecordSetMultiWithTTL(name, recordType, 0, values...)
}
func createMockRecordSetWithTTL(name, recordType, value string, ttl int64) dns.RecordSet {
return createMockRecordSetMultiWithTTL(name, recordType, ttl, value)
}
func createMockRecordSetMultiWithTTL(name, recordType string, ttl int64, values ...string) dns.RecordSet {
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),
RecordSetProperties: getterFunc(values, ttl),
}
}
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("hack", endpoint.RecordTypeCNAME, "hack.azurewebsites.net", 10),
})
if err != nil {
t.Fatal(err)
}
ctx := context.Background()
actual, err := provider.Records(ctx)
if err != nil {
t.Fatal(err)
}
@ -290,7 +290,6 @@ func TestAzureRecord(t *testing.T) {
}
validateAzureEndpoints(t, actual, expected)
}
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("hack", endpoint.RecordTypeCNAME, "hack.azurewebsites.net", 10),
})
if err != nil {
t.Fatal(err)
}
ctx := context.Background()
actual, err := provider.Records(ctx)
if err != nil {
t.Fatal(err)
}
@ -327,7 +324,6 @@ func TestAzureMultiRecord(t *testing.T) {
}
validateAzureEndpoints(t, actual, expected)
}
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("hack", endpoint.RecordTypeCNAME, "hack.azurewebsites.net", 10),
})
if err != nil {
t.Fatal(err)
}
ctx := context.Background()
actual, err := provider.Records(ctx)
if err != nil {
t.Fatal(err)
}
@ -479,7 +473,6 @@ func TestAzureNameFilter(t *testing.T) {
}
validateAzureEndpoints(t, actual, expected)
}
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{
ClientID: cfg.UserAssignedIdentityID,
})
if err != nil {
return nil, fmt.Errorf("failed to create the managed service identity token: %v", err)
}

View File

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

View File

@ -48,14 +48,17 @@ type Changes struct {
func (g mockGatewayClient) GetBluecatZones(zoneName string) ([]api.BluecatZone, error) {
return *g.mockBluecatZones, nil
}
func (g mockGatewayClient) GetHostRecords(zone string, records *[]api.BluecatHostRecord) error {
*records = *g.mockBluecatHosts
return nil
}
func (g mockGatewayClient) GetCNAMERecords(zone string, records *[]api.BluecatCNAMERecord) error {
*records = *g.mockBluecatCNAMEs
return nil
}
func (g mockGatewayClient) GetHostRecord(name string, record *api.BluecatHostRecord) error {
for _, currentRecord := range *g.mockBluecatHosts {
if currentRecord.Name == strings.Split(name, ".")[0] {
@ -65,6 +68,7 @@ func (g mockGatewayClient) GetHostRecord(name string, record *api.BluecatHostRec
}
return nil
}
func (g mockGatewayClient) GetCNAMERecord(name string, record *api.BluecatCNAMERecord) error {
for _, currentRecord := range *g.mockBluecatCNAMEs {
if currentRecord.Name == strings.Split(name, ".")[0] {
@ -74,24 +78,30 @@ func (g mockGatewayClient) GetCNAMERecord(name string, record *api.BluecatCNAMER
}
return nil
}
func (g mockGatewayClient) CreateHostRecord(zone string, req *api.BluecatCreateHostRecordRequest) (err error) {
return nil
}
func (g mockGatewayClient) CreateCNAMERecord(zone string, req *api.BluecatCreateCNAMERecordRequest) (err error) {
return nil
}
func (g mockGatewayClient) DeleteHostRecord(name string, zone string) (err error) {
*g.mockBluecatHosts = nil
return nil
}
func (g mockGatewayClient) DeleteCNAMERecord(name string, zone string) (err error) {
*g.mockBluecatCNAMEs = nil
return nil
}
func (g mockGatewayClient) GetTXTRecords(zone string, records *[]api.BluecatTXTRecord) error {
*records = *g.mockBluecatTXTs
return nil
}
func (g mockGatewayClient) GetTXTRecord(name string, record *api.BluecatTXTRecord) error {
for _, currentRecord := range *g.mockBluecatTXTs {
if currentRecord.Name == name {
@ -101,13 +111,16 @@ func (g mockGatewayClient) GetTXTRecord(name string, record *api.BluecatTXTRecor
}
return nil
}
func (g mockGatewayClient) CreateTXTRecord(zone string, req *api.BluecatCreateTXTRecordRequest) error {
return nil
}
func (g mockGatewayClient) DeleteTXTRecord(name string, zone string) error {
*g.mockBluecatTXTs = nil
return nil
}
func (g mockGatewayClient) ServerFullDeploy() error {
return nil
}
@ -271,6 +284,7 @@ func TestBluecatApplyChangesCreate(t *testing.T) {
validateEndpoints(t, actual, []*endpoint.Endpoint{})
}
}
func TestBluecatApplyChangesDelete(t *testing.T) {
client := mockGatewayClient{
mockBluecatZones: &[]api.BluecatZone{
@ -354,7 +368,6 @@ func TestBluecatApplyChangesDeleteWithOwner(t *testing.T) {
}
validateEndpoints(t, actual, []*endpoint.Endpoint{})
}
}
// 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"
response, err := executeHTTPRequest(cfg.SkipTLSVerify, http.MethodPost, url, "", bytes.NewBuffer(body), http.Cookie{})
if err != nil {
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) {
return z.service.DNSRecords(ctx, zoneID, rr)
}
func (z zoneService) UpdateDNSRecord(ctx context.Context, zoneID, recordID string, rr cloudflare.DNSRecord) error {
return z.service.UpdateDNSRecord(ctx, zoneID, recordID, rr)
}
func (z zoneService) DeleteDNSRecord(ctx context.Context, zoneID, recordID string) error {
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)
}
provider := &CloudFlareProvider{
//Client: config,
// Client: config,
Client: zoneService{config},
domainFilter: domainFilter,
zoneIDFilter: zoneIDFilter,

View File

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

View File

@ -329,7 +329,6 @@ func TestDesignateCreateRecords(t *testing.T) {
}
func testDesignateCreateRecords(t *testing.T, client *fakeDesignateClient) []*recordsets.RecordSet {
for i, zoneName := range []string{"example.com.", "test.net."} {
client.AddZone(zones.Zone{
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) {
return nil, nil
}
func (m *mockDigitalOceanClient) DeleteRecord(ctx context.Context, domain string, id int) (*godo.Response, error) {
return nil, nil
}
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
}
@ -157,9 +159,11 @@ func (m *mockDigitalOceanRecordsFail) CreateRecord(context.Context, string, *god
func (m *mockDigitalOceanRecordsFail) Delete(context.Context, string) (*godo.Response, error) {
return nil, nil
}
func (m *mockDigitalOceanRecordsFail) DeleteRecord(ctx context.Context, domain string, id int) (*godo.Response, error) {
return nil, nil
}
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
}

View File

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

View File

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

View File

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

View File

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

View File

@ -44,10 +44,8 @@ var actionNames = []string{
"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 = errors.New("record to mutate not found in current zone")
)
// 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")
type gdClient interface {
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.
func NewGoDaddyProvider(ctx context.Context, domainFilter endpoint.DomainFilter, ttl int64, apiKey, apiSecret string, useOTE, dryRun bool) (*GDProvider, error) {
client, err := NewClient(useOTE, apiKey, apiSecret)
if err != nil {
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) {
var allRecords []gdRecords
zones, err := p.zones()
if err != nil {
return nil, nil, err
}
@ -186,7 +182,6 @@ func (p *GDProvider) zonesRecords(ctx context.Context, all bool) ([]string, []gd
allRecords = []gdRecords{}
} else if len(zones) == 1 {
record, err := p.records(&ctx, zones[0], all)
if err != nil {
return nil, nil, err
}
@ -201,7 +196,6 @@ func (p *GDProvider) zonesRecords(ctx context.Context, all bool) ([]string, []gd
zone := zoneName
eg.Go(func() error {
record, err := p.records(&ctx, zone, all)
if err != nil {
return err
}
@ -316,7 +310,6 @@ func (p *GDProvider) groupByNameAndType(zoneRecords []gdRecords) []*endpoint.End
// Records returns the list of records in all relevant zones.
func (p *GDProvider) Records(ctx context.Context) ([]*endpoint.Endpoint, error) {
_, records, err := p.zonesRecords(ctx, false)
if err != nil {
return nil, err
}
@ -390,7 +383,6 @@ func (p *GDProvider) ApplyChanges(ctx context.Context, changes *plan.Changes) er
}
_, records, err := p.zonesRecords(ctx, true)
if err != nil {
return err
}
@ -549,7 +541,6 @@ func maxOf(vars ...int64) int64 {
func toString(obj interface{}) string {
b, err := json.MarshalIndent(obj, "", " ")
if err != nil {
return fmt.Sprintf("<%v>", err)
}

View File

@ -745,7 +745,6 @@ func newGoogleProviderZoneOverlap(t *testing.T, domainFilter endpoint.DomainFilt
provider.dryRun = dryRun
return provider
}
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{}
client, err := ibclient.NewConnector(hostCfg, authCfg, transportConfig, requestBuilder, requestor)
if err != nil {
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)
actual, err := providerCfg.Records(context.Background())
if err != nil {
t.Fatal(err)
}
@ -471,7 +470,6 @@ func TestInfobloxAdjustEndpoints(t *testing.T) {
}
func TestInfobloxRecordsReverse(t *testing.T) {
client := mockIBConnector{
mockInfobloxZones: &[]ibclient.ZoneAuth{
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)
actual, err := providerCfg.Records(context.Background())
if err != nil {
t.Fatal(err)
}

View File

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

View File

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

View File

@ -43,14 +43,17 @@ func (m *MockDomainClient) ListDomains(ctx context.Context, opts *linodego.ListO
args := m.Called(ctx, opts)
return args.Get(0).([]linodego.Domain), args.Error(1)
}
func (m *MockDomainClient) CreateDomainRecord(ctx context.Context, domainID int, opts linodego.DomainRecordCreateOptions) (*linodego.DomainRecord, error) {
args := m.Called(ctx, domainID, opts)
return args.Get(0).(*linodego.DomainRecord), args.Error(1)
}
func (m *MockDomainClient) DeleteDomainRecord(ctx context.Context, domainID int, recordID int) error {
args := m.Called(ctx, domainID, recordID)
return args.Error(0)
}
func (m *MockDomainClient) UpdateDomainRecord(ctx context.Context, domainID int, recordID int, opts linodego.DomainRecordUpdateOptions) (*linodego.DomainRecord, error) {
args := m.Called(ctx, domainID, recordID, opts)
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, " ")))
}
// set default ttl, but respect minTTLSeconds
var ttl = ns1DefaultTTL
ttl := ns1DefaultTTL
if p.minTTLSeconds > ttl {
ttl = p.minTTLSeconds
}

View File

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

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) {
endpoints = []*endpoint.Endpoint{}
var targets = []string{}
targets := []string{}
for _, record := range rr.Records {
// 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
type PDNSAPIClientStub struct {
}
type PDNSAPIClientStub struct{}
func (c *PDNSAPIClientStub) ListZones() ([]pgo.Zone, *http.Response, error) {
return []pgo.Zone{ZoneMixed}, nil, nil
}
func (c *PDNSAPIClientStub) PartitionZones(zones []pgo.Zone) ([]pgo.Zone, []pgo.Zone) {
return zones, nil
}
func (c *PDNSAPIClientStub) ListZone(zoneID string) (pgo.Zone, *http.Response, error) {
return ZoneMixed, nil, nil
}
func (c *PDNSAPIClientStub) PatchZone(zoneID string, zoneStruct pgo.Zone) (*http.Response, error) {
return nil, nil
}
@ -566,11 +568,12 @@ type PDNSAPIClientStubEmptyZones struct {
func (c *PDNSAPIClientStubEmptyZones) ListZones() ([]pgo.Zone, *http.Response, error) {
return []pgo.Zone{ZoneEmpty, ZoneEmptyLong, ZoneEmpty2}, nil, nil
}
func (c *PDNSAPIClientStubEmptyZones) PartitionZones(zones []pgo.Zone) ([]pgo.Zone, []pgo.Zone) {
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") {
return ZoneEmpty, nil, nil
} 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 pgo.Zone{}, nil, nil
}
func (c *PDNSAPIClientStubEmptyZones) PatchZone(zoneID string, zoneStruct pgo.Zone) (*http.Response, error) {
c.patchedZones = append(c.patchedZones, zoneStruct)
return nil, nil
@ -608,7 +611,6 @@ type PDNSAPIClientStubListZoneFailure struct {
// Just overwrite the ListZone method to introduce a failure
func (c *PDNSAPIClientStubListZoneFailure) ListZone(zoneID string) (pgo.Zone, *http.Response, 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) {
if strings.Contains(zoneID, "example.com") {
return ZoneEmpty, nil, nil
} 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
func (c *PDNSAPIClientStubPartitionZones) PartitionZones(zones []pgo.Zone) ([]pgo.Zone, []pgo.Zone) {
return []pgo.Zone{ZoneEmpty}, []pgo.Zone{ZoneEmptyLong, ZoneEmpty2}
}
/******************************************************************************/
@ -661,7 +661,6 @@ type NewPDNSProviderTestSuite struct {
}
func (suite *NewPDNSProviderTestSuite) TestPDNSProviderCreate() {
_, err := NewPDNSProvider(
context.Background(),
PDNSConfig{
@ -701,7 +700,6 @@ func (suite *NewPDNSProviderTestSuite) TestPDNSProviderCreate() {
}
func (suite *NewPDNSProviderTestSuite) TestPDNSProviderCreateTLS() {
_, err := NewPDNSProvider(
context.Background(),
PDNSConfig{
@ -829,7 +827,6 @@ func (suite *NewPDNSProviderTestSuite) TestPDNSRRSetToEndpoints() {
eps, err = p.convertRRSetToEndpoints(RRSetDisabledRecord)
assert.Nil(suite.T(), err)
assert.Equal(suite.T(), endpointsDisabledRecord, eps)
}
func (suite *NewPDNSProviderTestSuite) TestPDNSRecords() {
@ -861,7 +858,6 @@ func (suite *NewPDNSProviderTestSuite) TestPDNSRecords() {
}
_, err = p.Records(ctx)
assert.NotNil(suite.T(), err)
}
func (suite *NewPDNSProviderTestSuite) TestPDNSConvertEndpointsToZones() {
@ -996,7 +992,6 @@ func (suite *NewPDNSProviderTestSuite) TestPDNSmutateRecords() {
// Check inserting endpoints from a single zone
err = p.mutateRecords(endpointsSimpleRecord, pdnsChangeType("REPLACE"))
assert.NotNil(suite.T(), err)
}
func (suite *NewPDNSProviderTestSuite) TestPDNSClientPartitionZones() {

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -69,17 +69,15 @@ type rfc2136Provider struct {
actions rfc2136Actions
}
var (
// Map of supported TSIG algorithms
tsigAlgs = map[string]string{
"hmac-md5": dns.HmacMD5,
"hmac-sha1": dns.HmacSHA1,
"hmac-sha224": dns.HmacSHA224,
"hmac-sha256": dns.HmacSHA256,
"hmac-sha384": dns.HmacSHA384,
"hmac-sha512": dns.HmacSHA512,
}
)
// Map of supported TSIG algorithms
var tsigAlgs = map[string]string{
"hmac-md5": dns.HmacMD5,
"hmac-sha1": dns.HmacSHA1,
"hmac-sha224": dns.HmacSHA224,
"hmac-sha256": dns.HmacSHA256,
"hmac-sha384": dns.HmacSHA384,
"hmac-sha512": dns.HmacSHA512,
}
type rfc2136Actions interface {
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 {
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 {
ttl = int64(ep.RecordTTL)
}

View File

@ -208,7 +208,6 @@ func TestRfc2136ApplyChanges(t *testing.T) {
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[1].String(), "v2.foobar.com"))
}
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], "4.3.3.3"))
assert.True(t, strings.Contains(createRecords[2], "300"))
}
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(), "boom"))
}
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 {
// 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() {
ttl = uint32(ep.RecordTTL)
}
var priority = scalewayDefaultPriority
priority := scalewayDefaultPriority
if prop, ok := ep.GetProviderSpecificProperty(scalewayPriorityKey); ok {
prio, err := strconv.ParseUint(prop.Value, 10, 32)
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)
if apiAction.ReadOnly {
//log.Infof(message)
// log.Infof(message)
} else {
log.Infof(message)
}

View File

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

View File

@ -41,11 +41,14 @@ const (
// global variables
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{
{
Key: "UltraClient",
@ -145,7 +148,6 @@ func (p *UltraDNSProvider) Zones(ctx context.Context) ([]udnssdk.Zone, error) {
zoneKey.Zone = zone
zoneKey.AccountName = accountName
zones, err := p.fetchZones(ctx, zoneKey)
if err != nil {
return nil, err
}
@ -489,7 +491,7 @@ func (p *UltraDNSProvider) newSBPoolObjectCreation(ctx context.Context, change *
return sbPoolObject, nil
}
//Creation of RDPoolObject
// Creation of RDPoolObject
func (p *UltraDNSProvider) newRDPoolObjectCreation(ctx context.Context, change *UltraDNSChanges) (rdPool udnssdk.RDPoolProfile, err error) {
rdPoolObject := udnssdk.RDPoolProfile{
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"},
TTL: 86400,
}}, nil
}
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")
}
//zones function test scenario
// zones function test scenario
func TestUltraDNSProvider_Zones(t *testing.T) {
mocked := mockUltraDNSZone{}
provider := &UltraDNSProvider{
@ -136,10 +135,9 @@ func TestUltraDNSProvider_Zones(t *testing.T) {
zones, err := provider.Zones(context.Background())
assert.Nil(t, err)
assert.Equal(t, reflect.DeepEqual(expected, zones), true)
}
//Records function test case
// Records function test case
func TestUltraDNSProvider_Records(t *testing.T) {
mocked := mockUltraDNSRecord{}
mockedDomain := mockUltraDNSZone{}
@ -159,10 +157,9 @@ func TestUltraDNSProvider_Records(t *testing.T) {
assert.Equal(t, v.RecordType, expected[0].RRType)
assert.Equal(t, int(v.RecordTTL), expected[0].TTL)
}
}
//ApplyChanges function testcase
// ApplyChanges function testcase
func TestUltraDNSProvider_ApplyChanges(t *testing.T) {
changes := &plan.Changes{}
mocked := mockUltraDNSRecord{nil}
@ -209,7 +206,7 @@ func TestUltraDNSProvider_getSpecificRecord(t *testing.T) {
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) {
changes := &plan.Changes{}
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"
func TestUltraDNSProvider_ApplyChanges_Integration(t *testing.T) {
_, ok := os.LookupEnv("ULTRADNS_INTEGRATION")
if !ok {
log.Printf("Skipping test")
} else {
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.UpdateNew = []*endpoint.Endpoint{
{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)
assert.Nil(t, err)
@ -296,7 +292,8 @@ func TestUltraDNSProvider_ApplyChanges_Integration(t *testing.T) {
changes = &plan.Changes{}
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: "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)
assert.Nil(t, err)
@ -308,7 +305,6 @@ func TestUltraDNSProvider_ApplyChanges_Integration(t *testing.T) {
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
@ -316,13 +312,13 @@ func TestUltraDNSProvider_ApplyChanges_MultipleTarget_integeration(t *testing.T)
_, ok := os.LookupEnv("ULTRADNS_INTEGRATION")
if !ok {
log.Printf("Skipping test")
} else {
provider, err := NewUltraDNSProvider(endpoint.NewDomainFilter([]string{"kubernetes-ultradns-provider-test.com"}), false)
changes := &plan.Changes{}
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)
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{
RunProbes: true,
@ -428,15 +424,13 @@ func TestUltraDNSProvider_newSBPoolObjectCreation(t *testing.T) {
actualSBPoolObject, _ := provider.newSBPoolObjectCreation(context.Background(), changesList)
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) {
_, ok := os.LookupEnv("ULTRADNS_INTEGRATION")
if !ok {
log.Printf("Skipping test")
} else {
_ = 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) {
_, ok := os.LookupEnv("ULTRADNS_INTEGRATION")
if !ok {
log.Printf("Skipping test")
} else {
_ = os.Setenv("ULTRADNS_POOL_TYPE", "rdpool")
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")
if !ok {
log.Printf("Skipping test")
} else {
provider, err := NewUltraDNSProvider(endpoint.NewDomainFilter([]string{"kubernetes-ultradns-provider-test.com"}), false)
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) {
mocked := mockUltraDNSRecord{nil}
mockedDomain := mockUltraDNSZone{nil}
@ -538,10 +530,9 @@ func TestUltraDNSProvider_newRDPoolObjectCreation(t *testing.T) {
actualRDPoolObject, _ := provider.newRDPoolObjectCreation(context.Background(), changesList)
assert.Equal(t, rdPoolObject, actualRDPoolObject)
}
//Testing Failure scenarios over NewUltraDNS Provider
// Testing Failure scenarios over NewUltraDNS Provider
func TestNewUltraDNSProvider_FailCases(t *testing.T) {
_ = os.Setenv("ULTRADNS_USERNAME", "")
_ = os.Setenv("ULTRADNS_PASSWORD", "")
@ -590,7 +581,6 @@ func TestNewUltraDNSProvider_FailCases(t *testing.T) {
_ = os.Unsetenv("ULTRADNS_POOL_TYPE")
_, accounterr := NewUltraDNSProvider(endpoint.NewDomainFilter([]string{"test-ultradns-provider.com"}), true)
assert.Nil(t, accounterr)
}
// Testing success scenarios for newly introduced environment variables
@ -618,12 +608,10 @@ func TestNewUltraDNSProvider_NewEnvVariableSuccessCases(t *testing.T) {
_ = os.Setenv("ULTRADNS_ENABLE_ACTONPROBE", "true")
_, err2 := NewUltraDNSProvider(endpoint.NewDomainFilter([]string{"test-ultradns-provider.com"}), true)
assert.Nilf(t, err2, "ActOnProbe given value is not working %s", "formatted")
}
// Base64 Bad string decoding scenario
func TestNewUltraDNSProvider_Base64DecodeFailcase(t *testing.T) {
_ = os.Setenv("ULTRADNS_USERNAME", "")
_ = os.Setenv("ULTRADNS_PASSWORD", "12345")
_ = os.Setenv("ULTRADNS_BASEURL", "")
@ -631,17 +619,14 @@ func TestNewUltraDNSProvider_Base64DecodeFailcase(t *testing.T) {
_ = os.Setenv("ULTRADNS_ENABLE_ACTONPROBE", "true")
_, err := NewUltraDNSProvider(endpoint.NewDomainFilter([]string{"test-ultradns-provider.com"}), true)
assert.NotNilf(t, err, "Base64 decode should fail in this case %s", "formatted")
}
func TestUltraDNSProvider_PoolConversionCase(t *testing.T) {
_, ok := os.LookupEnv("ULTRADNS_INTEGRATION")
if !ok {
log.Printf("Skipping test")
} else {
//Creating SBPool Record
// Creating SBPool Record
_ = os.Setenv("ULTRADNS_POOL_TYPE", "sbpool")
provider, _ := NewUltraDNSProvider(endpoint.NewDomainFilter([]string{"kubernetes-ultradns-provider-test.com"}), false)
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{})
assert.Equal(t, resp.Status, "200 OK")
//Converting to RD Pool
// Converting to RD Pool
_ = os.Setenv("ULTRADNS_POOL_TYPE", "rdpool")
provider, _ = NewUltraDNSProvider(endpoint.NewDomainFilter([]string{"kubernetes-ultradns-provider-test.com"}), false)
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{})
assert.Equal(t, resp.Status, "200 OK")
//Converting back to SB Pool
// Converting back to SB Pool
_ = os.Setenv("ULTRADNS_POOL_TYPE", "sbpool")
provider, _ = NewUltraDNSProvider(endpoint.NewDomainFilter([]string{"kubernetes-ultradns-provider-test.com"}), false)
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{})
assert.Equal(t, resp.Status, "200 OK")
//Deleting Record
// Deleting Record
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"}}
err = provider.ApplyChanges(context.Background(), changes)
@ -683,11 +668,9 @@ func TestUltraDNSProvider_PoolConversionCase(t *testing.T) {
}
func TestUltraDNSProvider_DomainFilter(t *testing.T) {
_, ok := os.LookupEnv("ULTRADNS_INTEGRATION")
if !ok {
log.Printf("Skipping test")
} else {
provider, _ := NewUltraDNSProvider(endpoint.NewDomainFilter([]string{"kubernetes-ultradns-provider-test.com", "kubernetes-ultradns-provider-test.com"}), true)
zones, err := provider.Zones(context.Background())
@ -703,11 +686,9 @@ func TestUltraDNSProvider_DomainFilter(t *testing.T) {
}
func TestUltraDNSProvider_DomainFiltersZonesFailCase(t *testing.T) {
_, ok := os.LookupEnv("ULTRADNS_INTEGRATION")
if !ok {
log.Printf("Skipping test")
} else {
provider, _ := NewUltraDNSProvider(endpoint.NewDomainFilter([]string{"kubernetes-ultradns-provider-test.com", "kubernetes-uldsvdsvadvvdsvadvstradns-provider-test.com"}), true)
_, 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) {
mocked := mockUltraDNSZone{}
provider := &UltraDNSProvider{
@ -756,7 +737,7 @@ func TestUltraDNSProvider_DomainFilterZonesMocked(t *testing.T) {
assert.Nil(t, err)
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{
client: udnssdk.Client{
Zone: &mocked,
@ -772,5 +753,4 @@ func TestUltraDNSProvider_DomainFilterZonesMocked(t *testing.T) {
zones, err = provider.Zones(context.Background())
assert.Nil(t, err)
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)
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 {
targets := make([]string, len(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 {
var ttl = vinyldnsRecordTTL
ttl := vinyldnsRecordTTL
if endpoint.RecordTTL.IsConfigured() {
ttl = int(endpoint.RecordTTL)
}

View File

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

View File

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

View File

@ -37,22 +37,22 @@ func TestZoneTypeFilterMatch(t *testing.T) {
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)

View File

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

View File

@ -38,7 +38,7 @@ type Registry interface {
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 {
filtered := []*endpoint.Endpoint{}
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
type TXTRegistry struct {
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
// 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.
labels, err := endpoint.NewLabelsFromString(record.Targets[0])
if err == endpoint.ErrInvalidHeritage {
//if no heritage is found or it is invalid
//case when value of txt record cannot be identified
//record will not be removed as it will have empty owner
// if no heritage is found or it is invalid
// case when value of txt record cannot be identified
// record will not be removed as it will have empty owner
endpoints = append(endpoints, record)
continue
}
@ -343,6 +343,7 @@ func (pr affixNameMapper) dropAffixTemplate(name string) string {
func (pr affixNameMapper) isPrefix() bool {
return len(pr.suffix) == 0
}
func (pr affixNameMapper) isSuffix() bool {
return len(pr.prefix) == 0 && len(pr.suffix) > 0
}
@ -395,6 +396,7 @@ func (pr affixNameMapper) normalizeAffixTemplate(afix, recordType string) string
}
return afix
}
func (pr affixNameMapper) toNewTXTName(endpointDNSName, recordType string) string {
DNSName := strings.SplitN(endpointDNSName, ".", 2)
recordType = strings.ToLower(recordType)

View File

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

View File

@ -66,7 +66,8 @@ func NewAmbassadorHostSource(
ctx context.Context,
dynamicKubeClient dynamic.Interface,
kubeClient kubernetes.Interface,
namespace string) (Source, error) {
namespace string,
) (Source, error) {
var err error
// 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)
}
}
}
func createAmbassadorHost(name, ambassadorService string) (*unstructured.Unstructured, error) {

View File

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

View File

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

View File

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

View File

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

View File

@ -255,11 +255,10 @@ func newKongUnstructuredConverter() (*unstructuredConverter, error) {
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
//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
//If that is dealt with at some point the below can be removed and replaced with an actual import
// 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
// 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
type TCPIngress struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`

View File

@ -490,7 +490,6 @@ func testOcpRouteSourceEndpoints(t *testing.T) {
title: "route without matching labels",
labelFilter: "app=web-external",
ocpRoute: &routev1.Route{
Spec: routev1.RouteSpec{
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 (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{"lb.example.com"}},
},
}, {
},
{
title: "load balancer services annotated with DNS Controller annotations return an endpoint with both annotations in compatibility mode",
svcNamespace: "testing",
svcName: "foo",

View File

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