Documentation ¶
Index ¶
- Variables
- type AWSProvider
- func (p *AWSProvider) ApplyChanges(changes *plan.Changes) error
- func (p *AWSProvider) CreateRecords(endpoints []*endpoint.Endpoint) error
- func (p *AWSProvider) DeleteRecords(endpoints []*endpoint.Endpoint) error
- func (p *AWSProvider) Records() (endpoints []*endpoint.Endpoint, _ error)
- func (p *AWSProvider) UpdateRecords(endpoints, _ []*endpoint.Endpoint) error
- func (p *AWSProvider) Zones() (map[string]*route53.HostedZone, error)
- type AzureProvider
- type InMemoryProvider
- type Provider
- type RecordsClient
- type Route53API
- type ZonesClient
Constants ¶
This section is empty.
Variables ¶
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.
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 ¶
NewAWSProvider initializes a new AWS Route53 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.