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.