eni

package
v1.14.0-snapshot.1 Latest Latest
Warning

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

Go to latest
Published: Apr 3, 2023 License: Apache-2.0 Imports: 16 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AlibabaCloudAPI

type AlibabaCloudAPI interface {
	GetInstances(ctx context.Context, vpcs ipamTypes.VirtualNetworkMap, subnets ipamTypes.SubnetMap) (*ipamTypes.InstanceMap, error)
	GetVSwitches(ctx context.Context) (ipamTypes.SubnetMap, error)
	GetVPC(ctx context.Context, vpcID string) (*ipamTypes.VirtualNetwork, error)
	GetVPCs(ctx context.Context) (ipamTypes.VirtualNetworkMap, error)
	GetSecurityGroups(ctx context.Context) (types.SecurityGroupMap, error)
	CreateNetworkInterface(ctx context.Context, secondaryPrivateIPCount int, vSwitchID string, groups []string, tags map[string]string) (string, *eniTypes.ENI, error)
	AttachNetworkInterface(ctx context.Context, instanceID, eniID string) error
	WaitENIAttached(ctx context.Context, eniID string) (string, error)
	DeleteNetworkInterface(ctx context.Context, eniID string) error
	AssignPrivateIPAddresses(ctx context.Context, eniID string, toAllocate int) ([]string, error)
	UnassignPrivateIPAddresses(ctx context.Context, eniID string, addresses []string) error
}

AlibabaCloudAPI is the API surface used of the ECS API

type InstancesManager

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

InstancesManager maintains the list of instances. It must be kept up to date by calling resync() regularly.

func NewInstancesManager

func NewInstancesManager(api AlibabaCloudAPI) *InstancesManager

NewInstancesManager returns a new instances manager

func (*InstancesManager) CreateNode

func (m *InstancesManager) CreateNode(obj *v2.CiliumNode, node *ipam.Node) ipam.NodeOperations

CreateNode

func (*InstancesManager) DeleteInstance

func (m *InstancesManager) DeleteInstance(instanceID string)

DeleteInstance delete instance from m.instances

func (*InstancesManager) FindOneVSwitch

func (m *InstancesManager) FindOneVSwitch(spec eniTypes.Spec, toAllocate int) *ipamTypes.Subnet

FindOneVSwitch returns the vSwitch with the fewest available addresses, matching vpc and az. If we have explicit ID or tag constraints, chose a matching vSwitch. ID constraints take precedence.

func (*InstancesManager) FindSecurityGroupByTags

func (m *InstancesManager) FindSecurityGroupByTags(vpcID string, required ipamTypes.Tags) []*types.SecurityGroup

FindSecurityGroupByTags returns the security groups matching VPC ID and all required tags The returned security groups slice is immutable so it can be safely accessed

func (*InstancesManager) FindVSwitchByIDs

func (m *InstancesManager) FindVSwitchByIDs(spec eniTypes.Spec, toAllocate int) *ipamTypes.Subnet

FindVSwitchByIDs returns the vSwitch within a provided list of vSwitch IDs with the fewest available addresses, matching vpc and az.

func (*InstancesManager) ForeachInstance

func (m *InstancesManager) ForeachInstance(instanceID string, fn ipamTypes.InterfaceIterator)

ForeachInstance will iterate over each instance inside `instances`, and call `fn`. This function is read-locked for the entire execution.

func (*InstancesManager) GetPoolQuota

func (m *InstancesManager) GetPoolQuota() ipamTypes.PoolQuotaMap

GetPoolQuota returns the number of available IPs in all IP pools

func (*InstancesManager) GetVSwitch

func (m *InstancesManager) GetVSwitch(id string) *ipamTypes.Subnet

GetVSwitch return vSwitch by id

func (*InstancesManager) GetVSwitches

func (m *InstancesManager) GetVSwitches() ipamTypes.SubnetMap

GetVSwitches returns all the tracked vSwitches The returned subnetMap is immutable so it can be safely accessed

func (*InstancesManager) HasInstance

func (m *InstancesManager) HasInstance(instanceID string) bool

HasInstance returns whether the instance is in instances

func (*InstancesManager) Resync

func (m *InstancesManager) Resync(ctx context.Context) time.Time

Resync fetches the list of ECS instances and vSwitches and updates the local cache in the instanceManager. It returns the time when the resync has started or time.Time{} if it did not complete.

func (*InstancesManager) UpdateENI

func (m *InstancesManager) UpdateENI(instanceID string, eni *eniTypes.ENI)

UpdateENI updates the ENI definition of an ENI for a particular instance. If the ENI is already known, the definition is updated, otherwise the ENI is added to the instance.

type Node

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

func (*Node) AllocateIPs

func (n *Node) AllocateIPs(ctx context.Context, a *ipam.AllocationAction) error

AllocateIPs performs the ENI allocation operation

func (*Node) CreateInterface

func (n *Node) CreateInterface(ctx context.Context, allocation *ipam.AllocationAction, scopedLog *logrus.Entry) (int, string, error)

CreateInterface creates an additional interface with the instance and attaches it to the instance as specified by the CiliumNode. neededAddresses of secondary IPs are assigned to the interface up to the maximum number of addresses as allowed by the instance.

func (*Node) GetMaximumAllocatableIPv4

func (n *Node) GetMaximumAllocatableIPv4() int

GetMaximumAllocatableIPv4 returns the maximum amount of IPv4 addresses that can be allocated to the instance

func (*Node) GetMinimumAllocatableIPv4

func (n *Node) GetMinimumAllocatableIPv4() int

GetMinimumAllocatableIPv4 returns the minimum amount of IPv4 addresses that must be allocated to the instance.

func (*Node) GetUsedIPWithPrefixes

func (n *Node) GetUsedIPWithPrefixes() int

func (*Node) IsPrefixDelegated

func (n *Node) IsPrefixDelegated() bool

func (*Node) PopulateStatusFields

func (n *Node) PopulateStatusFields(resource *v2.CiliumNode)

PopulateStatusFields fills in the status field of the CiliumNode custom resource with ENI specific information

func (*Node) PrepareIPAllocation

func (n *Node) PrepareIPAllocation(scopedLog *logrus.Entry) (*ipam.AllocationAction, error)

PrepareIPAllocation returns the number of ENI IPs and interfaces that can be allocated/created.

func (*Node) PrepareIPRelease

func (n *Node) PrepareIPRelease(excessIPs int, scopedLog *logrus.Entry) *ipam.ReleaseAction

PrepareIPRelease prepares the release of ENI IPs.

func (*Node) ReleaseIPs

func (n *Node) ReleaseIPs(ctx context.Context, r *ipam.ReleaseAction) error

ReleaseIPs performs the ENI IP release operation

func (*Node) ResyncInterfacesAndIPs

func (n *Node) ResyncInterfacesAndIPs(ctx context.Context, scopedLog *logrus.Entry) (available ipamTypes.AllocationMap, remainAvailableENIsCount int, err error)

ResyncInterfacesAndIPs is called to retrieve and ENIs and IPs as known to the AlibabaCloud API and return them

func (*Node) UpdatedNode

func (n *Node) UpdatedNode(obj *v2.CiliumNode)

UpdatedNode is called when an update to the CiliumNode is received.

Directories

Path Synopsis
Package types provides Alibaba Cloud specific types
Package types provides Alibaba Cloud specific types

Jump to

Keyboard shortcuts

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