client

package
v1.9.10 Latest Latest
Warning

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

Go to latest
Published: Nov 14, 2024 License: Apache-2.0 Imports: 30 Imported by: 0

Documentation

Index

Constants

View Source
const (
	LogFieldAPI              = "api"
	LogFieldRequestID        = "requestID"
	LogFieldInstanceID       = "instanceID"
	LogFieldSecondaryIPCount = "secondaryIPCount"
	LogFieldENIID            = "eni"
	LogFieldIPs              = "ips"
	LogFieldEIPID            = "eip"
	LogFieldPrivateIP        = "privateIP"
	LogFieldVSwitchID        = "vSwitchID"
	LogFieldSgID             = "securityGroupID"
	LogFieldResourceGroupID  = "resourceGroupID"
)

log fields

View Source
const (
	ENIStatusInUse     string = "InUse"
	ENIStatusAvailable string = "Available"
	ENIStatusAttaching string = "Attaching"
	ENIStatusDetaching string = "Detaching"
	ENIStatusDeleting  string = "Deleting"
)

status for eni

View Source
const (
	ENITypePrimary   string = "Primary"
	ENITypeSecondary string = "Secondary"
	ENITypeTrunk     string = "Trunk"
	ENITypeMember    string = "Member"
)
View Source
const (
	ENITrafficModeRDMA     string = "HighPerformance"
	ENITrafficModeStandard string = "Standard"
)
View Source
const EIPInstanceTypeNetworkInterface = "NetworkInterface"

Variables

View Source
var ErrInvalidArgs = errors.New("invalid args")
View Source
var LimitProviders = map[string]LimitProvider{}

Functions

func LogFields added in v1.8.4

func LogFields(l logr.Logger, obj any) logr.Logger

LogFields function enhances the provided logger with key-value pairs extracted from the fields of the given object.

Parameters: l - The original logr.Logger instance to be augmented with object field information. obj - An arbitrary object whose fields will be inspected for logging. Must be of a struct type.

Return Value: Returns an updated logr.Logger instance that includes key-value pairs for non-empty, non-zero fields of the input object. The original logger `l` is modified in place, and the returned logger is a reference to the same instance.

Types

type AssignIPv6AddressesOption added in v1.8.4

type AssignIPv6AddressesOption interface {
	ApplyAssignIPv6Addresses(*AssignIPv6AddressesOptions)
}

type AssignIPv6AddressesOptions added in v1.8.4

type AssignIPv6AddressesOptions struct {
	NetworkInterfaceOptions *NetworkInterfaceOptions
	Backoff                 *wait.Backoff
}

func (*AssignIPv6AddressesOptions) ApplyAssignIPv6Addresses added in v1.8.4

func (c *AssignIPv6AddressesOptions) ApplyAssignIPv6Addresses(options *AssignIPv6AddressesOptions)

func (*AssignIPv6AddressesOptions) Finish added in v1.8.4

func (c *AssignIPv6AddressesOptions) Finish(idempotentKeyGen IdempotentKeyGen) (*ecs.AssignIpv6AddressesRequest, func(), error)

type AssignPrivateIPAddressOption added in v1.8.4

type AssignPrivateIPAddressOption interface {
	ApplyAssignPrivateIPAddress(*AssignPrivateIPAddressOptions)
}

type AssignPrivateIPAddressOptions added in v1.8.4

type AssignPrivateIPAddressOptions struct {
	NetworkInterfaceOptions *NetworkInterfaceOptions
	Backoff                 *wait.Backoff
}

func (*AssignPrivateIPAddressOptions) ApplyAssignPrivateIPAddress added in v1.8.4

func (c *AssignPrivateIPAddressOptions) ApplyAssignPrivateIPAddress(options *AssignPrivateIPAddressOptions)

func (*AssignPrivateIPAddressOptions) Finish added in v1.8.4

type CreateNetworkInterfaceOption added in v1.8.4

type CreateNetworkInterfaceOption interface {
	ApplyCreateNetworkInterface(*CreateNetworkInterfaceOptions)
}

type CreateNetworkInterfaceOptions added in v1.8.4

type CreateNetworkInterfaceOptions struct {
	NetworkInterfaceOptions *NetworkInterfaceOptions
	Backoff                 *wait.Backoff
}

func (*CreateNetworkInterfaceOptions) ApplyCreateNetworkInterface added in v1.8.4

func (c *CreateNetworkInterfaceOptions) ApplyCreateNetworkInterface(options *CreateNetworkInterfaceOptions)

func (*CreateNetworkInterfaceOptions) Finish added in v1.8.4

type ECSLimitProvider added in v1.9.6

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

func NewECSLimitProvider added in v1.9.6

func NewECSLimitProvider() *ECSLimitProvider

func (*ECSLimitProvider) GetLimit added in v1.9.6

func (d *ECSLimitProvider) GetLimit(client interface{}, instanceType string) (*Limits, error)

func (*ECSLimitProvider) GetLimitFromAnno added in v1.9.6

func (d *ECSLimitProvider) GetLimitFromAnno(anno map[string]string) (*Limits, error)

type EFLO added in v1.8.0

type EFLO interface {
	GetNodeInfoForPod(ctx context.Context, nodeID string) (*eflo.Content, error)
}

type EfloLimitProvider added in v1.9.6

type EfloLimitProvider struct{}

func NewEfloLimitProvider added in v1.9.6

func NewEfloLimitProvider() *EfloLimitProvider

func (*EfloLimitProvider) GetLimit added in v1.9.6

func (e *EfloLimitProvider) GetLimit(client interface{}, instanceType string) (*Limits, error)

func (*EfloLimitProvider) GetLimitFromAnno added in v1.9.6

func (e *EfloLimitProvider) GetLimitFromAnno(anno map[string]string) (*Limits, error)

type IdempotentKeyGen added in v1.8.4

type IdempotentKeyGen interface {
	GenerateKey(paramHash string) string
	PutBack(paramHash string, uuid string)
}

type LimitProvider added in v1.9.6

type LimitProvider interface {
	GetLimit(client interface{}, instanceType string) (*Limits, error)
	GetLimitFromAnno(anno map[string]string) (*Limits, error)
}

type Limits added in v1.8.0

type Limits struct {
	InstanceTypeID string

	// Adapters specifies the maximum number of interfaces that can be
	// attached to the instance
	Adapters int

	// TotalAdapters maximum number of interfaces that can be
	// attached to the instance
	TotalAdapters int

	// IPv4PerAdapter is the maximum number of ipv4 addresses per adapter/interface
	IPv4PerAdapter int

	// IPv6PerAdapter is the maximum number of ipv6 addresses per adapter/interface
	IPv6PerAdapter int

	// MemberAdapterLimit is the number interfaces that type is member
	MemberAdapterLimit int

	// MaxMemberAdapterLimit is the limit to use member
	MaxMemberAdapterLimit int

	// ERdmaAdapters specifies the maximum number of erdma interfaces
	ERdmaAdapters int

	InstanceBandwidthRx int

	InstanceBandwidthTx int
}

Limits specifies the IPAM relevant instance limits

func (*Limits) ERDMARes added in v1.8.0

func (l *Limits) ERDMARes() int

func (*Limits) ExclusiveENIPod added in v1.8.0

func (l *Limits) ExclusiveENIPod() int

func (*Limits) MaximumTrunkPod added in v1.8.0

func (l *Limits) MaximumTrunkPod() int

func (*Limits) MultiIPPod added in v1.8.0

func (l *Limits) MultiIPPod() int

func (*Limits) SupportIPv6 added in v1.8.0

func (l *Limits) SupportIPv6() bool

func (*Limits) SupportMultiIPIPv6 added in v1.8.0

func (l *Limits) SupportMultiIPIPv6() bool

func (*Limits) TrunkPod added in v1.8.0

func (l *Limits) TrunkPod() int

type NetworkInterface added in v1.4.1

type NetworkInterface struct {
	Status             string             `json:"status,omitempty"`
	MacAddress         string             `json:"mac_address,omitempty"`
	NetworkInterfaceID string             `json:"network_interface_id,omitempty"`
	VSwitchID          string             `json:"v_switch_id,omitempty"`
	PrivateIPAddress   string             `json:"private_ip_address,omitempty"`
	PrivateIPSets      []ecs.PrivateIpSet `json:"private_ip_sets"`
	ZoneID             string             `json:"zone_id,omitempty"`
	SecurityGroupIDs   []string           `json:"security_group_ids,omitempty"`
	ResourceGroupID    string             `json:"resource_group_id,omitempty"`
	IPv6Set            []ecs.Ipv6Set      `json:"ipv6_set,omitempty"`
	Tags               []ecs.Tag          `json:"tags,omitempty"`

	// fields for DescribeNetworkInterface
	Type                        string `json:"type,omitempty"`
	InstanceID                  string `json:"instance_id,omitempty"`
	TrunkNetworkInterfaceID     string `json:"trunk_network_interface_id,omitempty"`
	NetworkInterfaceTrafficMode string `json:"network_interface_traffic_mode"`
	DeviceIndex                 int    `json:"device_index,omitempty"`
	CreationTime                string `json:"creation_time,omitempty"`
}

NetworkInterface openAPI result for ecs.CreateNetworkInterfaceResponse and ecs.NetworkInterfaceSet

func FromCreateResp added in v1.4.1

func FromDescribeResp added in v1.4.1

func FromDescribeResp(in *ecs.NetworkInterfaceSet) *NetworkInterface

type NetworkInterfaceOptions added in v1.8.4

type NetworkInterfaceOptions struct {
	Trunk                 bool
	ERDMA                 bool
	VSwitchID             string
	SecurityGroupIDs      []string
	ResourceGroupID       string
	IPCount               int
	IPv6Count             int
	Tags                  map[string]string
	InstanceID            string
	InstanceType          string
	Status                string
	NetworkInterfaceID    string
	DeleteENIOnECSRelease *bool
}

NetworkInterfaceOptions represents the common options for network interface operations.

type OpenAPI

type OpenAPI struct {
	ClientSet        credential.Client
	IdempotentKeyGen IdempotentKeyGen

	ReadOnlyRateLimiter flowcontrol.RateLimiter
	MutatingRateLimiter flowcontrol.RateLimiter

	Tracer trace.Tracer
}

func New

func New(c credential.Client, readOnly, mutating flowcontrol.RateLimiter) (*OpenAPI, error)

func (*OpenAPI) AssignIpv6Addresses

func (a *OpenAPI) AssignIpv6Addresses(ctx context.Context, opts ...AssignIPv6AddressesOption) ([]netip.Addr, error)

AssignIpv6Addresses assign ipv6 address

func (*OpenAPI) AssignLeniPrivateIPAddress added in v1.8.0

func (a *OpenAPI) AssignLeniPrivateIPAddress(ctx context.Context, eniID, prefer string) (string, error)

func (*OpenAPI) AssignPrivateIPAddress

func (a *OpenAPI) AssignPrivateIPAddress(ctx context.Context, opts ...AssignPrivateIPAddressOption) ([]netip.Addr, error)

func (*OpenAPI) AttachNetworkInterface

func (a *OpenAPI) AttachNetworkInterface(ctx context.Context, eniID, instanceID, trunkENIID string) error

AttachNetworkInterface attach eni

func (*OpenAPI) CreateElasticNetworkInterface added in v1.8.0

func (a *OpenAPI) CreateElasticNetworkInterface(zoneID, nodeID, vSwitchID, securityGroupID string) (string, string, error)

func (*OpenAPI) CreateNetworkInterface

func (a *OpenAPI) CreateNetworkInterface(ctx context.Context, opts ...CreateNetworkInterfaceOption) (*NetworkInterface, error)

func (*OpenAPI) DeleteElasticNetworkInterface added in v1.8.0

func (a *OpenAPI) DeleteElasticNetworkInterface(ctx context.Context, eniID string) error

func (*OpenAPI) DeleteNetworkInterface

func (a *OpenAPI) DeleteNetworkInterface(ctx context.Context, eniID string) error

DeleteNetworkInterface del eni by id

func (*OpenAPI) DescribeInstanceTypes added in v1.3.0

func (a *OpenAPI) DescribeInstanceTypes(ctx context.Context, types []string) ([]ecs.InstanceType, error)

func (*OpenAPI) DescribeNetworkInterface

func (a *OpenAPI) DescribeNetworkInterface(ctx context.Context, vpcID string, eniID []string, instanceID string, instanceType string, status string, tags map[string]string) ([]*NetworkInterface, error)

DescribeNetworkInterface list eni

func (*OpenAPI) DetachNetworkInterface

func (a *OpenAPI) DetachNetworkInterface(ctx context.Context, eniID, instanceID, trunkENIID string) error

DetachNetworkInterface detach eni

func (*OpenAPI) GetElasticNetworkInterface added in v1.8.0

func (a *OpenAPI) GetElasticNetworkInterface(eniID string) (*eflo.Content, error)

func (*OpenAPI) GetNodeInfoForPod added in v1.8.0

func (a *OpenAPI) GetNodeInfoForPod(ctx context.Context, nodeID string) (*eflo.Content, error)

func (*OpenAPI) ListElasticNetworkInterfaces added in v1.8.0

func (a *OpenAPI) ListElasticNetworkInterfaces(ctx context.Context, zoneID, nodeID, eniID string) (*eflo.Content, error)

func (*OpenAPI) ListLeniPrivateIPAddresses added in v1.8.0

func (a *OpenAPI) ListLeniPrivateIPAddresses(ctx context.Context, eniID, ipName, ipAddress string) (*eflo.Content, error)

func (*OpenAPI) ModifyNetworkInterfaceAttribute added in v1.4.1

func (a *OpenAPI) ModifyNetworkInterfaceAttribute(ctx context.Context, eniID string, securityGroupIDs []string) error

func (*OpenAPI) UnAssignIpv6Addresses

func (a *OpenAPI) UnAssignIpv6Addresses(ctx context.Context, eniID string, ips []netip.Addr) error

UnAssignIpv6Addresses remove ip from eni return ok if 1. eni is released 2. ip is already released 3. release success

func (*OpenAPI) UnAssignPrivateIPAddresses

func (a *OpenAPI) UnAssignPrivateIPAddresses(ctx context.Context, eniID string, ips []netip.Addr) error

UnAssignPrivateIPAddresses remove ip from eni return ok if 1. eni is released 2. ip is already released 3. release success for primaryIP err is InvalidIp.IpUnassigned

func (*OpenAPI) UnassignLeniPrivateIPAddress added in v1.8.0

func (a *OpenAPI) UnassignLeniPrivateIPAddress(ctx context.Context, eniID, ipName string) error

func (*OpenAPI) WaitForNetworkInterface

func (a *OpenAPI) WaitForNetworkInterface(ctx context.Context, eniID string, status string, backoff wait.Backoff, ignoreNotExist bool) (*NetworkInterface, error)

WaitForNetworkInterface wait status of eni

type SimpleIdempotentKeyGenerator added in v1.8.4

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

SimpleIdempotentKeyGenerator implements the generation and management of idempotency keys.

func NewIdempotentKeyGenerator added in v1.8.4

func NewIdempotentKeyGenerator() *SimpleIdempotentKeyGenerator

func (*SimpleIdempotentKeyGenerator) GenerateKey added in v1.8.4

func (g *SimpleIdempotentKeyGenerator) GenerateKey(paramHash string) string

GenerateKey generates an idempotency key based on the given parameter hash. multiple key is supported

func (*SimpleIdempotentKeyGenerator) PutBack added in v1.8.4

func (g *SimpleIdempotentKeyGenerator) PutBack(paramHash string, uuid string)

PutBack adds the specified idempotency key back into the cache for reuse, associating it with the given parameter hash.

type VPC added in v1.8.0

type VPC interface {
	DescribeVSwitchByID(ctx context.Context, vSwitchID string) (*vpc.VSwitch, error)
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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