ipam

package
v1.4.6 Latest Latest
Warning

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

Go to latest
Published: Mar 23, 2016 License: Apache-2.0 Imports: 14 Imported by: 11

Documentation

Index

Constants

View Source
const (
	MinSubnetSize = 4 // first and last addresses are excluded, so 2 would be too small
)

Kinds of message we can unicast to other peers

Variables

This section is empty.

Functions

This section is empty.

Types

type Allocator

type Allocator struct {
	// contains filtered or unexported fields
}

Allocator brings together Ring and space.Set, and does the necessary plumbing. Runs as a single-threaded Actor, so no locks are used around data structures.

func NewAllocator

func NewAllocator(ourName mesh.PeerName, ourUID mesh.PeerUID, ourNickname string, universe address.Range, quorum uint, isKnownPeer func(name mesh.PeerName) bool) *Allocator

NewAllocator creates and initialises a new Allocator

func (*Allocator) AdminTakeoverRanges

func (alloc *Allocator) AdminTakeoverRanges(peerNameOrNickname string) error

AdminTakeoverRanges (Sync) - take over the ranges owned by a given peer. Only done on adminstrator command.

func (*Allocator) Allocate

func (alloc *Allocator) Allocate(ident string, r address.Range, hasBeenCancelled func() bool) (address.Address, error)

Allocate (Sync) - get new IP address for container with given name in range if there isn't any space in that range we block indefinitely

func (*Allocator) Claim

func (alloc *Allocator) Claim(ident string, addr address.Address, noErrorOnUnknown bool) error

Claim an address that we think we should own (Sync)

func (*Allocator) ContainerDied

func (alloc *Allocator) ContainerDied(ident string)

ContainerDied is provided to satisfy the updater interface; does a 'Delete' underneath. Sync.

func (*Allocator) ContainerStarted added in v1.2.0

func (alloc *Allocator) ContainerStarted(ident string)

func (*Allocator) Delete added in v1.0.0

func (alloc *Allocator) Delete(ident string) error

Delete (Sync) - release all IP addresses for container with given name

func (*Allocator) Encode

func (alloc *Allocator) Encode() []byte

Encode (Sync)

func (*Allocator) Free

func (alloc *Allocator) Free(ident string, addrToFree address.Address) error

Free (Sync) - release single IP address for container

func (*Allocator) Gossip

func (alloc *Allocator) Gossip() mesh.GossipData

Gossip returns a GossipData implementation, which in this case always returns the latest ring state (and does nothing on merge)

func (*Allocator) HandleHTTP

func (alloc *Allocator) HandleHTTP(router *mux.Router, defaultSubnet address.CIDR, dockerCli *docker.Client)

HandleHTTP wires up ipams HTTP endpoints to the provided mux.

func (*Allocator) Lookup added in v1.0.0

func (alloc *Allocator) Lookup(ident string, r address.Range) (address.Address, error)

Lookup (Sync) - get existing IP address for container with given name in range

func (*Allocator) OnGossip

func (alloc *Allocator) OnGossip(msg []byte) (mesh.GossipData, error)

OnGossip (Sync)

func (*Allocator) OnGossipBroadcast

func (alloc *Allocator) OnGossipBroadcast(sender mesh.PeerName, msg []byte) (mesh.GossipData, error)

OnGossipBroadcast (Sync)

func (*Allocator) OnGossipUnicast

func (alloc *Allocator) OnGossipUnicast(sender mesh.PeerName, msg []byte) error

OnGossipUnicast (Sync)

func (*Allocator) SetInterfaces

func (alloc *Allocator) SetInterfaces(gossip mesh.Gossip)

SetInterfaces gives the allocator two interfaces for talking to the outside world

func (*Allocator) Shutdown

func (alloc *Allocator) Shutdown()

Shutdown (Sync)

func (*Allocator) Start

func (alloc *Allocator) Start()

Start runs the allocator goroutine

func (*Allocator) Stop

func (alloc *Allocator) Stop()

Stop makes the actor routine exit, for test purposes ONLY because any calls after this is processed will hang. Async.

type ClaimStatus added in v1.1.0

type ClaimStatus struct {
	Ident   string
	Address address.Address
}

type EntryStatus added in v1.1.0

type EntryStatus struct {
	Token       string
	Size        uint32
	Peer        string
	Nickname    string
	IsKnownPeer bool
	Version     uint32
}

type Status added in v1.1.0

type Status struct {
	Paxos            *paxos.Status
	Range            string
	RangeNumIPs      int
	DefaultSubnet    string
	Entries          []EntryStatus
	PendingClaims    []ClaimStatus
	PendingAllocates []string
}

func NewStatus added in v1.1.0

func NewStatus(allocator *Allocator, defaultSubnet address.CIDR) *Status

Directories

Path Synopsis
Package ring implements a simple ring CRDT.
Package ring implements a simple ring CRDT.

Jump to

Keyboard shortcuts

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