kubernetesk8s.io/kubernetes/federation/pkg/dnsprovider Index | Files | Directories

package dnsprovider

import "k8s.io/kubernetes/federation/pkg/dnsprovider"

dnsprovider supplies interfaces for dns service providers (e.g. Google Cloud DNS, AWS route53, etc). Implementations exist in the providers sub-package

Index

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

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
	// Apply applies the accumulated operations to the Zone.
	Apply() error
}

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)
	// 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
}

type Zone

type Zone interface {
	// Name returns the name of the zone, e.g. "example.com"
	Name() 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)
}

Source Files

dns.go doc.go plugins.go

Directories

PathSynopsis
federation/pkg/dnsprovider/providers
federation/pkg/dnsprovider/providers/aws
federation/pkg/dnsprovider/providers/aws/route53route53 is the implementation of pkg/dnsprovider interface for AWS Route53
federation/pkg/dnsprovider/providers/aws/route53/stubsinternal implements a stub for the AWS Route53 API, used primarily for unit testing purposes
federation/pkg/dnsprovider/providers/google
federation/pkg/dnsprovider/providers/google/clouddnsclouddns is the implementation of pkg/dnsprovider interface for Google Cloud DNS
federation/pkg/dnsprovider/providers/google/clouddns/internal
federation/pkg/dnsprovider/rrstype
federation/pkg/dnsprovider/tests
Version
v1.4.0-beta.5
Published
Sep 15, 2016
Platform
linux/amd64
Imports
7 packages
Last checked
31 minutes ago

Tools for package owners.