Skip to content

Commit 8745bd1

Browse files
authored
Merge pull request #310 from l1b0k/feature/improve
improve controlplane
2 parents 36b40e6 + d30863d commit 8745bd1

File tree

24 files changed

+258
-179
lines changed

24 files changed

+258
-179
lines changed

Dockerfile

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ ARG CILIUM_LLVM_IMAGE=quay.io/cilium/cilium-llvm:0147a23fdada32bd51b4f313c645bcb
22
ARG CILIUM_BPFTOOL_IMAGE=quay.io/cilium/cilium-bpftool:b5ba881d2a7ec68d88ecd72efd60ac551c720701@sha256:458282e59657b8f779d52ae2be2cdbeecfe68c3d807ff87c97c8d5c6f97820a9
33
ARG CILIUM_IPROUTE2_IMAGE=quay.io/cilium/cilium-iproute2:4db2c4bdf00ce461406e1c82aada461356fac935@sha256:e4c9ba92996a07964c1b7cd97c4aac950754ec75d7ac8c626a99c79acd0479ab
44

5-
FROM ${CILIUM_LLVM_IMAGE} as llvm-dist
6-
FROM ${CILIUM_BPFTOOL_IMAGE} as bpftool-dist
7-
FROM ${CILIUM_IPROUTE2_IMAGE} as iproute2-dist
5+
FROM --platform=$BUILDPLATFORM ${CILIUM_LLVM_IMAGE} as llvm-dist
6+
FROM --platform=$BUILDPLATFORM ${CILIUM_BPFTOOL_IMAGE} as bpftool-dist
7+
FROM --platform=$BUILDPLATFORM ${CILIUM_IPROUTE2_IMAGE} as iproute2-dist
88

9-
FROM golang:1.17.2 as builder
9+
FROM --platform=$BUILDPLATFORM golang:1.17.2 as builder
1010
ARG GOPROXY
1111
ENV GOPROXY $GOPROXY
1212
WORKDIR /go/src/github.com/AliyunContainerService/terway/
@@ -22,7 +22,7 @@ RUN cd cmd/terway && CGO_ENABLED=0 GOOS=linux go build -tags default_build \
2222
RUN cd plugin/terway && CGO_ENABLED=0 GOOS=linux go build -o terway .
2323
RUN cd cmd/terway-cli && CGO_ENABLED=0 GOOS=linux go build -o terway-cli .
2424

25-
FROM calico/go-build:v0.57 as felix-builder
25+
FROM --platform=$BUILDPLATFORM calico/go-build:v0.57 as felix-builder
2626
ARG GOPROXY
2727
ENV GOPROXY $GOPROXY
2828
ENV GIT_BRANCH=v3.20.2
@@ -44,7 +44,7 @@ RUN cd /go/src/github.com/projectcalico/felix && \
4444
( echo "Error: bin/calico-felix was not statically linked"; false ) ) \
4545
&& chmod +x /go/src/github.com/projectcalico/felix/bin/calico-felix
4646

47-
FROM quay.io/cilium/cilium-builder:6ad397fc5d0e2ccba203d5c0fe5a4f0a08f6fb5a@sha256:d760b821c46ce41361a2d54386b12fd9831fbc0ba36539b86604706dd68f05d1 as cilium-builder
47+
FROM --platform=$BUILDPLATFORM quay.io/cilium/cilium-builder:6ad397fc5d0e2ccba203d5c0fe5a4f0a08f6fb5a@sha256:d760b821c46ce41361a2d54386b12fd9831fbc0ba36539b86604706dd68f05d1 as cilium-builder
4848
ARG GOPROXY
4949
ENV GOPROXY $GOPROXY
5050
ARG CILIUM_SHA=""
@@ -71,7 +71,7 @@ RUN cd cilium && make NOSTRIP=$NOSTRIP LOCKDEBUG=$LOCKDEBUG PKG_BUILD=1 V=$V LIB
7171
SKIP_DOCS=true DESTDIR=/tmp/install clean-container build-container install-container
7272
RUN cp /tmp/install/opt/cni/bin/cilium-cni /tmp/install/usr/bin/
7373

74-
FROM ubuntu:20.04
74+
FROM --platform=$BUILDPLATFORM ubuntu:20.04
7575
RUN apt-get update && apt-get install -y kmod libelf1 libmnl0 iptables nftables kmod curl ipset bash ethtool bridge-utils socat grep findutils jq conntrack iputils-ping && \
7676
apt-get purge --auto-remove && apt-get clean && rm -rf /var/lib/apt/lists/*
7777
COPY --from=llvm-dist /usr/local/bin/clang /usr/local/bin/llc /bin/

Dockerfile.controlplane

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM golang:1.17.2 as builder
1+
FROM --platform=$BUILDPLATFORM golang:1.17.2 as builder
22
ARG GOPROXY
33
ENV GOPROXY $GOPROXY
44
WORKDIR /go/src/github.com/AliyunContainerService/terway/
@@ -12,7 +12,7 @@ RUN CGO_ENABLED=0 GOOS=linux go build -tags default_build \
1212
-X \"k8s.io/client-go/pkg/version.buildDate=`date -u +'%Y-%m-%dT%H:%M:%SZ'`\"" \
1313
-o terway-controlplane cmd/terway-controlplane/terway-controlplane.go
1414

15-
FROM ubuntu:20.04
15+
FROM --platform=$BUILDPLATFORM ubuntu:20.04
1616
RUN apt-get update && apt-get install -y curl jq && \
1717
apt-get purge --auto-remove && apt-get clean && rm -rf /var/lib/apt/lists/*
1818
COPY --from=builder /go/src/github.com/AliyunContainerService/terway/terway-controlplane /usr/bin/terway-controlplane

daemon/daemon.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616

1717
"github.com/AliyunContainerService/terway/pkg/aliyun"
1818
podENITypes "github.com/AliyunContainerService/terway/pkg/apis/network.alibabacloud.com/v1beta1"
19+
"github.com/AliyunContainerService/terway/pkg/backoff"
1920
terwayIP "github.com/AliyunContainerService/terway/pkg/ip"
2021
"github.com/AliyunContainerService/terway/pkg/ipam"
2122
"github.com/AliyunContainerService/terway/pkg/link"
@@ -1293,6 +1294,8 @@ func newNetworkService(configFilePath, kubeconfig, master, daemonMode string) (r
12931294
return nil, fmt.Errorf("failed parse config: %v", err)
12941295
}
12951296

1297+
backoff.OverrideBackoff(config.BackoffOverride)
1298+
12961299
if len(dynamicCfg) == 0 {
12971300
serviceLog.Infof("got config: %+v from: %+v", config, configFilePath)
12981301
} else {

daemon/k8s.go

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414

1515
"github.com/AliyunContainerService/terway/deviceplugin"
1616
podENITypes "github.com/AliyunContainerService/terway/pkg/apis/network.alibabacloud.com/v1beta1"
17+
"github.com/AliyunContainerService/terway/pkg/backoff"
1718
"github.com/AliyunContainerService/terway/pkg/generated/clientset/versioned/typed/network.alibabacloud.com/v1beta1"
1819
"github.com/AliyunContainerService/terway/pkg/storage"
1920
"github.com/AliyunContainerService/terway/pkg/tracing"
@@ -179,12 +180,7 @@ func (k *k8s) PatchEipInfo(info *types.PodInfo) error {
179180
}
180181

181182
func (k *k8s) WaitPodENIInfo(info *types.PodInfo) (podEni *podENITypes.PodENI, err error) {
182-
err = wait.ExponentialBackoff(wait.Backoff{
183-
Duration: time.Second * 5,
184-
Factor: 2,
185-
Jitter: 0.3,
186-
Steps: 3,
187-
}, func() (bool, error) {
183+
err = wait.ExponentialBackoff(backoff.Backoff(backoff.WaitPodENIStatus), func() (bool, error) {
188184
podEni, err = k.podEniClient.PodENIs(info.Namespace).Get(context.TODO(), info.Name, metav1.GetOptions{
189185
ResourceVersion: "0",
190186
})
@@ -205,12 +201,7 @@ func (k *k8s) WaitPodENIInfo(info *types.PodInfo) (podEni *podENITypes.PodENI, e
205201
}
206202

207203
func (k *k8s) GetPodENIInfo(info *types.PodInfo) (podEni *podENITypes.PodENI, err error) {
208-
err = wait.ExponentialBackoff(wait.Backoff{
209-
Duration: time.Second * 1,
210-
Factor: 2,
211-
Jitter: 0.3,
212-
Steps: 3,
213-
}, func() (bool, error) {
204+
err = wait.ExponentialBackoff(backoff.Backoff(backoff.WaitPodENIStatus), func() (bool, error) {
214205
podEni, err = k.podEniClient.PodENIs(info.Namespace).Get(context.TODO(), info.Name, metav1.GetOptions{
215206
ResourceVersion: "0",
216207
})

docs/terway-trunk.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ spec:
105105
namespaceSelector:
106106
matchLabels:
107107
foo: bar
108-
vSwitchIDs:
108+
vSwitchOptions:
109109
- vsw-aaa
110110
securityGroupIDs:
111111
- sg-aaa
@@ -122,12 +122,12 @@ spec:
122122
- selector: 用于配置标签选择器,同时配置 podSelector、namespaceSelector 时,将全部生效
123123
- podSelector: 用来匹配 pod 的 labels
124124
- namespaceSelector: 用来匹配 namespace 的 labels
125-
- vSwitchIDs: 用于配置 Pod 使用的 vSwitch。多个vSwitchID 之间为或关系。Pod 仅能使用一个 vSwitch ,terway 将根据配置顺序、vSwitch region 选择一个 vSwitch
125+
- vSwitchOptions: 用于配置 Pod 使用的 vSwitch。多个vSwitchID 之间为或关系。Pod 仅能使用一个 vSwitch ,terway 将根据配置顺序、vSwitch region 选择一个 vSwitch
126126
- securityGroupIDs: 可配置多个安全组 ID,配置多个安全组时将同时生效。安全组数量小于等于 5个
127127

128128
> 请确保 Pod 可以被唯一的 PodNetworking 配置匹配,避免歧义
129129
>
130-
> 我们强烈建议用户主动配置 vSwitchIDs、securityGroupIDs 字段,如果不配置,则使用 kube-system/eni-config 中的默认值
130+
> 我们强烈建议用户主动配置 vSwitchOptions、securityGroupIDs 字段,如果不配置,则使用 kube-system/eni-config 中的默认值
131131

132132
创建PodNetworking 后,controller 会对 PodNetworking 进行同步,当同步完成 PodNetworking 中 Status 会标记状态 `Ready`
133133

@@ -193,7 +193,7 @@ spec:
193193
matchLabels:
194194
kind: front
195195
app: nginx
196-
vSwitchIDs:
196+
vSwitchOptions:
197197
- vsw-bp1s5grzef87ikb5zz1px
198198
- vsw-bp1sx0zhxd6bw6vpt0hbl
199199
securityGroupIDs:

go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ require (
2121
github.com/stretchr/testify v1.7.0
2222
github.com/vishvananda/netlink v1.1.1-0.20210510164352-d17758a128bf
2323
golang.org/x/net v0.0.0-20210504132125-bbd867fde50d
24+
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c
2425
golang.org/x/sys v0.0.0-20211013075003-97ac67df715c
2526
gomodules.xyz/jsonpatch/v2 v2.1.0
2627
google.golang.org/grpc v1.38.0

go.sum

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1068,6 +1068,7 @@ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJ
10681068
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
10691069
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
10701070
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
1071+
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ=
10711072
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
10721073
golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
10731074
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=

pkg/aliyun/aliyun.go

Lines changed: 16 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"time"
1010

1111
apiErr "github.com/AliyunContainerService/terway/pkg/aliyun/errors"
12+
"github.com/AliyunContainerService/terway/pkg/backoff"
1213
"github.com/AliyunContainerService/terway/pkg/ip"
1314
"github.com/AliyunContainerService/terway/pkg/ipam"
1415
"github.com/AliyunContainerService/terway/pkg/logger"
@@ -87,7 +88,7 @@ func (e *Impl) AllocateENI(ctx context.Context, vSwitch string, securityGroups [
8788
}()
8889

8990
var innerErr error
90-
err = wait.ExponentialBackoffWithContext(ctx, ENIOpBackoff, func() (bool, error) {
91+
err = wait.ExponentialBackoffWithContext(ctx, backoff.Backoff(backoff.WaitENIStatus), func() (bool, error) {
9192
innerErr = e.AttachNetworkInterface(ctx, resp.NetworkInterfaceId, instanceID, "")
9293
if innerErr != nil {
9394
return false, nil
@@ -105,8 +106,8 @@ func (e *Impl) AllocateENI(ctx context.Context, vSwitch string, securityGroups [
105106

106107
start := time.Now()
107108
// bind status is async api, sleep for first bind status inspect
108-
time.Sleep(eniStateBackoff.Duration)
109-
eniStatus, err := e.WaitForNetworkInterface(ctx, resp.NetworkInterfaceId, ENIStatusInUse, eniStateBackoff, false)
109+
time.Sleep(backoff.Backoff(backoff.WaitENIStatus).Duration)
110+
eniStatus, err := e.WaitForNetworkInterface(ctx, resp.NetworkInterfaceId, ENIStatusInUse, backoff.Backoff(backoff.WaitENIStatus), false)
110111
metric.OpenAPILatency.WithLabelValues("WaitForNetworkInterfaceBind/"+string(ENIStatusInUse), fmt.Sprint(err != nil)).Observe(metric.MsSince(start))
111112

112113
if err != nil {
@@ -115,8 +116,7 @@ func (e *Impl) AllocateENI(ctx context.Context, vSwitch string, securityGroups [
115116

116117
var eni *types.ENI
117118
// backoff get eni config
118-
err = wait.ExponentialBackoffWithContext(ctx,
119-
eniStateBackoff,
119+
err = wait.ExponentialBackoffWithContext(ctx, backoff.Backoff(backoff.WaitENIStatus),
120120
func() (done bool, err error) {
121121
l, ok := GetLimit(GetInstanceMeta().InstanceType)
122122
if !ok {
@@ -147,8 +147,7 @@ func (e *Impl) FreeENI(ctx context.Context, eniID, instanceID string) error {
147147

148148
func (e *Impl) destroyInterface(ctx context.Context, eniID, instanceID, trunkENIID string) error {
149149
var innerErr error
150-
err := wait.ExponentialBackoffWithContext(ctx,
151-
eniReleaseBackoff,
150+
err := wait.ExponentialBackoffWithContext(ctx, backoff.Backoff(backoff.ENIRelease),
152151
func() (done bool, err error) {
153152
innerErr = e.DetachNetworkInterface(ctx, eniID, instanceID, trunkENIID)
154153
if innerErr != nil {
@@ -163,11 +162,10 @@ func (e *Impl) destroyInterface(ctx context.Context, eniID, instanceID, trunkENI
163162
tracing.DisposeResourceFailed, fmtErr)
164163
}
165164

166-
time.Sleep(eniStateBackoff.Duration)
165+
time.Sleep(backoff.Backoff(backoff.WaitENIStatus).Duration)
167166

168167
// backoff delete network interface
169-
err = wait.ExponentialBackoffWithContext(ctx,
170-
eniReleaseBackoff,
168+
err = wait.ExponentialBackoffWithContext(ctx, backoff.Backoff(backoff.ENIOps),
171169
func() (done bool, err error) {
172170
innerErr = e.DeleteNetworkInterface(context.Background(), eniID)
173171
if innerErr != nil {
@@ -272,7 +270,7 @@ func (e *Impl) AssignNIPsForENI(ctx context.Context, eniID, mac string, count in
272270

273271
if e.ipFamily.IPv4 {
274272
var innerErr error
275-
err = wait.ExponentialBackoffWithContext(ctx, ENIOpBackoff, func() (bool, error) {
273+
err = wait.ExponentialBackoffWithContext(ctx, backoff.Backoff(backoff.ENIOps), func() (bool, error) {
276274
ipv4s, innerErr = e.AssignPrivateIPAddress(ctx, eniID, count)
277275
if innerErr != nil {
278276
if apiErr.ErrAssert(apiErr.InvalidVSwitchIDIPNotEnough, innerErr) {
@@ -291,8 +289,7 @@ func (e *Impl) AssignNIPsForENI(ctx context.Context, eniID, mac string, count in
291289
wg.Add(1)
292290
go func() {
293291
defer wg.Done()
294-
v4Err = wait.ExponentialBackoffWithContext(ctx,
295-
MetadataAssignPrivateIPBackoff,
292+
v4Err = wait.ExponentialBackoffWithContext(ctx, backoff.Backoff(backoff.MetaAssignPrivateIP),
296293
func() (done bool, err error) {
297294
remoteIPs, err := e.metadata.GetENIPrivateAddressesByMAC(mac)
298295
if err != nil {
@@ -309,7 +306,7 @@ func (e *Impl) AssignNIPsForENI(ctx context.Context, eniID, mac string, count in
309306

310307
if e.ipFamily.IPv6 {
311308
var innerErr error
312-
err = wait.ExponentialBackoffWithContext(ctx, ENIOpBackoff, func() (bool, error) {
309+
err = wait.ExponentialBackoffWithContext(ctx, backoff.Backoff(backoff.ENIOps), func() (bool, error) {
313310
ipv6s, innerErr = e.AssignIpv6Addresses(ctx, eniID, count)
314311
if innerErr != nil {
315312
if apiErr.ErrAssert(apiErr.InvalidVSwitchIDIPNotEnough, innerErr) {
@@ -328,8 +325,7 @@ func (e *Impl) AssignNIPsForENI(ctx context.Context, eniID, mac string, count in
328325
wg.Add(1)
329326
go func() {
330327
defer wg.Done()
331-
v6Err = wait.ExponentialBackoffWithContext(ctx,
332-
MetadataAssignPrivateIPBackoff,
328+
v6Err = wait.ExponentialBackoffWithContext(ctx, backoff.Backoff(backoff.MetaAssignPrivateIP),
333329
func() (done bool, err error) {
334330
remoteIPs, err := e.metadata.GetENIPrivateIPv6AddressesByMAC(mac)
335331
if err != nil {
@@ -365,7 +361,7 @@ func (e *Impl) unAssignIPsForENIUnSafe(ctx context.Context, eniID, mac string, i
365361
if len(ipv4s) > 0 {
366362
var innerErr error
367363

368-
err := wait.ExponentialBackoffWithContext(ctx, ENIOpBackoff, func() (bool, error) {
364+
err := wait.ExponentialBackoffWithContext(ctx, backoff.Backoff(backoff.ENIOps), func() (bool, error) {
369365
innerErr = e.UnAssignPrivateIPAddresses(ctx, eniID, ipv4s)
370366
if innerErr != nil {
371367
return false, nil
@@ -380,7 +376,7 @@ func (e *Impl) unAssignIPsForENIUnSafe(ctx context.Context, eniID, mac string, i
380376
if len(ipv6s) > 0 {
381377
var innerErr error
382378

383-
err := wait.ExponentialBackoffWithContext(ctx, ENIOpBackoff, func() (bool, error) {
379+
err := wait.ExponentialBackoffWithContext(ctx, backoff.Backoff(backoff.ENIOps), func() (bool, error) {
384380
innerErr = e.UnAssignIpv6Addresses(ctx, eniID, ipv6s)
385381
if innerErr != nil {
386382
return false, nil
@@ -402,12 +398,11 @@ func (e *Impl) unAssignIPsForENIUnSafe(ctx context.Context, eniID, mac string, i
402398
start := time.Now()
403399

404400
// unassignPrivateIpAddresses is async api, sleep for first ip addr inspect
405-
time.Sleep(MetadataUnAssignPrivateIPBackoff.Duration)
401+
time.Sleep(backoff.Backoff(backoff.MetaUnAssignPrivateIP).Duration)
406402
// backoff get interface addresses
407403
var innerErr error
408404

409-
err := wait.ExponentialBackoffWithContext(ctx,
410-
MetadataUnAssignPrivateIPBackoff,
405+
err := wait.ExponentialBackoffWithContext(ctx, backoff.Backoff(backoff.MetaUnAssignPrivateIP),
411406
func() (done bool, err error) {
412407
if len(ipv4s) > 0 {
413408
remoteIPs, err := e.metadata.GetENIPrivateAddressesByMAC(mac)

pkg/aliyun/ecs.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,14 +222,18 @@ func (a *OpenAPI) WaitForNetworkInterface(ctx context.Context, eniID string, sta
222222
}
223223
err := wait.ExponentialBackoff(backoff,
224224
func() (done bool, err error) {
225-
eni, err := a.DescribeNetworkInterface(ctx, "", []string{eniID}, "", "", status)
225+
eni, err := a.DescribeNetworkInterface(ctx, "", []string{eniID}, "", "", "")
226226
if err != nil {
227227
return false, nil
228228
}
229229
if len(eni) == 0 && ignoreNotExist {
230230
return true, apiErr.ErrNotFound
231231
}
232232
if len(eni) == 1 {
233+
if string(status) != eni[0].Status {
234+
return false, nil
235+
}
236+
233237
eniInfo = &eni[0]
234238
return true, nil
235239
}

pkg/aliyun/eip.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"time"
99

1010
apiErr "github.com/AliyunContainerService/terway/pkg/aliyun/errors"
11+
"github.com/AliyunContainerService/terway/pkg/backoff"
1112
"github.com/AliyunContainerService/terway/pkg/ip"
1213
"github.com/AliyunContainerService/terway/pkg/metric"
1314
"github.com/AliyunContainerService/terway/types"
@@ -25,7 +26,7 @@ func (e *Impl) AllocateEipAddress(ctx context.Context, bandwidth int, chargeType
2526
err error
2627
)
2728
var eni *ecs.NetworkInterfaceSet
28-
eni, err = e.WaitForNetworkInterface(ctx, eniID, "", ENIOpBackoff, false)
29+
eni, err = e.WaitForNetworkInterface(ctx, eniID, "", backoff.Backoff(backoff.ENIOps), false)
2930
if err != nil {
3031
return nil, err
3132
}
@@ -128,7 +129,7 @@ func (e *Impl) AllocateEipAddress(ctx context.Context, bandwidth int, chargeType
128129
time.Sleep(3 * time.Second)
129130

130131
start := time.Now()
131-
_, err = e.WaitForEIP(eipID, eipStatusAvailable, eniStateBackoff)
132+
_, err = e.WaitForEIP(eipID, eipStatusAvailable, backoff.Backoff(backoff.WaitENIStatus))
132133
metric.OpenAPILatency.WithLabelValues("UnassociateEipAddress/Async", fmt.Sprint(err != nil)).Observe(metric.MsSince(start))
133134
if err != nil {
134135
return nil, fmt.Errorf("error wait for eip to status Available: %v", err)
@@ -149,7 +150,7 @@ func (e *Impl) AllocateEipAddress(ctx context.Context, bandwidth int, chargeType
149150
time.Sleep(3 * time.Second)
150151

151152
start := time.Now()
152-
_, err = e.WaitForEIP(eipInfo.ID, "InUse", eniStateBackoff)
153+
_, err = e.WaitForEIP(eipInfo.ID, "InUse", backoff.Backoff(backoff.WaitENIStatus))
153154
metric.OpenAPILatency.WithLabelValues("AssociateEipAddress/Async", fmt.Sprint(err != nil)).Observe(metric.MsSince(start))
154155
if err != nil {
155156
return nil, fmt.Errorf("wait for eip error: %v", err)
@@ -163,7 +164,7 @@ func (e *Impl) AllocateEipAddress(ctx context.Context, bandwidth int, chargeType
163164
// 3. if eip is not bind ,return code is IncorrectEipStatus
164165
func (e *Impl) UnassociateEipAddress(ctx context.Context, eipID, eniID, eniIP string) error {
165166
var innerErr error
166-
err := wait.ExponentialBackoff(ENIOpBackoff,
167+
err := wait.ExponentialBackoff(backoff.Backoff(backoff.ENIOps),
167168
func() (done bool, err error) {
168169
// we check eip binding is not changed
169170
var eips []vpc.EipAddress
@@ -200,7 +201,7 @@ func (e *Impl) UnassociateEipAddress(ctx context.Context, eipID, eniID, eniIP st
200201
}
201202

202203
func (e *Impl) ReleaseEipAddress(ctx context.Context, eipID, eniID string, eniIP net.IP) error {
203-
eip, err := e.WaitForEIP(eipID, "", eniStateBackoff)
204+
eip, err := e.WaitForEIP(eipID, "", backoff.Backoff(backoff.WaitENIStatus))
204205
if err != nil {
205206
return fmt.Errorf("error release eip: %w", err)
206207
}
@@ -215,7 +216,7 @@ func (e *Impl) ReleaseEipAddress(ctx context.Context, eipID, eniID string, eniIP
215216
if err == nil {
216217
time.Sleep(3 * time.Second)
217218
start := time.Now()
218-
eip, err = e.WaitForEIP(eipID, eipStatusAvailable, eniStateBackoff)
219+
eip, err = e.WaitForEIP(eipID, eipStatusAvailable, backoff.Backoff(backoff.WaitENIStatus))
219220
metric.OpenAPILatency.WithLabelValues("UnassociateEipAddress/Async", fmt.Sprint(err != nil)).Observe(metric.MsSince(start))
220221
if err != nil {
221222
logrus.Errorf("wait timeout UnassociateEipAddress for eni: %v, %v, %v", eniID, eniIP, err)
@@ -226,7 +227,7 @@ func (e *Impl) ReleaseEipAddress(ctx context.Context, eipID, eniID string, eniIP
226227
}
227228
var innerErr error
228229
if eip.Status == eipStatusAvailable {
229-
err = wait.ExponentialBackoff(eniReleaseBackoff, func() (done bool, err error) {
230+
err = wait.ExponentialBackoff(backoff.Backoff(backoff.ENIRelease), func() (done bool, err error) {
230231
innerErr = e.releaseEIPAddress(eip.AllocationId)
231232
if innerErr != nil {
232233
return false, nil

0 commit comments

Comments
 (0)