Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var Policies = map[string]Policy{ "sync": &SyncPolicy{}, "upsert-only": &UpsertOnlyPolicy{}, "create-only": &CreateOnlyPolicy{}, }
Policies is a registry of available policies.
Functions ¶
This section is empty.
Types ¶
type Changes ¶
type Changes struct { // Records that need to be created Create []*endpoint.Endpoint // Records that need to be updated (current data) UpdateOld []*endpoint.Endpoint // Records that need to be updated (desired data) UpdateNew []*endpoint.Endpoint // Records that need to be deleted Delete []*endpoint.Endpoint }
Changes holds lists of actions to be executed by dns providers
type ConflictResolver ¶ added in v0.5.0
type ConflictResolver interface { ResolveCreate(candidates []*endpoint.Endpoint) *endpoint.Endpoint ResolveUpdate(current *endpoint.Endpoint, candidates []*endpoint.Endpoint) *endpoint.Endpoint }
ConflictResolver is used to make a decision in case of two or more different kubernetes resources are trying to acquire same DNS name
type CreateOnlyPolicy ¶ added in v0.5.17
type CreateOnlyPolicy struct{}
CreateOnlyPolicy allows only creating DNS records.
func (*CreateOnlyPolicy) Apply ¶ added in v0.5.17
func (p *CreateOnlyPolicy) Apply(changes *Changes) *Changes
Apply applies the create-only policy which strips out updates and deletions.
type PerResource ¶ added in v0.5.0
type PerResource struct{}
PerResource allows only one resource to own a given dns name
func (PerResource) ResolveCreate ¶ added in v0.5.0
func (s PerResource) ResolveCreate(candidates []*endpoint.Endpoint) *endpoint.Endpoint
ResolveCreate is invoked when dns name is not owned by any resource ResolveCreate takes "minimal" (string comparison of Target) endpoint to acquire the DNS record
func (PerResource) ResolveUpdate ¶ added in v0.5.0
func (s PerResource) ResolveUpdate(current *endpoint.Endpoint, candidates []*endpoint.Endpoint) *endpoint.Endpoint
ResolveUpdate is invoked when dns name is already owned by "current" endpoint ResolveUpdate uses "current" record as base and updates it accordingly with new version of same resource if it doesn't exist then pick min
type Plan ¶
type Plan struct { // List of current records Current []*endpoint.Endpoint // List of desired records Desired []*endpoint.Endpoint // Policies under which the desired changes are calculated Policies []Policy // List of changes necessary to move towards desired state // Populated after calling Calculate() Changes *Changes }
Plan can convert a list of desired and current records to a series of create, update and delete actions.
type SyncPolicy ¶ added in v0.3.0
type SyncPolicy struct{}
SyncPolicy allows for full synchronization of DNS records.
func (*SyncPolicy) Apply ¶ added in v0.3.0
func (p *SyncPolicy) Apply(changes *Changes) *Changes
Apply applies the sync policy which returns the set of changes as is.
type UpsertOnlyPolicy ¶ added in v0.3.0
type UpsertOnlyPolicy struct{}
UpsertOnlyPolicy allows everything but deleting DNS records.
func (*UpsertOnlyPolicy) Apply ¶ added in v0.3.0
func (p *UpsertOnlyPolicy) Apply(changes *Changes) *Changes
Apply applies the upsert-only policy which strips out any deletions.