plan

package
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: Apr 7, 2017 License: Apache-2.0 Imports: 1 Imported by: 36

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[]}

func (*Plan) Calculate

func (p *Plan) Calculate() *Plan

Calculate computes the actions needed to move current state towards desired state. It returns a copy of Plan with the changes populated.

Jump to

Keyboard shortcuts

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