Documentation
¶
Index ¶
Constants ¶
View Source
const ( // MaxAllocatableVlanIds is the maximum number of Vlan Ids that can be allocated per trunk. MaxAllocatableVlanIds = 121 // MaxDeleteRetries is the maximum number of times the ENI will be retried before being removed from the delete queue MaxDeleteRetries = 3 SubnetLabel = "subnet" SecurityGroupsLabel = "security_groups" )
Variables ¶
View Source
var ( InterfaceTypeTrunk = "trunk" TrunkEniDescription = "trunk-eni" BranchEniDescription = "branch-eni" )
View Source
var ErrCurrentlyAtMaxCapacity = fmt.Errorf("cannot create more branches at this point as used branches plus the " +
"delete queue is at max capacity")
Functions ¶
func PrometheusRegister ¶
func PrometheusRegister()
Types ¶
type ENIDetails ¶
type ENIDetails struct {
// BranchENId is the network interface id of the branch interface
ID string `json:"eniId"`
// MacAdd is the MAC address of the network interface
MACAdd string `json:"ifAddress"`
// IPv4 and/or IPv6 address assigned to the branch Network interface
IPV4Addr string `json:"privateIp"`
IPV6Addr string `json:"ipv6Addr"`
// VlanId is the VlanId of the branch network interface
VlanID int `json:"vlanId"`
// SubnetCIDR is the CIDR block of the subnet
SubnetCIDR string `json:"subnetCidr"`
SubnetV6CIDR string `json:"subnetV6Cidr"`
// ID of association between branch and trunk ENI
AssociationID string `json:"associationID"`
// contains filtered or unexported fields
}
PodENI is a json convertible structure that stores the Branch ENI details that can be used by the CNI plugin or the component consuming the resource
type IntrospectResponse ¶ added in v1.1.0
type IntrospectResponse struct {
TrunkENIID string
InstanceID string
PodToBranchENI map[string][]ENIDetails
DeleteQueue []ENIDetails
}
type IntrospectSummaryResponse ¶ added in v1.3.0
type TrunkENI ¶
type TrunkENI interface {
// InitTrunk initializes trunk interface
InitTrunk(instance ec2.EC2Instance, pods []v1.Pod) error
// CreateAndAssociateBranchENIs creates and associate branch interface/s to trunk interface
CreateAndAssociateBranchENIs(pod *v1.Pod, securityGroups []string, eniCount int) ([]*ENIDetails, error)
// PushBranchENIsToCoolDownQueue pushes the branch interface belonging to the pod to the cool down queue
PushBranchENIsToCoolDownQueue(UID string)
// DeleteCooledDownENIs deletes the interfaces that have been sitting in the queue for cool down period
DeleteCooledDownENIs()
// Reconcile compares the cache state with the list of pods to identify events that were missed and clean up the dangling interfaces
Reconcile(pods []v1.Pod) bool
// PushENIsToFrontOfDeleteQueue pushes the eni network interfaces to the front of the delete queue
PushENIsToFrontOfDeleteQueue(*v1.Pod, []*ENIDetails)
// Introspect returns the state of the Trunk ENI
Introspect() IntrospectResponse
}
func NewTrunkENI ¶
func NewTrunkENI(logger logr.Logger, instance ec2.EC2Instance, helper api.EC2APIHelper) TrunkENI
NewTrunkENI returns a new Trunk ENI interface.
Click to show internal directories.
Click to hide internal directories.