Documentation ¶
Overview ¶
dnsprovider supplies interfaces for dns service providers (e.g. Google Cloud DNS, AWS route53, etc). Implementations exist in the providers sub-package
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func RegisterDnsProvider ¶
RegisterDnsProvider registers a dnsprovider.Factory by name. This is expected to happen during startup.
func RegisteredDnsProviders ¶
func RegisteredDnsProviders() []string
Returns a list of registered dns providers.
func ResourceRecordSetsEquivalent ¶
func ResourceRecordSetsEquivalent(r1, r2 ResourceRecordSet) bool
ResourceRecordSetsEquivalent compares two ResourceRecordSets for semantic equivalence.
Go's equality operator doesn't work the way we want it to in this case, hence the need for this function. More specifically (from the Go spec): "Two struct values are equal if their corresponding non-blank fields are equal." In our case, there may be some private internal member variables that may not be not equal, but we want the two structs to be considered equivalent anyway, if the fields exposed via their interfaces are equal.
Types ¶
type Factory ¶
Factory is a function that returns a dnsprovider.Interface. The config parameter provides an io.Reader handler to the factory in order to load specific configurations. If no configuration is provided the parameter is nil.
type Interface ¶
type Interface interface { // Zones returns the provider's Zones interface, or false if not supported. Zones() (Zones, bool) }
Interface is an abstract, pluggable interface for DNS providers.
func GetDnsProvider ¶
GetDnsProvider creates an instance of the named DNS provider, or nil if the name is not known. The error return is only used if the named provider was known but failed to initialize. The config parameter specifies the io.Reader handler of the configuration file for the DNS provider, or nil for no configuration.
type ResourceRecordChangeset ¶
type ResourceRecordChangeset interface { // Add adds the creation of a ResourceRecordSet in the Zone to the changeset Add(ResourceRecordSet) ResourceRecordChangeset // Remove adds the removal of a ResourceRecordSet in the Zone to the changeset // The supplied ResourceRecordSet must match one of the existing recordsets (obtained via List()) exactly. Remove(ResourceRecordSet) ResourceRecordChangeset // Upsert adds an "create or update" operation for the ResourceRecordSet in the Zone to the changeset // Note: the implementation may translate this into a Remove followed by an Add operation. // If you have the pre-image, it will likely be more efficient to call Remove and Add. Upsert(ResourceRecordSet) ResourceRecordChangeset // Apply applies the accumulated operations to the Zone. Apply() error // IsEmpty returns true if there are no accumulated operations. IsEmpty() bool // ResourceRecordSets returns the parent ResourceRecordSets ResourceRecordSets() ResourceRecordSets }
ResourceRecordChangeset accumulates a set of changes, that can then be applied with Apply
type ResourceRecordSet ¶
type ResourceRecordSet interface { // Name returns the name of the ResourceRecordSet, e.g. "www.example.com". Name() string // Rrdatas returns the Resource Record Datas of the record set. Rrdatas() []string // Ttl returns the time-to-live of the record set, in seconds. Ttl() int64 // Type returns the type of the record set (A, CNAME, SRV, etc) Type() rrstype.RrsType }
type ResourceRecordSets ¶
type ResourceRecordSets interface { // List returns the ResourceRecordSets of the Zone, or an error if the list operation failed. List() ([]ResourceRecordSet, error) // Get returns the ResourceRecordSet list with the name in the Zone. // This is a list because there might be multiple records of different // types for a given name. If the named resource record sets do not // exist, but no error occurred, the returned record set will be empty // and error will be nil. Get(name string) ([]ResourceRecordSet, error) // New allocates a new ResourceRecordSet, which can then be passed to ResourceRecordChangeset Add() or Remove() // Arguments are as per the ResourceRecordSet interface below. New(name string, rrdatas []string, ttl int64, rrstype rrstype.RrsType) ResourceRecordSet // StartChangeset begins a new batch operation of changes against the Zone StartChangeset() ResourceRecordChangeset // Zone returns the parent zone Zone() Zone }
type Zone ¶
type Zone interface { // Name returns the name of the zone, e.g. "example.com" Name() string // ID returns the unique provider identifier for the zone ID() string // ResourceRecordSets returns the provider's ResourceRecordSets interface, or false if not supported. ResourceRecordSets() (ResourceRecordSets, bool) }
type Zones ¶
type Zones interface { // List returns the (possibly empty) list of managed Zones, or an error if the list operation failed. List() ([]Zone, error) // Add creates and returns a new managed zone, or an error if the operation failed Add(Zone) (Zone, error) // Remove deletes a managed zone, or returns an error if the operation failed. Remove(Zone) error // New allocates a new Zone, which can then be passed to Add() // Arguments are as per the Zone interface below. New(name string) (Zone, error) }
Directories ¶
Path | Synopsis |
---|---|
providers
|
|
aws/route53
route53 is the implementation of pkg/dnsprovider interface for AWS Route53
|
route53 is the implementation of pkg/dnsprovider interface for AWS Route53 |
aws/route53/stubs
internal implements a stub for the AWS Route53 API, used primarily for unit testing purposes
|
internal implements a stub for the AWS Route53 API, used primarily for unit testing purposes |
coredns
Package coredns is the implementation of pkg/dnsprovider interface for CoreDNS
|
Package coredns is the implementation of pkg/dnsprovider interface for CoreDNS |
coredns/stubs
Package stubs implements a stub for the EtcdKeysAPI, used primarily for unit testing purposes
|
Package stubs implements a stub for the EtcdKeysAPI, used primarily for unit testing purposes |
google/clouddns
clouddns is the implementation of pkg/dnsprovider interface for Google Cloud DNS
|
clouddns is the implementation of pkg/dnsprovider interface for Google Cloud DNS |