Documentation ¶
Index ¶
- Constants
- Variables
- type AddressInfo
- type DataStore
- func (ds *DataStore) AddENI(eniID string, deviceNumber int, isPrimary bool) error
- func (ds *DataStore) AddENIIPv4Address(eniID string, ipv4 string) error
- func (ds *DataStore) AssignPodIPv4Address(k8sPod *k8sapi.K8SPodInfo) (string, int, error)
- func (ds *DataStore) DelENIIPv4Address(eniID string, ipv4 string) error
- func (ds *DataStore) DeleteENI(eni string) error
- func (ds *DataStore) FreeENI() (string, error)
- func (ds *DataStore) GetENIIPPools(eni string) (map[string]*AddressInfo, error)
- func (ds *DataStore) GetENIInfos() *ENIInfos
- func (ds *DataStore) GetENINeedsIP(maxIPperENI int64) *ENIIPPool
- func (ds *DataStore) GetENIs() int
- func (ds *DataStore) GetPodInfos() *map[string]PodIPInfo
- func (ds *DataStore) GetStats() (int, int)
- func (ds *DataStore) UnAssignPodIPv4Address(k8sPod *k8sapi.K8SPodInfo) (string, int, error)
- type ENIIPPool
- type ENIInfos
- type PodIPInfo
- type PodInfos
- type PodKey
Constants ¶
const ( // DuplicatedENIError is an error when caller tries to add an duplicate ENI to data store DuplicatedENIError = "data store: duplicate ENI" // DuplicateIPError is an error when caller tries to add an duplicate IP address to data store DuplicateIPError = "datastore: duplicated IP" // UnknownIPError is an error when caller tries to delele an IP which is unknown to data store UnknownIPError = "datastore: unknown IP" // IPInUseError is an error when caller tries to delete an IP where IP is still assigned to a Pod IPInUseError = "datastore: IP is used and can not be deleted" // ENIInUseError is an error when caller tries to delete an ENI where there are IP still assigned to a pod ENIInUseError = "datastore: ENI is used and can not be deleted" // UnknownENIError is an error when caller tries to access an ENI which is unknown to datastore UnknownENIError = "datastore: unknown ENI" )
Variables ¶
var ErrUnknownPod = errors.New("datastore: unknown pod")
ErrUnknownPod is an error when there is no pod in data store matching pod name, namespace, container id
var ErrUnknownPodIP = errors.New("datastore: pod using unknown IP address")
ErrUnknownPodIP is an error where pod's IP address is not found in data store
Functions ¶
This section is empty.
Types ¶
type AddressInfo ¶
type AddressInfo struct { Assigned bool // true if it is assigned to a pod // contains filtered or unexported fields }
AddressInfo contains inforation about an IP, Exported fields will be Marshaled for introspection.
type DataStore ¶
type DataStore struct {
// contains filtered or unexported fields
}
DataStore contains node level ENI/IP
func (*DataStore) AddENIIPv4Address ¶
AddENIIPv4Address add an IP of an ENI to data store
func (*DataStore) AssignPodIPv4Address ¶
AssignPodIPv4Address assigns an IPv4 address to pod It returns the assigned IPv4 address, device number, error
func (*DataStore) DelENIIPv4Address ¶
DelENIIPv4Address delete an IP of ENI from datastore
func (*DataStore) FreeENI ¶
FreeENI free a deletable ENI. It returns the name of ENI which is deleted out data store
func (*DataStore) GetENIIPPools ¶
func (ds *DataStore) GetENIIPPools(eni string) (map[string]*AddressInfo, error)
GetENIIPPools returns eni's IP address list
func (*DataStore) GetENIInfos ¶
GetENIInfos provides ENI IP information to introspection endpoint
func (*DataStore) GetENINeedsIP ¶
GetENINeedsIP finds out the eni in datastore which failed to get secondary IP address
func (*DataStore) GetPodInfos ¶
GetPodInfos provides pod IP information to introspection endpoint
func (*DataStore) GetStats ¶
GetStats returns statistics it returns total number of IP addresses, number of assigned IP addresses
func (*DataStore) UnAssignPodIPv4Address ¶
UnAssignPodIPv4Address a) find out the IP address based on PodName and PodNameSpace b) mark IP address as unassigned c) returns IP address, ENI's device number, error
type ENIIPPool ¶
type ENIIPPool struct { // IsPrimary indicates whether ENI is a primary ENI IsPrimary bool ID string // DeviceNumber is the device number of ENI DeviceNumber int // AssignedIPv4Addresses is the number of IP addesses already been assigned AssignedIPv4Addresses int // IPv4Addresses shows whether each address is assigned, the key is IP address, which must // be in dot-decimal notation with no leading zeros and no whitespace(eg: "10.1.0.253") IPv4Addresses map[string]*AddressInfo // contains filtered or unexported fields }
ENIIPPool contains ENI/IP Pool information. Exported fields will be Marshaled for introspection.
type ENIInfos ¶
type ENIInfos struct { // TotalIPs is the total number of IP addresses TotalIPs int // assigned is the number of IP addresses that has been assigned AssignedIPs int // ENIIPPools contains ENI IP pool information ENIIPPools map[string]ENIIPPool }
ENIInfos contains ENI IP information
type PodIPInfo ¶
type PodIPInfo struct { // IP is the IP address of pod IP string // DeviceNumber is the device number of pod DeviceNumber int }
PodIPInfo contains pod's IP and the device number of the ENI