44 "fmt"
55 "net"
66 "strings"
7- "time"
87
98 "github.com/Azure/azure-container-networking/iptables"
109 "github.com/Azure/azure-container-networking/netio"
@@ -13,6 +12,7 @@ import (
1312 "github.com/Azure/azure-container-networking/network/networkutils"
1413 "github.com/Azure/azure-container-networking/network/snat"
1514 "github.com/Azure/azure-container-networking/platform"
15+ "github.com/Azure/azure-container-networking/retry"
1616 "github.com/pkg/errors"
1717 vishnetlink "github.com/vishvananda/netlink"
1818 "go.uber.org/zap"
@@ -192,7 +192,7 @@ func (client *TransparentVlanEndpointClient) setLinkNetNSAndConfirm(name string,
192192 }
193193
194194 // confirm veth was moved successfully
195- err = RunWithRetries (func () error {
195+ err = retry . Do (func () error {
196196 // retry checking in the namespace if the interface is not detected
197197 return ExecuteInNS (client .nsClient , client .vnetNSName , func () error {
198198 _ , ifDetectedErr := client .netioshim .GetNetworkInterfaceByName (client .vlanIfName )
@@ -220,7 +220,7 @@ func (client *TransparentVlanEndpointClient) PopulateVM(epInfo *EndpointInfo) er
220220 // We assume the only possible error is that the namespace doesn't exist
221221 logger .Info ("No existing NS detected. Creating the vnet namespace and switching to it" , zap .String ("message" , existingErr .Error ()))
222222
223- err = RunWithRetries (func () error {
223+ err = retry . Do (func () error {
224224 return client .createNetworkNamespace (vmNS )
225225 }, numRetries , sleepInMs )
226226 if err != nil {
@@ -279,7 +279,7 @@ func (client *TransparentVlanEndpointClient) PopulateVM(epInfo *EndpointInfo) er
279279 }()
280280
281281 // sometimes there is slight delay in interface creation. check if it exists
282- err = RunWithRetries (func () error {
282+ err = retry . Do (func () error {
283283 _ , err = client .netioshim .GetNetworkInterfaceByName (client .vlanIfName )
284284 return errors .Wrap (err , "failed to get vlan veth" )
285285 }, numRetries , sleepInMs )
@@ -316,7 +316,7 @@ func (client *TransparentVlanEndpointClient) PopulateVM(epInfo *EndpointInfo) er
316316 }
317317
318318 // Ensure vnet veth is created, as there may be a slight delay
319- err = RunWithRetries (func () error {
319+ err = retry . Do (func () error {
320320 _ , getErr := client .netioshim .GetNetworkInterfaceByName (client .vnetVethName )
321321 return errors .Wrap (getErr , "failed to get vnet veth" )
322322 }, numRetries , sleepInMs )
@@ -326,7 +326,7 @@ func (client *TransparentVlanEndpointClient) PopulateVM(epInfo *EndpointInfo) er
326326
327327 // Ensure container veth is created, as there may be a slight delay
328328 var containerIf * net.Interface
329- err = RunWithRetries (func () error {
329+ err = retry . Do (func () error {
330330 var getErr error
331331 containerIf , getErr = client .netioshim .GetNetworkInterfaceByName (client .containerVethName )
332332 return errors .Wrap (getErr , "failed to get container veth" )
@@ -712,16 +712,3 @@ func ExecuteInNS(nsc NamespaceClientInterface, nsName string, f func() error) er
712712 }()
713713 return f ()
714714}
715-
716- func RunWithRetries (f func () error , maxRuns , sleepMs int ) error {
717- var err error
718- for i := 0 ; i < maxRuns ; i ++ {
719- err = f ()
720- if err == nil {
721- break
722- }
723- logger .Info ("Retrying after delay..." , zap .String ("error" , err .Error ()), zap .Int ("retry" , i ), zap .Int ("sleepMs" , sleepMs ))
724- time .Sleep (time .Duration (sleepMs ) * time .Millisecond )
725- }
726- return err
727- }
0 commit comments