ipam

package
v1.0.8 Latest Latest
Warning

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

Go to latest
Published: Jan 18, 2024 License: Apache-2.0 Imports: 30 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrNoQualifiedPool  = errors.New("cannot find a qualified ippool")
	ErrNoFreeBlocks     = errors.New("no free blocks in ippool")
	ErrMaxRetry         = errors.New("Max retries hit - excessive concurrent IPAM requests")
	ErrUnknowIPPoolType = errors.New("unknow ippool type")
)

Functions

func EndReservedAddressed

func EndReservedAddressed(cidr cnet.IPNet, r string) int

func IP2Resutl

func IP2Resutl(ip *cnet.IPNet, pool *v1alpha1.IPPool) *current.Result

func StartReservedAddressed

func StartReservedAddressed(cidr cnet.IPNet, r string) int

Types

type AutoAssignArgs

type AutoAssignArgs struct {
	HandleID string

	// A key/value mapping of metadata to store with the allocations.
	Attrs map[string]string

	Pool string

	// extarnal
	Pools  []string
	Blocks []string
	Info   *PoolInfo
}

AutoAssignArgs defines the set of arguments for assigning one or more IP addresses.

type BlockUtilization

type BlockUtilization struct {
	// This block's name.
	Name string

	// Number of possible IPs in this block.
	Capacity int

	// Number of available IPs in this block.
	Unallocated int

	Allocate int

	Reserved int
}

type BrokenBlockUtilization added in v1.0.8

type BrokenBlockUtilization struct {
	// This block's name.
	Name string

	IpToPods                map[string][]string
	IpWithoutRecord         map[string][]string // maybe allocated to more than one pod
	IpToPodsWithWrongRecord map[string][]string
}

type FixIpArgs

type FixIpArgs struct {
	AutoAssignArgs
	//annotation ips
	TarGetIpList []string
}

FixIpArgs assign from config annotation

type GetUtilizationArgs

type GetUtilizationArgs struct {
	// If specified, the pools whose utilization should be reported.  Each string here
	// can be a pool name or CIDR.  If not specified, this defaults to all pools.
	Pools []string
}

GetUtilizationArgs defines the set of arguments for requesting IP utilization.

type IPAMClient

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

IPAMClient implements Interface

func NewIPAMClient

func NewIPAMClient(client versioned.Interface, typeStr string, informers informers.SharedInformerFactory, k8sInformers k8sinformers.SharedInformerFactory) IPAMClient

NewIPAMClient returns a new IPAMClient, which implements Interface.

func (IPAMClient) AssignFixIps

func (c IPAMClient) AssignFixIps(handleID string, ipList, pools, blocks []string, info *PoolInfo) (*current.Result, error)

AssignFixIps fix ip form assign pool or block

func (IPAMClient) AutoAssign

func (c IPAMClient) AutoAssign(args AutoAssignArgs) (*current.Result, error)

AutoAssign automatically assigns one or more IP addresses as specified by the provided AutoAssignArgs. AutoAssign returns the list of the assigned IPv4 addresses, and the list of the assigned IPv6 addresses.

In case of error, returns the IPs allocated so far along with the error.

func (IPAMClient) AutoAssignFromBlocks

func (c IPAMClient) AutoAssignFromBlocks(args AutoAssignArgs) (*current.Result, error)

func (IPAMClient) AutoAssignFromPools

func (c IPAMClient) AutoAssignFromPools(args AutoAssignArgs) (*current.Result, error)

func (IPAMClient) AutoGenerateBlocksFromPool

func (c IPAMClient) AutoGenerateBlocksFromPool(poolName string) error

func (IPAMClient) DeleteBlock

func (c IPAMClient) DeleteBlock(b *v1alpha1.IPAMBlock) error

DeleteBlock deletes the given block.

func (IPAMClient) FixIpsFromBlock

func (c IPAMClient) FixIpsFromBlock(args FixIpArgs) (*current.Result, error)

FixIpsFromBlock fix ip form assign block

func (IPAMClient) FixIpsFromPool

func (c IPAMClient) FixIpsFromPool(args FixIpArgs) (*current.Result, error)

FixIpsFromPool fix ip from assign pool

func (IPAMClient) GetAndFixBrokenBlocks added in v1.0.8

func (c IPAMClient) GetAndFixBrokenBlocks(args GetUtilizationArgs, fix bool) ([]*PoolBlocksUtilization, error)

func (IPAMClient) GetPoolBlocksUtilization

func (c IPAMClient) GetPoolBlocksUtilization(args GetUtilizationArgs) ([]*PoolBlocksUtilization, error)

func (IPAMClient) GetUtilization

func (c IPAMClient) GetUtilization(args GetUtilizationArgs) ([]*PoolUtilization, error)

GetUtilization returns IP utilization info for the specified pools, or for all pools.

func (IPAMClient) ListBlocks

func (c IPAMClient) ListBlocks(pool string) ([]v1alpha1.IPAMBlock, error)

func (IPAMClient) ReleaseByHandle

func (c IPAMClient) ReleaseByHandle(handleID string) error

ReleaseByHandle releases all IP addresses that have been assigned using the provided handle.

func (IPAMClient) Sync added in v1.0.4

func (c IPAMClient) Sync(stopCh <-chan struct{}) error

type Interface

type Interface interface {
	// AutoAssign automatically assigns one or more IP addresses as specified by the
	// provided AutoAssignArgs.  AutoAssign returns the list of the assigned IPv4 addresses,
	// and the list of the assigned IPv6 addresses in IPNet format.
	// The returned IPNet represents the allocation block from which the IP was allocated,
	// which is useful for dataplanes that need to know the subnet (such as Windows).
	//
	// In case of error, returns the IPs allocated so far along with the error.
	AutoAssign(args AutoAssignArgs) (*current.Result, error)

	AutoAssignFromPools(args AutoAssignArgs) (*current.Result, error)

	AutoAssignFromBlocks(args AutoAssignArgs) (*current.Result, error)

	AutoGenerateBlocksFromPool(pool string) error

	// ReleaseByHandle releases all IP addresses that have been assigned
	// using the provided handle.  Returns an error if no addresses
	// are assigned with the given handle.
	ReleaseByHandle(handleID string) error

	GetUtilization(args GetUtilizationArgs) ([]*PoolUtilization, error)
	GetPoolBlocksUtilization(args GetUtilizationArgs) ([]*PoolBlocksUtilization, error)
}

ipam.Interface has methods to perform IP address management.

type PoolAccessorInterface

type PoolAccessorInterface interface {
	// contains filtered or unexported methods
}

Interface used to access the enabled IPPools.

type PoolBlocksUtilization

type PoolBlocksUtilization struct {
	// This pool's name.
	Name string

	// Number of possible IPs in this block.
	Capacity int

	// Number of available IPs in this block.
	Unallocated int

	Allocate int

	Reserved int

	// This blocks' util which belong to pool.
	Blocks []*BlockUtilization

	// This blocks' util which belong to pool.
	BrokenBlocks          []*BrokenBlockUtilization
	BrokenBlockNames      []string
	BrokenBlockFixSucceed []string
}

type PoolInfo

type PoolInfo struct {
	IPPool string
	Block  string
}

type PoolUtilization

type PoolUtilization struct {
	// This pool's name.
	Name string

	// Number of possible IPs in this block.
	Capacity int

	// Number of available IPs in this block.
	Unallocated int

	Allocate int

	Reserved int
}

PoolUtilization reports IP utilization for a single IP pool.

Jump to

Keyboard shortcuts

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