@@ -279,10 +279,12 @@ def create_team(entitlement_group:)
279
279
team_options [ :parent_team_id ] = parent_team_data [ :team_id ]
280
280
rescue TeamNotFound
281
281
# if the parent team does not exist, create it (think `mkdir -p` logic here)
282
- result = octokit . create_team (
283
- org ,
284
- { name : entitlement_metadata [ "parent_team_name" ] , repo_names : [ ] , privacy : "closed" }
285
- )
282
+ result = Retryable . with_context ( :default , not : [ Octokit ::UnprocessableEntity ] ) do
283
+ octokit . create_team (
284
+ org ,
285
+ { name : entitlement_metadata [ "parent_team_name" ] , repo_names : [ ] , privacy : "closed" }
286
+ )
287
+ end
286
288
287
289
Entitlements . logger . debug "created parent team #{ entitlement_metadata [ "parent_team_name" ] } with id #{ result [ :id ] } "
288
290
@@ -296,7 +298,11 @@ def create_team(entitlement_group:)
296
298
end
297
299
298
300
Entitlements . logger . debug "create_team(team=#{ team_name } )"
299
- result = octokit . create_team ( org , team_options )
301
+
302
+ result = Retryable . with_context ( :default , not : [ Octokit ::UnprocessableEntity ] ) do
303
+ octokit . create_team ( org , team_options )
304
+ end
305
+
300
306
Entitlements . logger . debug "created team #{ team_name } with id #{ result [ :id ] } "
301
307
true
302
308
rescue Octokit ::UnprocessableEntity => e
@@ -317,7 +323,10 @@ def update_team(team:, metadata: {})
317
323
Entitlements . logger . debug "update_team(team=#{ team . team_name } )"
318
324
options = { name : team . team_name , repo_names : [ ] , privacy : "closed" ,
319
325
parent_team_id : metadata [ :parent_team_id ] }
320
- octokit . update_team ( team . team_id , options )
326
+ Retryable . with_context ( :default , not : [ Octokit ::UnprocessableEntity ] ) do
327
+ octokit . update_team ( team . team_id , options )
328
+ end
329
+
321
330
true
322
331
rescue Octokit ::UnprocessableEntity => e
323
332
Entitlements . logger . debug "update_team(team=#{ team . team_name } ) ERROR - #{ e . message } "
@@ -334,7 +343,9 @@ def update_team(team:, metadata: {})
334
343
team_name : String
335
344
] => Sawyer ::Resource
336
345
def team_by_name ( org_name :, team_name :)
337
- octokit . team_by_name ( org_name , team_name )
346
+ Retryable . with_context ( :default ) do
347
+ octokit . team_by_name ( org_name , team_name )
348
+ end
338
349
end
339
350
340
351
private
@@ -426,7 +437,10 @@ def validate_team_id_and_slug!(team_id, team_slug)
426
437
@validation_cache ||= { }
427
438
@validation_cache [ team_id ] ||= begin
428
439
Entitlements . logger . debug "validate_team_id_and_slug!(#{ team_id } , #{ team_slug . inspect } )"
429
- team_data = octokit . team ( team_id )
440
+ team_data = Retryable . with_context ( :default ) do
441
+ octokit . team ( team_id )
442
+ end
443
+
430
444
team_data [ :slug ]
431
445
end
432
446
return if @validation_cache [ team_id ] == team_slug
@@ -457,7 +471,10 @@ def add_user_to_team(user:, team:, role: "member")
457
471
validate_team_id_and_slug! ( team . team_id , team . team_name )
458
472
459
473
begin
460
- result = octokit . add_team_membership ( team . team_id , user , role :)
474
+ result = Retryable . with_context ( :default , not : [ Octokit ::UnprocessableEntity , Octokit ::NotFound ] ) do
475
+ octokit . add_team_membership ( team . team_id , user , role :)
476
+ end
477
+
461
478
result [ :state ] == "active" || result [ :state ] == "pending"
462
479
rescue Octokit ::UnprocessableEntity => e
463
480
raise e unless ignore_not_found && e . message =~ /Enterprise Managed Users must be part of the organization to be assigned to the team/
@@ -487,7 +504,10 @@ def remove_user_from_team(user:, team:)
487
504
488
505
Entitlements . logger . debug "#{ identifier } remove_user_from_team(user=#{ user } , org=#{ org } , team_id=#{ team . team_id } )"
489
506
validate_team_id_and_slug! ( team . team_id , team . team_name )
490
- octokit . remove_team_membership ( team . team_id , user )
507
+
508
+ Retryable . with_context ( :default ) do
509
+ octokit . remove_team_membership ( team . team_id , user )
510
+ end
491
511
end
492
512
end
493
513
end
0 commit comments