From 5b0ff23d5e2d7b3e485ddbbc01c0ed045f6f0b74 Mon Sep 17 00:00:00 2001 From: Valentin Flaux <38909103+vflaux@users.noreply.github.com> Date: Sun, 6 Jul 2025 15:29:42 +0200 Subject: [PATCH] refactor(provider/cloudflare): use local regionalHostname struct --- provider/cloudflare/cloudflare.go | 2 +- provider/cloudflare/cloudflare_regional.go | 90 +++-- .../cloudflare/cloudflare_regional_test.go | 355 +++++++++--------- provider/cloudflare/cloudflare_test.go | 30 +- 4 files changed, 246 insertions(+), 231 deletions(-) diff --git a/provider/cloudflare/cloudflare.go b/provider/cloudflare/cloudflare.go index 1c5f99aaae..930370089b 100644 --- a/provider/cloudflare/cloudflare.go +++ b/provider/cloudflare/cloudflare.go @@ -220,7 +220,7 @@ type CloudFlareProvider struct { type cloudFlareChange struct { Action changeAction ResourceRecord cloudflare.DNSRecord - RegionalHostname cloudflare.RegionalHostname + RegionalHostname regionalHostname CustomHostnames map[string]cloudflare.CustomHostname CustomHostnamesPrev []string } diff --git a/provider/cloudflare/cloudflare_regional.go b/provider/cloudflare/cloudflare_regional.go index 2e7fdbdb98..9b7b9f988a 100644 --- a/provider/cloudflare/cloudflare_regional.go +++ b/provider/cloudflare/cloudflare_regional.go @@ -40,12 +40,17 @@ var recordTypeRegionalHostnameSupported = map[string]bool{ "CNAME": true, } -// RegionalHostnamesMap is a map of regional hostnames keyed by hostname. -type RegionalHostnamesMap map[string]cloudflare.RegionalHostname +type regionalHostname struct { + hostname string + regionKey string +} + +// regionalHostnamesMap is a map of regional hostnames keyed by hostname. +type regionalHostnamesMap map[string]regionalHostname type regionalHostnameChange struct { action changeAction - cloudflare.RegionalHostname + regionalHostname } func (z zoneService) ListDataLocalizationRegionalHostnames(ctx context.Context, rc *cloudflare.ResourceContainer, rp cloudflare.ListDataLocalizationRegionalHostnamesParams) ([]cloudflare.RegionalHostname, error) { @@ -69,16 +74,16 @@ func (z zoneService) DeleteDataLocalizationRegionalHostname(ctx context.Context, // createDataLocalizationRegionalHostnameParams is a function that returns the appropriate RegionalHostname Param based on the cloudFlareChange passed in func createDataLocalizationRegionalHostnameParams(rhc regionalHostnameChange) cloudflare.CreateDataLocalizationRegionalHostnameParams { return cloudflare.CreateDataLocalizationRegionalHostnameParams{ - Hostname: rhc.Hostname, - RegionKey: rhc.RegionKey, + Hostname: rhc.hostname, + RegionKey: rhc.regionKey, } } // updateDataLocalizationRegionalHostnameParams is a function that returns the appropriate RegionalHostname Param based on the cloudFlareChange passed in func updateDataLocalizationRegionalHostnameParams(rhc regionalHostnameChange) cloudflare.UpdateDataLocalizationRegionalHostnameParams { return cloudflare.UpdateDataLocalizationRegionalHostnameParams{ - Hostname: rhc.Hostname, - RegionKey: rhc.RegionKey, + Hostname: rhc.hostname, + RegionKey: rhc.regionKey, } } @@ -98,8 +103,8 @@ func (p *CloudFlareProvider) submitRegionalHostnameChanges(ctx context.Context, // submitRegionalHostnameChange applies a single regional hostname change, returns false if it fails func (p *CloudFlareProvider) submitRegionalHostnameChange(ctx context.Context, rhChange regionalHostnameChange, resourceContainer *cloudflare.ResourceContainer) bool { changeLog := log.WithFields(log.Fields{ - "hostname": rhChange.Hostname, - "region_key": rhChange.RegionKey, + "hostname": rhChange.hostname, + "region_key": rhChange.regionKey, "action": rhChange.action.String(), "zone": resourceContainer.Identifier, }) @@ -124,7 +129,7 @@ func (p *CloudFlareProvider) submitRegionalHostnameChange(ctx context.Context, r } case cloudFlareDelete: changeLog.Debug("Deleting regional hostname") - if err := p.Client.DeleteDataLocalizationRegionalHostname(ctx, resourceContainer, rhChange.Hostname); err != nil { + if err := p.Client.DeleteDataLocalizationRegionalHostname(ctx, resourceContainer, rhChange.hostname); err != nil { changeLog.Errorf("failed to delete regional hostname: %v", err) return false } @@ -132,34 +137,37 @@ func (p *CloudFlareProvider) submitRegionalHostnameChange(ctx context.Context, r return true } -func (p *CloudFlareProvider) listDataLocalisationRegionalHostnames(ctx context.Context, resourceContainer *cloudflare.ResourceContainer) (RegionalHostnamesMap, error) { +func (p *CloudFlareProvider) listDataLocalisationRegionalHostnames(ctx context.Context, resourceContainer *cloudflare.ResourceContainer) (regionalHostnamesMap, error) { rhs, err := p.Client.ListDataLocalizationRegionalHostnames(ctx, resourceContainer, cloudflare.ListDataLocalizationRegionalHostnamesParams{}) if err != nil { return nil, convertCloudflareError(err) } - rhsMap := make(RegionalHostnamesMap) - for _, r := range rhs { - rhsMap[r.Hostname] = r + rhsMap := make(regionalHostnamesMap) + for _, rh := range rhs { + rhsMap[rh.Hostname] = regionalHostname{ + hostname: rh.Hostname, + regionKey: rh.RegionKey, + } } return rhsMap, nil } -// regionalHostname returns a RegionalHostname for the given endpoint. +// regionalHostname returns a regionalHostname for the given endpoint. // // If the regional services feature is not enabled or the record type does not support regional hostnames, -// it returns an empty RegionalHostname. +// it returns an empty regionalHostname. // If the endpoint has a specific region key set, it uses that; otherwise, it defaults to the region key configured in the provider. -func (p *CloudFlareProvider) regionalHostname(ep *endpoint.Endpoint) cloudflare.RegionalHostname { +func (p *CloudFlareProvider) regionalHostname(ep *endpoint.Endpoint) regionalHostname { if !p.RegionalServicesConfig.Enabled || !recordTypeRegionalHostnameSupported[ep.RecordType] { - return cloudflare.RegionalHostname{} + return regionalHostname{} } regionKey := p.RegionalServicesConfig.RegionKey if epRegionKey, exists := ep.GetProviderSpecificProperty(annotations.CloudflareRegionKey); exists { regionKey = epRegionKey } - return cloudflare.RegionalHostname{ - Hostname: ep.DNSName, - RegionKey: regionKey, + return regionalHostname{ + hostname: ep.DNSName, + regionKey: regionKey, } } @@ -192,7 +200,7 @@ func (p *CloudFlareProvider) addEnpointsProviderSpecificRegionKeyProperty(ctx co for _, ep := range supportedEndpoints { if rh, found := regionalHostnames[ep.DNSName]; found { - ep.SetProviderSpecificProperty(annotations.CloudflareRegionKey, rh.RegionKey) + ep.SetProviderSpecificProperty(annotations.CloudflareRegionKey, rh.regionKey) } } return nil @@ -203,67 +211,67 @@ func (p *CloudFlareProvider) addEnpointsProviderSpecificRegionKeyProperty(ctx co // If there is a delete and a create or update action for the same hostname, // The create or update takes precedence. // Returns an error for conflicting region keys. -func desiredRegionalHostnames(changes []*cloudFlareChange) ([]cloudflare.RegionalHostname, error) { - rhs := make(map[string]cloudflare.RegionalHostname) +func desiredRegionalHostnames(changes []*cloudFlareChange) ([]regionalHostname, error) { + rhs := make(map[string]regionalHostname) for _, change := range changes { - if change.RegionalHostname.Hostname == "" { + if change.RegionalHostname.hostname == "" { continue } - rh, found := rhs[change.RegionalHostname.Hostname] + rh, found := rhs[change.RegionalHostname.hostname] if !found { if change.Action == cloudFlareDelete { - rhs[change.RegionalHostname.Hostname] = cloudflare.RegionalHostname{ - Hostname: change.RegionalHostname.Hostname, - RegionKey: "", // Indicate that this regional hostname should not exists + rhs[change.RegionalHostname.hostname] = regionalHostname{ + hostname: change.RegionalHostname.hostname, + regionKey: "", // Indicate that this regional hostname should not exists } continue } - rhs[change.RegionalHostname.Hostname] = change.RegionalHostname + rhs[change.RegionalHostname.hostname] = change.RegionalHostname continue } if change.Action == cloudFlareDelete { // A previous regional hostname exists so we can skip this delete action continue } - if rh.RegionKey == "" { + if rh.regionKey == "" { // If the existing regional hostname has no region key, we can overwrite it - rhs[change.RegionalHostname.Hostname] = change.RegionalHostname + rhs[change.RegionalHostname.hostname] = change.RegionalHostname continue } - if rh.RegionKey != change.RegionalHostname.RegionKey { - return nil, fmt.Errorf("conflicting region keys for regional hostname %q: %q and %q", change.RegionalHostname.Hostname, rh.RegionKey, change.RegionalHostname.RegionKey) + if rh.regionKey != change.RegionalHostname.regionKey { + return nil, fmt.Errorf("conflicting region keys for regional hostname %q: %q and %q", change.RegionalHostname.hostname, rh.regionKey, change.RegionalHostname.regionKey) } } return slices.Collect(maps.Values(rhs)), nil } // regionalHostnamesChanges build a list of changes needed to synchronize the current regional hostnames state with the desired state. -func regionalHostnamesChanges(desired []cloudflare.RegionalHostname, regionalHostnames RegionalHostnamesMap) []regionalHostnameChange { +func regionalHostnamesChanges(desired []regionalHostname, regionalHostnames regionalHostnamesMap) []regionalHostnameChange { changes := make([]regionalHostnameChange, 0) for _, rh := range desired { - current, found := regionalHostnames[rh.Hostname] - if rh.RegionKey == "" { + current, found := regionalHostnames[rh.hostname] + if rh.regionKey == "" { // If the region key is empty, we don't want a regional hostname if !found { continue } changes = append(changes, regionalHostnameChange{ action: cloudFlareDelete, - RegionalHostname: rh, + regionalHostname: rh, }) continue } if !found { changes = append(changes, regionalHostnameChange{ action: cloudFlareCreate, - RegionalHostname: rh, + regionalHostname: rh, }) continue } - if rh.RegionKey != current.RegionKey { + if rh.regionKey != current.regionKey { changes = append(changes, regionalHostnameChange{ action: cloudFlareUpdate, - RegionalHostname: rh, + regionalHostname: rh, }) } } diff --git a/provider/cloudflare/cloudflare_regional_test.go b/provider/cloudflare/cloudflare_regional_test.go index fbbca0d907..1aafbebac4 100644 --- a/provider/cloudflare/cloudflare_regional_test.go +++ b/provider/cloudflare/cloudflare_regional_test.go @@ -37,7 +37,14 @@ func (m *mockCloudFlareClient) ListDataLocalizationRegionalHostnames(ctx context if strings.Contains(rc.Identifier, "rherror") { return nil, fmt.Errorf("failed to list regional hostnames") } - return m.regionalHostnames[rc.Identifier], nil + rhs := make([]cloudflare.RegionalHostname, 0, len(m.regionalHostnames[rc.Identifier])) + for _, rh := range m.regionalHostnames[rc.Identifier] { + rhs = append(rhs, cloudflare.RegionalHostname{ + Hostname: rh.hostname, + RegionKey: rh.regionKey, + }) + } + return rhs, nil } func (m *mockCloudFlareClient) CreateDataLocalizationRegionalHostname(ctx context.Context, rc *cloudflare.ResourceContainer, rp cloudflare.CreateDataLocalizationRegionalHostnameParams) error { @@ -49,9 +56,9 @@ func (m *mockCloudFlareClient) CreateDataLocalizationRegionalHostname(ctx contex Name: "CreateDataLocalizationRegionalHostname", ZoneId: rc.Identifier, RecordId: "", - RegionalHostname: cloudflare.RegionalHostname{ - Hostname: rp.Hostname, - RegionKey: rp.RegionKey, + RegionalHostname: regionalHostname{ + hostname: rp.Hostname, + regionKey: rp.RegionKey, }, }) return nil @@ -66,9 +73,9 @@ func (m *mockCloudFlareClient) UpdateDataLocalizationRegionalHostname(ctx contex Name: "UpdateDataLocalizationRegionalHostname", ZoneId: rc.Identifier, RecordId: "", - RegionalHostname: cloudflare.RegionalHostname{ - Hostname: rp.Hostname, - RegionKey: rp.RegionKey, + RegionalHostname: regionalHostname{ + hostname: rp.Hostname, + regionKey: rp.RegionKey, }, }) return nil @@ -82,8 +89,8 @@ func (m *mockCloudFlareClient) DeleteDataLocalizationRegionalHostname(ctx contex Name: "DeleteDataLocalizationRegionalHostname", ZoneId: rc.Identifier, RecordId: "", - RegionalHostname: cloudflare.RegionalHostname{ - Hostname: hostname, + RegionalHostname: regionalHostname{ + hostname: hostname, }, }) return nil @@ -93,14 +100,14 @@ func TestCloudflareRegionalHostnameActions(t *testing.T) { tests := []struct { name string records map[string]cloudflare.DNSRecord - regionalHostnames []cloudflare.RegionalHostname + regionalHostnames []regionalHostname endpoints []*endpoint.Endpoint want []MockAction }{ { name: "create", records: map[string]cloudflare.DNSRecord{}, - regionalHostnames: []cloudflare.RegionalHostname{}, + regionalHostnames: []regionalHostname{}, endpoints: []*endpoint.Endpoint{ { RecordType: "A", @@ -131,9 +138,9 @@ func TestCloudflareRegionalHostnameActions(t *testing.T) { { Name: "CreateDataLocalizationRegionalHostname", ZoneId: "001", - RegionalHostname: cloudflare.RegionalHostname{ - Hostname: "create.bar.com", - RegionKey: "eu", + RegionalHostname: regionalHostname{ + hostname: "create.bar.com", + regionKey: "eu", }, }, }, @@ -150,10 +157,10 @@ func TestCloudflareRegionalHostnameActions(t *testing.T) { Proxied: proxyDisabled, }, }, - regionalHostnames: []cloudflare.RegionalHostname{ + regionalHostnames: []regionalHostname{ { - Hostname: "update.bar.com", - RegionKey: "us", + hostname: "update.bar.com", + regionKey: "us", }, }, endpoints: []*endpoint.Endpoint{ @@ -186,9 +193,9 @@ func TestCloudflareRegionalHostnameActions(t *testing.T) { { Name: "UpdateDataLocalizationRegionalHostname", ZoneId: "001", - RegionalHostname: cloudflare.RegionalHostname{ - Hostname: "update.bar.com", - RegionKey: "eu", + RegionalHostname: regionalHostname{ + hostname: "update.bar.com", + regionKey: "eu", }, }, }, @@ -205,10 +212,10 @@ func TestCloudflareRegionalHostnameActions(t *testing.T) { Proxied: proxyDisabled, }, }, - regionalHostnames: []cloudflare.RegionalHostname{ + regionalHostnames: []regionalHostname{ { - Hostname: "delete.bar.com", - RegionKey: "us", + hostname: "delete.bar.com", + regionKey: "us", }, }, endpoints: []*endpoint.Endpoint{}, @@ -222,8 +229,8 @@ func TestCloudflareRegionalHostnameActions(t *testing.T) { { Name: "DeleteDataLocalizationRegionalHostname", ZoneId: "001", - RegionalHostname: cloudflare.RegionalHostname{ - Hostname: "delete.bar.com", + RegionalHostname: regionalHostname{ + hostname: "delete.bar.com", }, }, }, @@ -240,10 +247,10 @@ func TestCloudflareRegionalHostnameActions(t *testing.T) { Proxied: proxyDisabled, }, }, - regionalHostnames: []cloudflare.RegionalHostname{ + regionalHostnames: []regionalHostname{ { - Hostname: "nochange.bar.com", - RegionKey: "eu", + hostname: "nochange.bar.com", + regionKey: "eu", }, }, endpoints: []*endpoint.Endpoint{ @@ -273,7 +280,7 @@ func TestCloudflareRegionalHostnameActions(t *testing.T) { Records: map[string]map[string]cloudflare.DNSRecord{ "001": tt.records, }, - regionalHostnames: map[string][]cloudflare.RegionalHostname{ + regionalHostnames: map[string][]regionalHostname{ "001": tt.regionalHostnames, }, }, @@ -323,9 +330,9 @@ func TestCloudflareRegionalHostnameDefaults(t *testing.T) { { Name: "CreateDataLocalizationRegionalHostname", ZoneId: "001", - RegionalHostname: cloudflare.RegionalHostname{ - Hostname: "bar.com", - RegionKey: "us", + RegionalHostname: regionalHostname{ + hostname: "bar.com", + regionKey: "us", }, }, }, @@ -341,7 +348,7 @@ func Test_regionalHostname(t *testing.T) { tests := []struct { name string args args - want cloudflare.RegionalHostname + want regionalHostname }{ { name: "no region key", @@ -355,9 +362,9 @@ func Test_regionalHostname(t *testing.T) { RegionKey: "", }, }, - want: cloudflare.RegionalHostname{ - Hostname: "example.com", - RegionKey: "", + want: regionalHostname{ + hostname: "example.com", + regionKey: "", }, }, { @@ -372,9 +379,9 @@ func Test_regionalHostname(t *testing.T) { RegionKey: "us", }, }, - want: cloudflare.RegionalHostname{ - Hostname: "example.com", - RegionKey: "us", + want: regionalHostname{ + hostname: "example.com", + regionKey: "us", }, }, { @@ -395,9 +402,9 @@ func Test_regionalHostname(t *testing.T) { RegionKey: "us", }, }, - want: cloudflare.RegionalHostname{ - Hostname: "example.com", - RegionKey: "eu", + want: regionalHostname{ + hostname: "example.com", + regionKey: "eu", }, }, { @@ -418,9 +425,9 @@ func Test_regionalHostname(t *testing.T) { RegionKey: "us", }, }, - want: cloudflare.RegionalHostname{ - Hostname: "example.com", - RegionKey: "", + want: regionalHostname{ + hostname: "example.com", + regionKey: "", }, }, { @@ -441,7 +448,7 @@ func Test_regionalHostname(t *testing.T) { RegionKey: "us", }, }, - want: cloudflare.RegionalHostname{}, + want: regionalHostname{}, }, { name: "disabled", @@ -460,9 +467,9 @@ func Test_regionalHostname(t *testing.T) { Enabled: false, }, }, - want: cloudflare.RegionalHostname{ - Hostname: "", - RegionKey: "", + want: regionalHostname{ + hostname: "", + regionKey: "", }, }, } @@ -479,7 +486,7 @@ func Test_desiredDataLocalizationRegionalHostnames(t *testing.T) { tests := []struct { name string changes []*cloudFlareChange - want []cloudflare.RegionalHostname + want []regionalHostname wantErr bool }{ { @@ -501,23 +508,23 @@ func Test_desiredDataLocalizationRegionalHostnames(t *testing.T) { changes: []*cloudFlareChange{ { Action: cloudFlareCreate, - RegionalHostname: cloudflare.RegionalHostname{ - Hostname: "example.com", - RegionKey: "eu", + RegionalHostname: regionalHostname{ + hostname: "example.com", + regionKey: "eu", }, }, { Action: cloudFlareUpdate, - RegionalHostname: cloudflare.RegionalHostname{ - Hostname: "example.com", - RegionKey: "eu", + RegionalHostname: regionalHostname{ + hostname: "example.com", + regionKey: "eu", }, }, }, - want: []cloudflare.RegionalHostname{ + want: []regionalHostname{ { - Hostname: "example.com", - RegionKey: "eu", + hostname: "example.com", + regionKey: "eu", }, }, wantErr: false, @@ -527,16 +534,16 @@ func Test_desiredDataLocalizationRegionalHostnames(t *testing.T) { changes: []*cloudFlareChange{ { Action: cloudFlareCreate, - RegionalHostname: cloudflare.RegionalHostname{ - Hostname: "example.com", - RegionKey: "eu", + RegionalHostname: regionalHostname{ + hostname: "example.com", + regionKey: "eu", }, }, { Action: cloudFlareUpdate, - RegionalHostname: cloudflare.RegionalHostname{ - Hostname: "example.com", - RegionKey: "us", // Different region key + RegionalHostname: regionalHostname{ + hostname: "example.com", + regionKey: "us", // Different region key }, }, }, @@ -548,38 +555,38 @@ func Test_desiredDataLocalizationRegionalHostnames(t *testing.T) { changes: []*cloudFlareChange{ { Action: cloudFlareCreate, - RegionalHostname: cloudflare.RegionalHostname{ - Hostname: "example1.com", - RegionKey: "eu", + RegionalHostname: regionalHostname{ + hostname: "example1.com", + regionKey: "eu", }, }, { Action: cloudFlareUpdate, - RegionalHostname: cloudflare.RegionalHostname{ - Hostname: "example2.com", - RegionKey: "us", + RegionalHostname: regionalHostname{ + hostname: "example2.com", + regionKey: "us", }, }, { Action: cloudFlareDelete, - RegionalHostname: cloudflare.RegionalHostname{ - Hostname: "example3.com", - RegionKey: "us", + RegionalHostname: regionalHostname{ + hostname: "example3.com", + regionKey: "us", }, }, }, - want: []cloudflare.RegionalHostname{ + want: []regionalHostname{ { - Hostname: "example1.com", - RegionKey: "eu", + hostname: "example1.com", + regionKey: "eu", }, { - Hostname: "example2.com", - RegionKey: "us", + hostname: "example2.com", + regionKey: "us", }, { - Hostname: "example3.com", - RegionKey: "", + hostname: "example3.com", + regionKey: "", }, }, wantErr: false, @@ -589,16 +596,16 @@ func Test_desiredDataLocalizationRegionalHostnames(t *testing.T) { changes: []*cloudFlareChange{ { Action: cloudFlareCreate, - RegionalHostname: cloudflare.RegionalHostname{ - Hostname: "example.com", - RegionKey: "", // Empty region key + RegionalHostname: regionalHostname{ + hostname: "example.com", + regionKey: "", // Empty region key }, }, }, - want: []cloudflare.RegionalHostname{ + want: []regionalHostname{ { - Hostname: "example.com", - RegionKey: "", + hostname: "example.com", + regionKey: "", }, }, wantErr: false, @@ -608,23 +615,23 @@ func Test_desiredDataLocalizationRegionalHostnames(t *testing.T) { changes: []*cloudFlareChange{ { Action: cloudFlareCreate, - RegionalHostname: cloudflare.RegionalHostname{ - Hostname: "example.com", - RegionKey: "", // Empty region key + RegionalHostname: regionalHostname{ + hostname: "example.com", + regionKey: "", // Empty region key }, }, { Action: cloudFlareUpdate, - RegionalHostname: cloudflare.RegionalHostname{ - Hostname: "example.com", - RegionKey: "eu", + RegionalHostname: regionalHostname{ + hostname: "example.com", + regionKey: "eu", }, }, }, - want: []cloudflare.RegionalHostname{ + want: []regionalHostname{ { - Hostname: "example.com", - RegionKey: "eu", + hostname: "example.com", + regionKey: "eu", }, }, wantErr: false, @@ -634,23 +641,23 @@ func Test_desiredDataLocalizationRegionalHostnames(t *testing.T) { changes: []*cloudFlareChange{ { Action: cloudFlareCreate, - RegionalHostname: cloudflare.RegionalHostname{ - Hostname: "example.com", - RegionKey: "eu", + RegionalHostname: regionalHostname{ + hostname: "example.com", + regionKey: "eu", }, }, { Action: cloudFlareUpdate, - RegionalHostname: cloudflare.RegionalHostname{ - Hostname: "example.com", - RegionKey: "eu", // Empty region key + RegionalHostname: regionalHostname{ + hostname: "example.com", + regionKey: "eu", // Empty region key }, }, }, - want: []cloudflare.RegionalHostname{ + want: []regionalHostname{ { - Hostname: "example.com", - RegionKey: "eu", + hostname: "example.com", + regionKey: "eu", }, }, wantErr: false, @@ -660,23 +667,23 @@ func Test_desiredDataLocalizationRegionalHostnames(t *testing.T) { changes: []*cloudFlareChange{ { Action: cloudFlareDelete, - RegionalHostname: cloudflare.RegionalHostname{ - Hostname: "example.com", - RegionKey: "eu", + RegionalHostname: regionalHostname{ + hostname: "example.com", + regionKey: "eu", }, }, { Action: cloudFlareCreate, - RegionalHostname: cloudflare.RegionalHostname{ - Hostname: "example.com", - RegionKey: "eu", + RegionalHostname: regionalHostname{ + hostname: "example.com", + regionKey: "eu", }, }, }, - want: []cloudflare.RegionalHostname{ + want: []regionalHostname{ { - Hostname: "example.com", - RegionKey: "eu", + hostname: "example.com", + regionKey: "eu", }, }, wantErr: false, @@ -686,23 +693,23 @@ func Test_desiredDataLocalizationRegionalHostnames(t *testing.T) { changes: []*cloudFlareChange{ { Action: cloudFlareCreate, - RegionalHostname: cloudflare.RegionalHostname{ - Hostname: "example.com", - RegionKey: "eu", + RegionalHostname: regionalHostname{ + hostname: "example.com", + regionKey: "eu", }, }, { Action: cloudFlareDelete, - RegionalHostname: cloudflare.RegionalHostname{ - Hostname: "example.com", - RegionKey: "eu", + RegionalHostname: regionalHostname{ + hostname: "example.com", + regionKey: "eu", }, }, }, - want: []cloudflare.RegionalHostname{ + want: []regionalHostname{ { - Hostname: "example.com", - RegionKey: "eu", + hostname: "example.com", + regionKey: "eu", }, }, wantErr: false, @@ -718,10 +725,10 @@ func Test_desiredDataLocalizationRegionalHostnames(t *testing.T) { assert.NoError(t, err) } sort.Slice(got, func(i, j int) bool { - return got[i].Hostname < got[j].Hostname + return got[i].hostname < got[j].hostname }) sort.Slice(tt.want, func(i, j int) bool { - return tt.want[i].Hostname < tt.want[j].Hostname + return tt.want[i].hostname < tt.want[j].hostname }) assert.Equal(t, tt.want, got) }) @@ -731,74 +738,74 @@ func Test_desiredDataLocalizationRegionalHostnames(t *testing.T) { func Test_dataLocalizationRegionalHostnamesChanges(t *testing.T) { tests := []struct { name string - desired []cloudflare.RegionalHostname - regionalHostnames RegionalHostnamesMap + desired []regionalHostname + regionalHostnames regionalHostnamesMap want []regionalHostnameChange }{ { name: "empty desired and current lists", - desired: []cloudflare.RegionalHostname{}, - regionalHostnames: RegionalHostnamesMap{}, + desired: []regionalHostname{}, + regionalHostnames: regionalHostnamesMap{}, want: []regionalHostnameChange{}, }, { name: "multiple changes", - desired: []cloudflare.RegionalHostname{ + desired: []regionalHostname{ { - Hostname: "create.example.com", - RegionKey: "eu", + hostname: "create.example.com", + regionKey: "eu", }, { - Hostname: "update.example.com", - RegionKey: "eu", + hostname: "update.example.com", + regionKey: "eu", }, { - Hostname: "delete.example.com", - RegionKey: "", + hostname: "delete.example.com", + regionKey: "", }, { - Hostname: "nochange.example.com", - RegionKey: "us", + hostname: "nochange.example.com", + regionKey: "us", }, { - Hostname: "absent.example.com", - RegionKey: "", + hostname: "absent.example.com", + regionKey: "", }, }, - regionalHostnames: RegionalHostnamesMap{ - "update.example.com": cloudflare.RegionalHostname{ - Hostname: "update.example.com", - RegionKey: "us", + regionalHostnames: regionalHostnamesMap{ + "update.example.com": regionalHostname{ + hostname: "update.example.com", + regionKey: "us", }, - "delete.example.com": cloudflare.RegionalHostname{ - Hostname: "delete.example.com", - RegionKey: "ap", + "delete.example.com": regionalHostname{ + hostname: "delete.example.com", + regionKey: "ap", }, - "nochange.example.com": cloudflare.RegionalHostname{ - Hostname: "nochange.example.com", - RegionKey: "us", + "nochange.example.com": regionalHostname{ + hostname: "nochange.example.com", + regionKey: "us", }, }, want: []regionalHostnameChange{ { action: cloudFlareCreate, - RegionalHostname: cloudflare.RegionalHostname{ - Hostname: "create.example.com", - RegionKey: "eu", + regionalHostname: regionalHostname{ + hostname: "create.example.com", + regionKey: "eu", }, }, { action: cloudFlareUpdate, - RegionalHostname: cloudflare.RegionalHostname{ - Hostname: "update.example.com", - RegionKey: "eu", + regionalHostname: regionalHostname{ + hostname: "update.example.com", + regionKey: "eu", }, }, { action: cloudFlareDelete, - RegionalHostname: cloudflare.RegionalHostname{ - Hostname: "delete.example.com", - RegionKey: "", + regionalHostname: regionalHostname{ + hostname: "delete.example.com", + regionKey: "", }, }, }, @@ -834,7 +841,7 @@ func TestApplyChangesWithRegionalHostnamesFaillures(t *testing.T) { t.Parallel() type fields struct { Records map[string]cloudflare.DNSRecord - RegionalHostnames []cloudflare.RegionalHostname + RegionalHostnames []regionalHostname RegionKey string } type args struct { @@ -869,7 +876,7 @@ func TestApplyChangesWithRegionalHostnamesFaillures(t *testing.T) { name: "create fails", fields: fields{ Records: map[string]cloudflare.DNSRecord{}, - RegionalHostnames: []cloudflare.RegionalHostname{}, + RegionalHostnames: []regionalHostname{}, RegionKey: "us", }, args: args{ @@ -899,8 +906,8 @@ func TestApplyChangesWithRegionalHostnamesFaillures(t *testing.T) { Content: "127.0.0.1", }, }, - RegionalHostnames: []cloudflare.RegionalHostname{ - {Hostname: "rherror.bar.com", RegionKey: "us"}, + RegionalHostnames: []regionalHostname{ + {hostname: "rherror.bar.com", regionKey: "us"}, }, RegionKey: "us", }, @@ -941,8 +948,8 @@ func TestApplyChangesWithRegionalHostnamesFaillures(t *testing.T) { Content: "127.0.0.1", }, }, - RegionalHostnames: []cloudflare.RegionalHostname{ - {Hostname: "rherror.bar.com", RegionKey: "us"}, + RegionalHostnames: []regionalHostname{ + {hostname: "rherror.bar.com", regionKey: "us"}, }, RegionKey: "us", }, @@ -964,7 +971,7 @@ func TestApplyChangesWithRegionalHostnamesFaillures(t *testing.T) { name: "conflicting regional keys", fields: fields{ Records: map[string]cloudflare.DNSRecord{}, - RegionalHostnames: []cloudflare.RegionalHostname{}, + RegionalHostnames: []regionalHostname{}, RegionKey: "us", }, args: args{ @@ -1008,7 +1015,7 @@ func TestApplyChangesWithRegionalHostnamesFaillures(t *testing.T) { Records: map[string]map[string]cloudflare.DNSRecord{ "001": records, }, - regionalHostnames: map[string][]cloudflare.RegionalHostname{ + regionalHostnames: map[string][]regionalHostname{ "001": tt.fields.RegionalHostnames, }, }, @@ -1034,7 +1041,7 @@ func TestApplyChangesWithRegionalHostnamesDryRun(t *testing.T) { t.Parallel() type fields struct { Records map[string]cloudflare.DNSRecord - RegionalHostnames []cloudflare.RegionalHostname + RegionalHostnames []regionalHostname RegionKey string } type args struct { @@ -1050,7 +1057,7 @@ func TestApplyChangesWithRegionalHostnamesDryRun(t *testing.T) { name: "create dry run", fields: fields{ Records: map[string]cloudflare.DNSRecord{}, - RegionalHostnames: []cloudflare.RegionalHostname{}, + RegionalHostnames: []regionalHostname{}, RegionKey: "us", }, args: args{ @@ -1080,8 +1087,8 @@ func TestApplyChangesWithRegionalHostnamesDryRun(t *testing.T) { Content: "127.0.0.1", }, }, - RegionalHostnames: []cloudflare.RegionalHostname{ - {Hostname: "foo.bar.com", RegionKey: "us"}, + RegionalHostnames: []regionalHostname{ + {hostname: "foo.bar.com", regionKey: "us"}, }, RegionKey: "us", }, @@ -1122,8 +1129,8 @@ func TestApplyChangesWithRegionalHostnamesDryRun(t *testing.T) { Content: "127.0.0.1", }, }, - RegionalHostnames: []cloudflare.RegionalHostname{ - {Hostname: "foo.bar.com", RegionKey: "us"}, + RegionalHostnames: []regionalHostname{ + {hostname: "foo.bar.com", regionKey: "us"}, }, RegionKey: "us", }, @@ -1157,7 +1164,7 @@ func TestApplyChangesWithRegionalHostnamesDryRun(t *testing.T) { Records: map[string]map[string]cloudflare.DNSRecord{ "001": records, }, - regionalHostnames: map[string][]cloudflare.RegionalHostname{ + regionalHostnames: map[string][]regionalHostname{ "001": tt.fields.RegionalHostnames, }, }, diff --git a/provider/cloudflare/cloudflare_test.go b/provider/cloudflare/cloudflare_test.go index b304d2116a..79b6700001 100644 --- a/provider/cloudflare/cloudflare_test.go +++ b/provider/cloudflare/cloudflare_test.go @@ -48,7 +48,7 @@ type MockAction struct { ZoneId string RecordId string RecordData cloudflare.DNSRecord - RegionalHostname cloudflare.RegionalHostname + RegionalHostname regionalHostname } type mockCloudFlareClient struct { @@ -60,7 +60,7 @@ type mockCloudFlareClient struct { listZonesContextError error dnsRecordsError error customHostnames map[string][]cloudflare.CustomHostname - regionalHostnames map[string][]cloudflare.RegionalHostname + regionalHostnames map[string][]regionalHostname } var ExampleDomain = []cloudflare.DNSRecord{ @@ -102,7 +102,7 @@ func NewMockCloudFlareClient() *mockCloudFlareClient { "002": {}, }, customHostnames: map[string][]cloudflare.CustomHostname{}, - regionalHostnames: map[string][]cloudflare.RegionalHostname{}, + regionalHostnames: map[string][]regionalHostname{}, } } @@ -1795,8 +1795,8 @@ func TestCloudFlareProvider_newCloudFlareChange(t *testing.T) { } change, _ := p.newCloudFlareChange(cloudFlareCreate, ep, ep.Targets[0], nil) - if change.RegionalHostname.RegionKey != "us" { - t.Errorf("expected region key to be 'us', but got '%s'", change.RegionalHostname.RegionKey) + if change.RegionalHostname.regionKey != "us" { + t.Errorf("expected region key to be 'us', but got '%s'", change.RegionalHostname.regionKey) } var freeValidCommentBuilder strings.Builder @@ -1949,8 +1949,8 @@ func TestCloudFlareProvider_submitChangesCNAME(t *testing.T) { ID: "1234567890", Content: "my-tunnel-guid-here.cfargotunnel.com", }, - RegionalHostname: cloudflare.RegionalHostname{ - Hostname: "my-domain-here.app", + RegionalHostname: regionalHostname{ + hostname: "my-domain-here.app", }, }, { @@ -1961,9 +1961,9 @@ func TestCloudFlareProvider_submitChangesCNAME(t *testing.T) { ID: "9876543210", Content: "heritage=external-dns,external-dns/owner=default,external-dns/resource=service/external-dns/my-domain-here-app", }, - RegionalHostname: cloudflare.RegionalHostname{ - Hostname: "my-domain-here.app", - RegionKey: "", + RegionalHostname: regionalHostname{ + hostname: "my-domain-here.app", + regionKey: "", }, }, } @@ -2012,8 +2012,8 @@ func TestCloudFlareProvider_submitChangesApex(t *testing.T) { ID: "1234567890", Content: "my-tunnel-guid-here.cfargotunnel.com", }, - RegionalHostname: cloudflare.RegionalHostname{ - Hostname: "@", // APEX record + RegionalHostname: regionalHostname{ + hostname: "@", // APEX record }, }, { @@ -2024,9 +2024,9 @@ func TestCloudFlareProvider_submitChangesApex(t *testing.T) { ID: "9876543210", Content: "heritage=external-dns,external-dns/owner=default,external-dns/resource=service/external-dns/my-domain-here-app", }, - RegionalHostname: cloudflare.RegionalHostname{ - Hostname: "@", // APEX record - RegionKey: "", + RegionalHostname: regionalHostname{ + hostname: "@", // APEX record + regionKey: "", }, }, }