Documentation ¶
Overview ¶
+groupName=ipam
Index ¶
- Constants
- type Address
- type AddressIterator
- type AllocationIP
- type AllocationMap
- type IPAMSpec
- type IPAMStatus
- type IPReleaseStatus
- type Instance
- type InstanceMap
- func (m *InstanceMap) DeepCopy() *InstanceMap
- func (m *InstanceMap) ForeachAddress(instanceID string, fn AddressIterator) error
- func (m *InstanceMap) ForeachInterface(instanceID string, fn InterfaceIterator) error
- func (m *InstanceMap) GetInterface(instanceID, interfaceID string) (InterfaceRevision, bool)
- func (m *InstanceMap) NumInstances() (size int)
- func (m *InstanceMap) Update(instanceID string, iface InterfaceRevision)
- type Interface
- type InterfaceIterator
- type InterfaceRevision
- type Limits
- type OperatorStatus
- type PodCIDRMap
- type PodCIDRMapEntry
- type PodCIDRStatus
- type PoolID
- type PoolQuota
- type PoolQuotaMap
- type Subnet
- type SubnetMap
- type Tags
- type VPCRouteStatuMap
- type VPCRouteStatus
- type VirtualNetwork
- type VirtualNetworkMap
Constants ¶
const PoolNotExists = PoolID("")
PoolNotExists indicate that no such pool ID exists
const PoolUnspec = PoolNotExists
PoolUnspec indicates that the pool ID is unspecified
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AddressIterator ¶
AddressIterator is the function called by the ForeachAddress iterator
type AllocationIP ¶
type AllocationIP struct { // Owner is the owner of the IP. This field is set if the IP has been // allocated. It will be set to the pod name or another identifier // representing the usage of the IP // // The owner field is left blank for an entry in Spec.IPAM.Pool and // filled out as the IP is used and also added to Status.IPAM.Used. // // +optional Owner string `json:"owner,omitempty"` // SubnetID is the subnet ID of the IP. This field is set if the IP is use in cross subnet mode // // +optional SubnetID string `json:"subnetID,omitempty"` // IsPrimary is set to true if the IP is the primary IP of the eni IsPrimary bool `json:"isPrimary,omitempty"` // Resource is set for both available and allocated IPs, it represents // what resource the IP is associated with, e.g. in combination with // AWS ENI, this will refer to the ID of the ENI // // +optional Resource string `json:"resource,omitempty"` }
AllocationIP is an IP which is available for allocation, or already has been allocated
func (*AllocationIP) DeepCopy ¶
func (in *AllocationIP) DeepCopy() *AllocationIP
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AllocationIP.
func (*AllocationIP) DeepCopyInto ¶
func (in *AllocationIP) DeepCopyInto(out *AllocationIP)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*AllocationIP) DeepEqual ¶
func (in *AllocationIP) DeepEqual(other *AllocationIP) bool
DeepEqual is an autogenerated deepequal function, deeply comparing the receiver with other. in must be non-nil.
type AllocationMap ¶
type AllocationMap map[string]AllocationIP
AllocationMap is a map of allocated IPs indexed by IP
func (AllocationMap) DeepCopy ¶
func (in AllocationMap) DeepCopy() AllocationMap
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AllocationMap.
func (AllocationMap) DeepCopyInto ¶
func (in AllocationMap) DeepCopyInto(out *AllocationMap)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*AllocationMap) DeepEqual ¶
func (in *AllocationMap) DeepEqual(other *AllocationMap) bool
DeepEqual is an autogenerated deepequal function, deeply comparing the receiver with other. in must be non-nil.
type IPAMSpec ¶
type IPAMSpec struct { // Pool is the list of IPs available to the node for allocation. When // an IP is used, the IP will remain on this list but will be added to // Status.IPAM.Used // // +optional Pool AllocationMap `json:"pool,omitempty"` // PodCIDRs is the list of CIDRs available to the node for allocation. // When an IP is used, the IP will be added to Status.IPAM.Used // // +optional PodCIDRs []string `json:"podCIDRs,omitempty"` // MinAllocate is the minimum number of IPs that must be allocated when // the node is first bootstrapped. It defines the minimum base socket // of addresses that must be available. After reaching this watermark, // the PreAllocate and MaxAboveWatermark logic takes over to continue // allocating IPs. // // +kubebuilder:validation:Minimum=0 MinAllocate int `json:"min-allocate,omitempty"` // MaxAllocate is the maximum number of IPs that can be allocated to the // node. When the current amount of allocated IPs will approach this value, // the considered value for PreAllocate will decrease down to 0 in order to // not attempt to allocate more addresses than defined. // // +kubebuilder:validation:Minimum=0 MaxAllocate int `json:"max-allocate,omitempty"` // PreAllocate defines the number of IP addresses that must be // available for allocation in the IPAMspec. It defines the buffer of // addresses available immediately without requiring cce-operator to // get involved. // // +kubebuilder:validation:Minimum=0 PreAllocate int `json:"pre-allocate,omitempty"` // MaxAboveWatermark is the maximum number of addresses to allocate // beyond the addresses needed to reach the PreAllocate watermark. // Going above the watermark can help reduce the number of API calls to // allocate IPs, e.g. when a new ENI is allocated, as many secondary // IPs as possible are allocated. Limiting the amount can help reduce // waste of IPs. // // +kubebuilder:validation:Minimum=0 MaxAboveWatermark int `json:"max-above-watermark,omitempty"` // PodCIDRAllocationThreshold defines the minimum number of free IPs which // must be available to this node via its pod CIDR pool. If the total number // of IP addresses in the pod CIDR pool is less than this value, the pod // CIDRs currently in-use by this node will be marked as depleted and // cce-operator will allocate a new pod CIDR to this node. // This value effectively defines the buffer of IP addresses available // immediately without requiring cce-operator to get involved. // // +kubebuilder:validation:Minimum=0 PodCIDRAllocationThreshold int `json:"pod-cidr-allocation-threshold,omitempty"` // PodCIDRReleaseThreshold defines the maximum number of free IPs which may // be available to this node via its pod CIDR pool. While the total number // of free IP addresses in the pod CIDR pool is larger than this value, // cce-agent will attempt to release currently unused pod CIDRs. // // +kubebuilder:validation:Minimum=0 PodCIDRReleaseThreshold int `json:"pod-cidr-release-threshold,omitempty"` }
IPAMSpec is the IPAM specification of the node
This structure is embedded into v2.NetResourceSet
func (*IPAMSpec) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPAMSpec.
func (*IPAMSpec) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type IPAMStatus ¶
type IPAMStatus struct { // Used lists all IPs out of Spec.IPAM.Pool which have been allocated // and are in use. // // +optional Used AllocationMap `json:"used,omitempty"` // CrossSubnetUsed lists all IPs out of Spec.IPAM.Pool which have been allocated // // +optional CrossSubnetUsed AllocationMap `json:"crossSubnetUsed,omitempty"` // PodCIDRs lists the status of each pod CIDR allocated to this node. // // +optional PodCIDRs PodCIDRMap `json:"pod-cidrs,omitempty"` // VPCRouteCIDRs lists the status of each VPC route CIDR allocated to this node. VPCRouteCIDRs VPCRouteStatuMap `json:"vpc-route-cidrs,omitempty"` // Operator is the Operator status of the node // // +optional OperatorStatus OperatorStatus `json:"operator-status,omitempty"` // ReleaseIPs tracks the state for every IP considered for release. // value can be one of the following string : // * marked-for-release : Set by operator as possible candidate for IP // * ready-for-release : Acknowledged as safe to release by agent // * do-not-release : IP already in use / not owned by the node. Set by agent // * released : IP successfully released. Set by operator // // +optional ReleaseIPs map[string]IPReleaseStatus `json:"release-ips,omitempty"` // AvailableSubnets lists all subnets which are available for allocation AvailableSubnetIDs []string `json:"available-subnet-ids,omitempty"` }
IPAMStatus is the IPAM status of a node
This structure is embedded into v2.NetResourceSet
func (*IPAMStatus) DeepCopy ¶
func (in *IPAMStatus) DeepCopy() *IPAMStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPAMStatus.
func (*IPAMStatus) DeepCopyInto ¶
func (in *IPAMStatus) DeepCopyInto(out *IPAMStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*IPAMStatus) DeepEqual ¶
func (in *IPAMStatus) DeepEqual(other *IPAMStatus) bool
DeepEqual is an autogenerated deepequal function, deeply comparing the receiver with other. in must be non-nil.
type IPReleaseStatus ¶
type IPReleaseStatus string
IPReleaseStatus defines the valid states in IP release handshake
+kubebuilder:validation:Enum=marked-for-release;ready-for-release;do-not-release;released
type Instance ¶
type Instance struct { // interfaces is a map of all interfaces attached to the instance // indexed by the interface ID Interfaces map[string]InterfaceRevision }
Instance is the representation of an instance, typically a VM, subject to per-node IPAM logic
+k8s:deepcopy-gen=false +deepequal-gen=false
type InstanceMap ¶
type InstanceMap struct {
// contains filtered or unexported fields
}
InstanceMap is the list of all instances indexed by instance ID
+k8s:deepcopy-gen=false +deepequal-gen=false
func (*InstanceMap) DeepCopy ¶
func (m *InstanceMap) DeepCopy() *InstanceMap
DeepCopy returns a deep copy
func (*InstanceMap) ForeachAddress ¶
func (m *InstanceMap) ForeachAddress(instanceID string, fn AddressIterator) error
ForeachAddress calls fn for each address on each interface attached to each instance. If an instanceID is specified, the only the interfaces and addresses of the specified instance are considered.
The InstanceMap is read-locked throughout the iteration process, i.e., no updates will occur. However, the address object given to the AddressIterator will point to live data and must be deep copied if used outside of the context of the iterator function.
func (*InstanceMap) ForeachInterface ¶
func (m *InstanceMap) ForeachInterface(instanceID string, fn InterfaceIterator) error
ForeachInterface calls fn for each interface on each interface attached to each instance. If an instanceID is specified, the only the interfaces and addresses of the specified instance are considered.
The InstanceMap is read-locked throughout the iteration process, i.e., no updates will occur. However, the address object given to the InterfaceIterator will point to live data and must be deep copied if used outside of the context of the iterator function.
func (*InstanceMap) GetInterface ¶
func (m *InstanceMap) GetInterface(instanceID, interfaceID string) (InterfaceRevision, bool)
GetInterface returns returns a particular interface of an instance. The boolean indicates whether the interface was found or not.
func (*InstanceMap) NumInstances ¶
func (m *InstanceMap) NumInstances() (size int)
NumInstances returns the number of instances in the instance map
func (*InstanceMap) Update ¶
func (m *InstanceMap) Update(instanceID string, iface InterfaceRevision)
Update updates the definition of an interface for a particular instance. If the interface is already known, the definition is updated, otherwise the interface is added to the instance.
type Interface ¶
type Interface interface { // InterfaceID must return the identifier of the interface InterfaceID() string // ForeachAddress must iterate over all addresses of the interface and // call fn for each address ForeachAddress(instanceID string, fn AddressIterator) error }
Interface is the implementation of a IPAM relevant network interface +k8s:deepcopy-gen=false +deepequal-gen=false
type InterfaceIterator ¶
type InterfaceIterator func(instanceID, interfaceID string, iface InterfaceRevision) error
InterfaceIterator is the function called by the ForeachInterface iterator
type InterfaceRevision ¶
type InterfaceRevision struct { // Resource is the interface resource Resource Interface // Fingerprint is the fingerprint reprsenting the network interface // configuration. It is typically implemented as the result of a hash // function calculated off the resource. This field is optional, not // all IPAM backends make use of fingerprints. Fingerprint string }
InterfaceRevision is the configurationr revision of a network interface. It consists of a revision hash representing the current configuration version and the resource itself.
+k8s:deepcopy-gen=false +deepequal-gen=false
type Limits ¶
type Limits struct { // Adapters specifies the maximum number of interfaces that can be // attached to the instance Adapters int // IPv4 is the maximum number of IPv4 addresses per adapter/interface IPv4 int // IPv6 is the maximum number of IPv6 addresses per adapter/interface IPv6 int // HypervisorType tracks the instance's hypervisor type if available. Used to determine if features like prefix // delegation are supported on an instance. Bare metal instances would have empty string. HypervisorType string }
Limits specifies the IPAM relevant instance limits
func (*Limits) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Limits.
func (*Limits) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type OperatorStatus ¶
type OperatorStatus struct { // Error is the error message set by cce-operator. // // +optional Error string `json:"error,omitempty"` }
OperatorStatus is the status used by cce-operator to report errors in case the allocation CIDR failed.
func (*OperatorStatus) DeepCopy ¶
func (in *OperatorStatus) DeepCopy() *OperatorStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OperatorStatus.
func (*OperatorStatus) DeepCopyInto ¶
func (in *OperatorStatus) DeepCopyInto(out *OperatorStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*OperatorStatus) DeepEqual ¶
func (in *OperatorStatus) DeepEqual(other *OperatorStatus) bool
DeepEqual is an autogenerated deepequal function, deeply comparing the receiver with other. in must be non-nil.
type PodCIDRMap ¶
type PodCIDRMap map[string]PodCIDRMapEntry
func (PodCIDRMap) DeepCopy ¶
func (in PodCIDRMap) DeepCopy() PodCIDRMap
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCIDRMap.
func (PodCIDRMap) DeepCopyInto ¶
func (in PodCIDRMap) DeepCopyInto(out *PodCIDRMap)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*PodCIDRMap) DeepEqual ¶
func (in *PodCIDRMap) DeepEqual(other *PodCIDRMap) bool
DeepEqual is an autogenerated deepequal function, deeply comparing the receiver with other. in must be non-nil.
type PodCIDRMapEntry ¶
type PodCIDRMapEntry struct { // Status describes the status of a pod CIDR // // +optional Status PodCIDRStatus `json:"status,omitempty"` }
func (*PodCIDRMapEntry) DeepCopy ¶
func (in *PodCIDRMapEntry) DeepCopy() *PodCIDRMapEntry
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCIDRMapEntry.
func (*PodCIDRMapEntry) DeepCopyInto ¶
func (in *PodCIDRMapEntry) DeepCopyInto(out *PodCIDRMapEntry)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*PodCIDRMapEntry) DeepEqual ¶
func (in *PodCIDRMapEntry) DeepEqual(other *PodCIDRMapEntry) bool
DeepEqual is an autogenerated deepequal function, deeply comparing the receiver with other. in must be non-nil.
type PodCIDRStatus ¶
type PodCIDRStatus string
+kubebuilder:validation:Enum=released;depleted;in-use
const ( PodCIDRStatusReleased PodCIDRStatus = "released" PodCIDRStatusDepleted PodCIDRStatus = "depleted" PodCIDRStatusInUse PodCIDRStatus = "in-use" )
type PoolQuota ¶
type PoolQuota struct { // AvailabilityZone is the availability zone in which the IPAM pool resides in AvailabilityZone string // AvailableIPs is the number of available IPs in the pool AvailableIPs int }
PoolQuota defines the limits of an IPAM pool
func (*PoolQuota) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PoolQuota.
func (*PoolQuota) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PoolQuotaMap ¶
PoolQuotaMap is a map of pool quotas indexes by pool identifier
func (PoolQuotaMap) DeepCopy ¶
func (in PoolQuotaMap) DeepCopy() PoolQuotaMap
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PoolQuotaMap.
func (PoolQuotaMap) DeepCopyInto ¶
func (in PoolQuotaMap) DeepCopyInto(out *PoolQuotaMap)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*PoolQuotaMap) DeepEqual ¶
func (in *PoolQuotaMap) DeepEqual(other *PoolQuotaMap) bool
DeepEqual is an autogenerated deepequal function, deeply comparing the receiver with other. in must be non-nil.
type Subnet ¶
type Subnet struct { // ID is the subnet ID ID string // Name is the subnet name Name string // CIDR is the CIDR associated with the subnet CIDR *cidr.CIDR // AvailabilityZone is the availability zone of the subnet AvailabilityZone string // VirtualNetworkID is the virtual network the subnet is in VirtualNetworkID string // AvailableAddresses is the number of addresses available for // allocation AvailableAddresses int // Tags is the tags of the subnet Tags Tags }
Subnet is a representation of a subnet
func (*Subnet) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Subnet.
func (*Subnet) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type SubnetMap ¶
SubnetMap indexes subnets by subnet ID
func (SubnetMap) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubnetMap.
func (SubnetMap) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*SubnetMap) DeepEqual ¶
DeepEqual is an autogenerated deepequal function, deeply comparing the receiver with other. in must be non-nil.
func (SubnetMap) FirstSubnetWithAvailableAddresses ¶
FirstSubnetWithAvailableAddresses returns the first pool ID in the list of subnets with available addresses. If any of the preferred pool IDs have available addresses, the first pool ID with available addresses is returned.
type Tags ¶
Tags implements generic key value tags
func (Tags) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Tags.
func (Tags) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type VPCRouteStatuMap ¶
type VPCRouteStatuMap map[string]VPCRouteStatus
func (VPCRouteStatuMap) DeepCopy ¶
func (in VPCRouteStatuMap) DeepCopy() VPCRouteStatuMap
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VPCRouteStatuMap.
func (VPCRouteStatuMap) DeepCopyInto ¶
func (in VPCRouteStatuMap) DeepCopyInto(out *VPCRouteStatuMap)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*VPCRouteStatuMap) DeepEqual ¶
func (in *VPCRouteStatuMap) DeepEqual(other *VPCRouteStatuMap) bool
DeepEqual is an autogenerated deepequal function, deeply comparing the receiver with other. in must be non-nil.
type VPCRouteStatus ¶
type VPCRouteStatus string
const ( VPCRouteStatusReleased VPCRouteStatus = "released" VPCRouteStatusInUse VPCRouteStatus = "in-use" )
type VirtualNetwork ¶
type VirtualNetwork struct { // ID is the ID of the virtual network ID string // PrimaryCIDR is the primary IPv4 CIDR PrimaryCIDR string // CIDRs is the list of secondary IPv4 CIDR ranges associated with the VPC CIDRs []string }
VirtualNetwork is the representation of a virtual network
func (*VirtualNetwork) DeepCopy ¶
func (in *VirtualNetwork) DeepCopy() *VirtualNetwork
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VirtualNetwork.
func (*VirtualNetwork) DeepCopyInto ¶
func (in *VirtualNetwork) DeepCopyInto(out *VirtualNetwork)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*VirtualNetwork) DeepEqual ¶
func (in *VirtualNetwork) DeepEqual(other *VirtualNetwork) bool
DeepEqual is an autogenerated deepequal function, deeply comparing the receiver with other. in must be non-nil.
type VirtualNetworkMap ¶
type VirtualNetworkMap map[string]*VirtualNetwork
VirtualNetworkMap indexes virtual networks by their ID
func (VirtualNetworkMap) DeepCopy ¶
func (in VirtualNetworkMap) DeepCopy() VirtualNetworkMap
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VirtualNetworkMap.
func (VirtualNetworkMap) DeepCopyInto ¶
func (in VirtualNetworkMap) DeepCopyInto(out *VirtualNetworkMap)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*VirtualNetworkMap) DeepEqual ¶
func (in *VirtualNetworkMap) DeepEqual(other *VirtualNetworkMap) bool
DeepEqual is an autogenerated deepequal function, deeply comparing the receiver with other. in must be non-nil.