provider

package
v0.4.0-alpha.0 Latest Latest
Warning

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

Go to latest
Published: Jun 2, 2017 License: Apache-2.0 Imports: 21 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrZoneAlreadyExists error returned when zone cannot be created when it already exists
	ErrZoneAlreadyExists = errors.New("specified zone already exists")
	// ErrZoneNotFound error returned when specified zone does not exists
	ErrZoneNotFound = errors.New("specified zone not found")
	// ErrRecordAlreadyExists when create request is sent but record already exists
	ErrRecordAlreadyExists = errors.New("record already exists")
	// ErrRecordNotFound when update/delete request is sent but record not found
	ErrRecordNotFound = errors.New("record not found")
	// ErrInvalidBatchRequest when record is repeated in create/update/delete
	ErrInvalidBatchRequest = errors.New("invalid batch request")
)

Functions

This section is empty.

Types

type AWSProvider

type AWSProvider struct {
	// contains filtered or unexported fields
}

AWSProvider is an implementation of Provider for AWS Route53.

func (*AWSProvider) ApplyChanges

func (p *AWSProvider) ApplyChanges(changes *plan.Changes) error

ApplyChanges applies a given set of changes in a given zone.

func (*AWSProvider) CreateRecords

func (p *AWSProvider) CreateRecords(endpoints []*endpoint.Endpoint) error

CreateRecords creates a given set of DNS records in the given hosted zone.

func (*AWSProvider) DeleteRecords

func (p *AWSProvider) DeleteRecords(endpoints []*endpoint.Endpoint) error

DeleteRecords deletes a given set of DNS records in a given zone.

func (*AWSProvider) Records

func (p *AWSProvider) Records() (endpoints []*endpoint.Endpoint, _ error)

Records returns the list of records in a given hosted zone.

func (*AWSProvider) UpdateRecords

func (p *AWSProvider) UpdateRecords(endpoints, _ []*endpoint.Endpoint) error

UpdateRecords updates a given set of old records to a new set of records in a given hosted zone.

func (*AWSProvider) Zones

func (p *AWSProvider) Zones() (map[string]*route53.HostedZone, error)

Zones returns the list of hosted zones.

type AzureProvider added in v0.4.0

type AzureProvider struct {
	// contains filtered or unexported fields
}

AzureProvider implements the DNS provider for Microsoft's Azure cloud platform.

func (*AzureProvider) ApplyChanges added in v0.4.0

func (p *AzureProvider) ApplyChanges(changes *plan.Changes) error

ApplyChanges applies the given changes.

Returns nil if the operation was successful or an error if the operation failed.

func (*AzureProvider) Records added in v0.4.0

func (p *AzureProvider) Records() (endpoints []*endpoint.Endpoint, _ error)

Records gets the current records.

Returns the current records or an error if the operation failed.

type InMemoryProvider

type InMemoryProvider struct {
	OnApplyChanges func(changes *plan.Changes)
	OnRecords      func()
	// contains filtered or unexported fields
}

InMemoryProvider - dns provider only used for testing purposes initialized as dns provider with no records

func NewInMemoryProvider

func NewInMemoryProvider() *InMemoryProvider

NewInMemoryProvider returns InMemoryProvider DNS provider interface implementation

func NewInMemoryProviderWithDomainAndLogging

func NewInMemoryProviderWithDomainAndLogging(domain string) *InMemoryProvider

NewInMemoryProviderWithDomainAndLogging returns InMemoryProvider DNS provider interface implementation with a specified domain

func (*InMemoryProvider) ApplyChanges

func (im *InMemoryProvider) ApplyChanges(changes *plan.Changes) error

ApplyChanges simply modifies records in memory error checking occurs before any modifications are made, i.e. batch processing create record - record should not exist update/delete record - record should exist create/update/delete lists should not have overlapping records

func (*InMemoryProvider) CreateZone

func (im *InMemoryProvider) CreateZone(newZone string) error

CreateZone adds new zone if not present

func (*InMemoryProvider) Records

func (im *InMemoryProvider) Records() ([]*endpoint.Endpoint, error)

Records returns the list of endpoints

func (*InMemoryProvider) Zones added in v0.4.0

func (im *InMemoryProvider) Zones() map[string]string

Zones returns filtered zones as specified by domain

type Provider

type Provider interface {
	Records() ([]*endpoint.Endpoint, error)
	ApplyChanges(changes *plan.Changes) error
}

Provider defines the interface DNS providers should implement.

func NewAWSProvider

func NewAWSProvider(domainFilter string, dryRun bool) (Provider, error)

NewAWSProvider initializes a new AWS Route53 based Provider.

func NewAzureProvider added in v0.4.0

func NewAzureProvider(configFile string, domainFilter string, resourceGroup string, dryRun bool) (Provider, error)

NewAzureProvider creates a new Azure provider.

Returns the provider or an error if a provider could not be created.

func NewGoogleProvider

func NewGoogleProvider(project string, domainFilter string, dryRun bool) (Provider, error)

NewGoogleProvider initializes a new Google CloudDNS based Provider.

type RecordsClient added in v0.4.0

type RecordsClient interface {
	ListByDNSZone(resourceGroupName string, zoneName string, top *int32) (result dns.RecordSetListResult, err error)
	ListByDNSZoneNextResults(list dns.RecordSetListResult) (result dns.RecordSetListResult, err error)
	Delete(resourceGroupName string, zoneName string, relativeRecordSetName string, recordType dns.RecordType, ifMatch string) (result autorest.Response, err error)
	CreateOrUpdate(resourceGroupName string, zoneName string, relativeRecordSetName string, recordType dns.RecordType, parameters dns.RecordSet, ifMatch string, ifNoneMatch string) (result dns.RecordSet, err error)
}

RecordsClient is an interface of dns.RecordClient that can be stubbed for testing.

type Route53API

type Route53API interface {
	ListResourceRecordSetsPages(input *route53.ListResourceRecordSetsInput, fn func(resp *route53.ListResourceRecordSetsOutput, lastPage bool) (shouldContinue bool)) error
	ChangeResourceRecordSets(*route53.ChangeResourceRecordSetsInput) (*route53.ChangeResourceRecordSetsOutput, error)
	CreateHostedZone(*route53.CreateHostedZoneInput) (*route53.CreateHostedZoneOutput, error)
	ListHostedZonesPages(input *route53.ListHostedZonesInput, fn func(resp *route53.ListHostedZonesOutput, lastPage bool) (shouldContinue bool)) error
}

Route53API is the subset of the AWS Route53 API that we actually use. Add methods as required. Signatures must match exactly. mostly taken from: https://github.com/kubernetes/kubernetes/blob/853167624edb6bc0cfdcdfb88e746e178f5db36c/federation/pkg/dnsprovider/providers/aws/route53/stubs/route53api.go

type ZonesClient added in v0.4.0

type ZonesClient interface {
	ListByResourceGroup(resourceGroupName string, top *int32) (result dns.ZoneListResult, err error)
	ListByResourceGroupNextResults(lastResults dns.ZoneListResult) (result dns.ZoneListResult, err error)
}

ZonesClient is an interface of dns.ZoneClient that can be stubbed for testing.

Jump to

Keyboard shortcuts

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