Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CIDRRangeNoCIDRsRemainingErr ¶
type CIDRRangeNoCIDRsRemainingErr struct {
// CIDR represents the CIDR which is exhausted.
CIDR string
}
CIDRRangeNoCIDRsRemainingErr is an error type used to denote there is no more space to allocate CIDR ranges from the given CIDR.
func (*CIDRRangeNoCIDRsRemainingErr) Error ¶
func (err *CIDRRangeNoCIDRsRemainingErr) Error() string
type CIDRSetSubNetTooBigErr ¶
type CIDRSetSubNetTooBigErr struct {
// contains filtered or unexported fields
}
CIDRSetSubNetTooBigErr is an error type to denote that subnet mask size is too big compared to the CIDR mask size.
func (*CIDRSetSubNetTooBigErr) Error ¶
func (err *CIDRSetSubNetTooBigErr) Error() string
type ClusterCIDR ¶
type ClusterCIDR struct {
// Name of the associated ClusterCIDR API object.
Name string
// IPv4CIDRSet is the MultiCIDRSet representation of ClusterCIDR.spec.ipv4
// of the associated ClusterCIDR API object.
IPv4CIDRSet *MultiCIDRSet
// IPv6CIDRSet is the MultiCIDRSet representation of ClusterCIDR.spec.ipv6
// of the associated ClusterCIDR API object.
IPv6CIDRSet *MultiCIDRSet
// AssociatedNodes is used to identify which nodes have CIDRs allocated from this ClusterCIDR.
// Stores a mapping of node name to association status.
AssociatedNodes map[string]bool
// Terminating is used to identify whether ClusterCIDR has been marked for termination.
Terminating bool
}
ClusterCIDR is an internal representation of the ClusterCIDR API object.
type MultiCIDRSet ¶
type MultiCIDRSet struct {
sync.Mutex
// ClusterCIDR is the CIDR assigned to the cluster.
ClusterCIDR *net.IPNet
// NodeMaskSize is the mask size, in bits,assigned to the nodes
// caches the mask size to avoid the penalty of calling nodeMask.Size().
NodeMaskSize int
// MaxCIDRs is the maximum number of CIDRs that can be allocated.
MaxCIDRs int
// Label stores the CIDR in a string, it is used to identify the metrics such
// as Number of allocations, Total number of CIDR releases, Percentage of
// allocated CIDRs, Tries required for allocating a CIDR for a particular CIDRSet.
Label string
// AllocatedCIDRMap stores all the allocated CIDRs from the current CIDRSet.
// Stores a mapping of the next candidate CIDR for allocation to it's
// allocation status. Next candidate is used only if allocation status is false.
AllocatedCIDRMap map[string]bool
// contains filtered or unexported fields
}
MultiCIDRSet manages a set of CIDR ranges from which blocks of IPs can be allocated from.
func NewMultiCIDRSet ¶
func NewMultiCIDRSet(cidrConfig *net.IPNet, perNodeHostBits int) (*MultiCIDRSet, error)
NewMultiCIDRSet creates a new MultiCIDRSet.
func (*MultiCIDRSet) NextCandidate ¶
func (s *MultiCIDRSet) NextCandidate() (*net.IPNet, int, error)
NextCandidate returns the next candidate and the last evaluated index for the current cidrSet. Returns nil if the candidate is already allocated.
func (*MultiCIDRSet) Occupy ¶
func (s *MultiCIDRSet) Occupy(cidr *net.IPNet) (err error)
Occupy marks the given CIDR range as used. Occupy succeeds even if the CIDR range was previously used.
func (*MultiCIDRSet) Release ¶
func (s *MultiCIDRSet) Release(cidr *net.IPNet) error
Release releases the given CIDR range.
func (*MultiCIDRSet) UpdateEvaluatedCount ¶
func (s *MultiCIDRSet) UpdateEvaluatedCount(evaluated int)
UpdateEvaluatedCount increments the evaluated count.