Documentation
¶
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
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 Plan ¶
type Plan struct {
// List of current records
Current []*endpoint.Endpoint
// List of desired records
Desired []*endpoint.Endpoint
// 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.
Example ¶
ExamplePlan shows how plan can be used.
foo := endpoint.NewEndpoint("foo.example.com", "1.2.3.4")
barV1 := endpoint.NewEndpoint("bar.example.com", "8.8.8.8")
barV2 := endpoint.NewEndpoint("bar.example.com", "8.8.4.4")
baz := endpoint.NewEndpoint("baz.example.com", "6.6.6.6")
// Plan where
// * foo should be deleted
// * bar should be updated from v1 to v2
// * baz should be created
plan := &Plan{
Current: []*endpoint.Endpoint{foo, barV1},
Desired: []*endpoint.Endpoint{barV2, baz},
}
// calculate actions
plan = plan.Calculate()
// print actions
fmt.Println("Create:")
for _, ep := range plan.Changes.Create {
fmt.Println(ep)
}
fmt.Println("UpdateOld:")
for _, ep := range plan.Changes.UpdateOld {
fmt.Println(ep)
}
fmt.Println("UpdateNew:")
for _, ep := range plan.Changes.UpdateNew {
fmt.Println(ep)
}
fmt.Println("Delete:")
for _, ep := range plan.Changes.Delete {
fmt.Println(ep)
}
Output: Create: &{baz.example.com 6.6.6.6 map[]} UpdateOld: &{bar.example.com 8.8.8.8 map[]} UpdateNew: &{bar.example.com 8.8.4.4 map[]} Delete: &{foo.example.com 1.2.3.4 map[]}
Click to show internal directories.
Click to hide internal directories.