dnsprovider

package
v0.0.0-...-8a55389 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 10, 2022 License: Apache-2.0 Imports: 7 Imported by: 0

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

func RegisterDnsProvider(name string, cloud Factory)

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

type Factory func(config io.Reader) (Interface, error)

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

func GetDnsProvider(name string, config io.Reader) (Interface, error)

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.

func InitDnsProvider

func InitDnsProvider(name string, configFilePath string) (Interface, error)

InitDnsProvider creates an instance of the named DNS provider.

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 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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL