# Functions

InMemoryInitZones pre-seeds the InMemoryProvider with given zones.
InMemoryWithDomain modifies the domain on which dns zones are filtered.
InMemoryWithLogging injects logging when ApplyChanges is called.
NewAWSProvider initializes a new AWS Route53 based Provider.
NewAWSSDProvider initializes a new AWS Route53 Auto Naming based Provider.
NewAzureProvider creates a new Azure provider.
NewCloudFlareProvider initializes a new CloudFlare DNS based Provider.
NewCoreDNSProvider is a CoreDNS provider constructor.
NewDesignateProvider is a factory function for OpenStack designate providers.
NewDigitalOceanProvider initializes a new DigitalOcean DNS based Provider.
NewDnsimpleProvider initializes a new Dnsimple based provider.
NewDomainFilter returns a new DomainFilter given a comma separated list of domains.
NewDynProvider initializes a new Dyn Provider.
NewGoogleProvider initializes a new Google CloudDNS based Provider.
NewInfobloxProvider creates a new Infoblox provider.
NewInMemoryProvider returns InMemoryProvider DNS provider interface implementation.
NewPDNSProvider initializes a new PowerDNS based Provider.
NewZoneIDFilter returns a new ZoneIDFilter given a list of zone ids.
NewZoneTypeFilter returns a new ZoneTypeFilter given a zone type to filter for.

# Constants

DigitalOceanCreate is a ChangeAction enum value.
DigitalOceanDelete is a ChangeAction enum value.
DigitalOceanUpdate is a ChangeAction enum value.
PdnsDelete : PowerDNS changetype used for deleting rrsets ref: https://doc.powerdns.com/authoritative/http-api/zone.html#rrset (see "changetype").
PdnsReplace : PowerDNS changetype for creating, updating and patching rrsets.

# Variables

ErrDuplicateRecordFound when record is repeated in create/update/delete.
ErrRecordAlreadyExists when create request is sent but record already exists.
ErrRecordNotFound when update/delete request is sent but record not found.
ErrZoneAlreadyExists error returned when zone cannot be created when it already exists.
ErrZoneNotFound error returned when specified zone does not exists.

# Structs

AWSConfig contains configuration to create a new AWS provider.
AWSProvider is an implementation of Provider for AWS Route53.
AWSSDProvider is an implementation of Provider for AWS Route53 Auto Naming.
AzureProvider implements the DNS provider for Microsoft's Azure cloud platform.
CloudFlareProvider is an implementation of Provider for CloudFlare DNS.
DigitalOceanChange differentiates between ChangActions.
DigitalOceanProvider is an implementation of Provider for Digital Ocean's DNS.
DomainFilter holds a lists of valid domain names.
DynConfig hold connection parameters to dyn.com and internal state.
GoogleProvider is an implementation of Provider for Google CloudDNS.
InfobloxConfig clarifies the method signature.
InfobloxProvider implements the DNS provider for Infoblox.
InMemoryProvider - dns provider only used for testing purposes initialized as dns provider with no records.
PDNSAPIClient : Struct that encapsulates all the PowerDNS specific implementation details.
PDNSConfig is comprised of the fields necessary to create a new PDNSProvider.
PDNSProvider is an implementation of the Provider interface for PowerDNS.
Service represents SkyDNS/CoreDNS etcd record.
TLSConfig is comprised of the TLS-related fields necessary to create a new PDNSProvider.
ZoneChange is missing from dynect: https://help.dyn.com/get-zone-changeset-api/.
ZoneChangesResponse is missing from dynect: https://help.dyn.com/get-zone-changeset-api/.
ZoneIDFilter holds a list of zone ids to filter by.
ZonePublishRequest is missing from dynect but the notes field is a nice place to let external-dns report some internal info during commit.
ZonePublisResponse holds the status after publish.
ZoneTypeFilter holds a zone type to filter for.

# Interfaces

AWSSDClient is the subset of the AWS Route53 Auto Naming API that we actually use.
PDNSAPIProvider : Interface used and extended by the PDNSAPIClient struct as well as mock APIClients used in testing.
Provider defines the interface DNS providers should implement.
RecordsClient is an interface of dns.RecordClient that can be stubbed for testing.
Route53API is the subset of the AWS Route53 API that we actually use.
ZonesClient is an interface of dns.ZoneClient that can be stubbed for testing.

# Type aliases

InMemoryOption allows to extend in-memory provider.