@@ -24,13 +24,14 @@ import (
24
24
"strconv"
25
25
"strings"
26
26
27
+ "sigs.k8s.io/external-dns/pkg/apis"
28
+
27
29
cloudflare "github.com/cloudflare/cloudflare-go"
28
30
log "github.com/sirupsen/logrus"
29
31
30
32
"sigs.k8s.io/external-dns/endpoint"
31
33
"sigs.k8s.io/external-dns/plan"
32
34
"sigs.k8s.io/external-dns/provider"
33
- "sigs.k8s.io/external-dns/source"
34
35
)
35
36
36
37
const (
@@ -42,6 +43,8 @@ const (
42
43
cloudFlareUpdate = "UPDATE"
43
44
// defaultCloudFlareRecordTTL 1 = automatic
44
45
defaultCloudFlareRecordTTL = 1
46
+ // The annotation used for determining if traffic will go through Cloudflare
47
+ CloudflareProxiedKey = "external-dns.alpha.kubernetes.io/cloudflare-proxied"
45
48
)
46
49
47
50
// We have to use pointers to bools now, as the upstream cloudflare-go library requires them
@@ -162,7 +165,7 @@ func getCreateDNSRecordParam(cfc cloudFlareChange) cloudflare.CreateDNSRecordPar
162
165
}
163
166
164
167
// NewCloudFlareProvider initializes a new CloudFlare DNS based Provider.
165
- func NewCloudFlareProvider (domainFilter endpoint.DomainFilter , zoneIDFilter provider.ZoneIDFilter , proxiedByDefault bool , dryRun bool , dnsRecordsPerPage int ) (* CloudFlareProvider , error ) {
168
+ func NewCloudFlareProvider (domainFilter endpoint.DomainFilter , zoneIDFilter provider.ZoneIDFilter , proxiedByDefault bool , dryRun bool , dnsRecordsPerPage int ) (provider. Provider , error ) {
166
169
// initialize via chosen auth method and returns new API object
167
170
var (
168
171
config * cloudflare.API
@@ -196,6 +199,14 @@ func NewCloudFlareProvider(domainFilter endpoint.DomainFilter, zoneIDFilter prov
196
199
return provider , nil
197
200
}
198
201
202
+ func (p * CloudFlareProvider ) GetProviderSpecific (_ context.Context ) (apis.ProviderSpecificConfig , error ) {
203
+ return apis.ProviderSpecificConfig {
204
+ Translation : map [string ]string {
205
+ CloudflareProxiedKey : CloudflareProxiedKey ,
206
+ },
207
+ }, nil
208
+ }
209
+
199
210
// Zones returns the list of hosted zones.
200
211
func (p * CloudFlareProvider ) Zones (ctx context.Context ) ([]cloudflare.Zone , error ) {
201
212
result := []cloudflare.Zone {}
@@ -398,7 +409,7 @@ func (p *CloudFlareProvider) AdjustEndpoints(endpoints []*endpoint.Endpoint) ([]
398
409
if proxied {
399
410
e .RecordTTL = 0
400
411
}
401
- e .SetProviderSpecificProperty (source . CloudflareProxiedKey , strconv .FormatBool (proxied ))
412
+ e .SetProviderSpecificProperty (CloudflareProxiedKey , strconv .FormatBool (proxied ))
402
413
403
414
adjustedEndpoints = append (adjustedEndpoints , e )
404
415
}
@@ -487,10 +498,10 @@ func shouldBeProxied(endpoint *endpoint.Endpoint, proxiedByDefault bool) bool {
487
498
proxied := proxiedByDefault
488
499
489
500
for _ , v := range endpoint .ProviderSpecific {
490
- if v .Name == source . CloudflareProxiedKey {
501
+ if v .Name == CloudflareProxiedKey {
491
502
b , err := strconv .ParseBool (v .Value )
492
503
if err != nil {
493
- log .Errorf ("Failed to parse annotation [%s]: %v" , source . CloudflareProxiedKey , err )
504
+ log .Errorf ("Failed to parse annotation [%s]: %v" , CloudflareProxiedKey , err )
494
505
} else {
495
506
proxied = b
496
507
}
@@ -535,7 +546,7 @@ func groupByNameAndType(records []cloudflare.DNSRecord) []*endpoint.Endpoint {
535
546
records [0 ].Type ,
536
547
endpoint .TTL (records [0 ].TTL ),
537
548
targets ... ).
538
- WithProviderSpecific (source . CloudflareProxiedKey , strconv .FormatBool (* records [0 ].Proxied )),
549
+ WithProviderSpecific (CloudflareProxiedKey , strconv .FormatBool (* records [0 ].Proxied )),
539
550
)
540
551
}
541
552
0 commit comments