@@ -402,19 +402,28 @@ func ensureFirewallRouteTable(
402402 rg := * clusterModel .Properties .NodeResourceGroup
403403 routeTableName := "abe2e-fw-rt"
404404 toolkit .Logf (ctx , "AKS subnet has no route table; creating dedicated firewall route table %q" , routeTableName )
405- poller , err := config .Azure .RouteTables .BeginCreateOrUpdate (ctx , rg , routeTableName , armnetwork.RouteTable {
406- Location : clusterModel .Location ,
407- }, nil )
408- if err != nil {
409- return "" , fmt .Errorf ("failed to start creating firewall route table %q: %w" , routeTableName , err )
410- }
411- routeTableResp , err := poller .PollUntilDone (ctx , config .DefaultPollUntilDoneOptions )
405+
406+ var routeTableID * string
407+ err := retryOn409 (ctx , fmt .Sprintf ("creating route table %s" , routeTableName ), func () error {
408+ poller , err := config .Azure .RouteTables .BeginCreateOrUpdate (ctx , rg , routeTableName , armnetwork.RouteTable {
409+ Location : clusterModel .Location ,
410+ }, nil )
411+ if err != nil {
412+ return fmt .Errorf ("failed to start creating firewall route table %q: %w" , routeTableName , err )
413+ }
414+ routeTableResp , err := poller .PollUntilDone (ctx , config .DefaultPollUntilDoneOptions )
415+ if err != nil {
416+ return fmt .Errorf ("failed to create firewall route table %q: %w" , routeTableName , err )
417+ }
418+ routeTableID = routeTableResp .ID
419+ return nil
420+ })
412421 if err != nil {
413- return "" , fmt . Errorf ( "failed to create firewall route table %q: %w" , routeTableName , err )
422+ return "" , err
414423 }
415424
416425 aksSubnet .Properties .RouteTable = & armnetwork.RouteTable {
417- ID : routeTableResp . ID ,
426+ ID : routeTableID ,
418427 }
419428 if err := updateSubnet (ctx , clusterModel , aksSubnet , vnet ); err != nil {
420429 return "" , fmt .Errorf ("failed to associate firewall route table %q with AKS subnet: %w" , routeTableName , err )
@@ -777,23 +786,32 @@ func createPrivateEndpoint(ctx context.Context, nodeResourceGroup, privateEndpoi
777786 CustomDNSConfigs : []* armnetwork.CustomDNSConfigPropertiesFormat {},
778787 },
779788 }
780- poller , err := config .Azure .PrivateEndpointClient .BeginCreateOrUpdate (
781- ctx ,
782- nodeResourceGroup ,
783- privateEndpointName ,
784- peParams ,
785- nil ,
786- )
787- if err != nil {
788- return nil , fmt .Errorf ("failed to create private endpoint in BeginCreateOrUpdate: %w" , err )
789- }
790- resp , err := poller .PollUntilDone (ctx , nil )
789+
790+ var result armnetwork.PrivateEndpoint
791+ err = retryOn409 (ctx , fmt .Sprintf ("creating private endpoint %s" , privateEndpointName ), func () error {
792+ poller , err := config .Azure .PrivateEndpointClient .BeginCreateOrUpdate (
793+ ctx ,
794+ nodeResourceGroup ,
795+ privateEndpointName ,
796+ peParams ,
797+ nil ,
798+ )
799+ if err != nil {
800+ return fmt .Errorf ("failed to create private endpoint in BeginCreateOrUpdate: %w" , err )
801+ }
802+ resp , err := poller .PollUntilDone (ctx , nil )
803+ if err != nil {
804+ return fmt .Errorf ("failed to create private endpoint in polling: %w" , err )
805+ }
806+ result = resp .PrivateEndpoint
807+ return nil
808+ })
791809 if err != nil {
792- return nil , fmt . Errorf ( "failed to create private endpoint in polling: %w" , err )
810+ return nil , err
793811 }
794812
795- toolkit .Logf (ctx , "Private Endpoint created or updated with ID: %s" , * resp .ID )
796- return & resp . PrivateEndpoint , nil
813+ toolkit .Logf (ctx , "Private Endpoint created or updated with ID: %s" , * result .ID )
814+ return & result , nil
797815}
798816
799817func createPrivateZone (ctx context.Context , nodeResourceGroup , privateZoneName string ) (* armprivatedns.PrivateZone , error ) {
@@ -1048,13 +1066,12 @@ func createNetworkIsolatedSecurityGroup(ctx context.Context, cluster *armcontain
10481066}
10491067
10501068func updateSubnet (ctx context.Context , cluster * armcontainerservice.ManagedCluster , subnetParameters armnetwork.Subnet , vnet VNet ) error {
1051- poller , err := config . Azure . Subnet . BeginCreateOrUpdate (ctx , vnet . resourceGroup , vnet . name , vnet .subnetName , subnetParameters , nil )
1052- if err != nil {
1053- return err
1054- }
1055- _ , err = poller . PollUntilDone ( ctx , config . DefaultPollUntilDoneOptions )
1056- if err != nil {
1069+ return retryOn409 (ctx , fmt . Sprintf ( "updating subnet %s" , vnet .subnetName ), func () error {
1070+ poller , err := config . Azure . Subnet . BeginCreateOrUpdate ( ctx , vnet . resourceGroup , vnet . name , vnet . subnetName , subnetParameters , nil )
1071+ if err != nil {
1072+ return err
1073+ }
1074+ _ , err = poller . PollUntilDone ( ctx , config . DefaultPollUntilDoneOptions )
10571075 return err
1058- }
1059- return nil
1076+ })
10601077}
0 commit comments