2525from . import apply_tasks
2626
2727
28+ @retried (on = [KeyError ], timeout = timedelta (seconds = 10 ))
29+ def assert_generic_permissions_with_retry (
30+ generic_permissions : GenericPermissionsSupport ,
31+ object_type : str ,
32+ object_id : str ,
33+ migrated_group_name : str ,
34+ expected_permission_level : PermissionLevel ,
35+ ) -> None :
36+ load_permissions = generic_permissions .load_as_dict (object_type , object_id )
37+ # Note: the following assert is the source of the KeyError (and why we might need to re-load the permissions).
38+ assert load_permissions [migrated_group_name ] == expected_permission_level
39+
40+
2841@pytest .mark .parametrize ("is_experimental" , [True , False ])
2942@retried (on = [NotFound ], timeout = timedelta (minutes = 3 ))
3043def test_instance_pools (
@@ -55,8 +68,13 @@ def test_instance_pools(
5568 else :
5669 apply_tasks (generic_permissions , [migrated_group ])
5770
58- after = generic_permissions .load_as_dict ("instance-pools" , pool .instance_pool_id )
59- assert after [migrated_group .name_in_account ] == PermissionLevel .CAN_MANAGE
71+ assert_generic_permissions_with_retry (
72+ generic_permissions ,
73+ "instance-pools" ,
74+ pool .instance_pool_id ,
75+ migrated_group .name_in_account ,
76+ expected_permission_level = PermissionLevel .CAN_MANAGE ,
77+ )
6078
6179
6280@pytest .mark .parametrize ("is_experimental" , [True , False ])
@@ -90,8 +108,9 @@ def test_clusters(
90108 else :
91109 apply_tasks (generic_permissions , [migrated_group ])
92110
93- after = generic_permissions .load_as_dict ("clusters" , cluster .cluster_id )
94- assert after [migrated_group .name_in_account ] == PermissionLevel .CAN_MANAGE
111+ assert_generic_permissions_with_retry (
112+ generic_permissions , "clusters" , cluster .cluster_id , migrated_group .name_in_account , PermissionLevel .CAN_MANAGE
113+ )
95114
96115
97116@pytest .mark .parametrize ("is_experimental" , [True , False ])
@@ -118,11 +137,12 @@ def test_jobs(ws: WorkspaceClient, migrated_group, make_job, make_job_permission
118137 else :
119138 apply_tasks (generic_permissions , [migrated_group ])
120139
121- after = generic_permissions .load_as_dict ("jobs" , job .job_id )
122- assert after [migrated_group .name_in_account ] == PermissionLevel .CAN_MANAGE
140+ assert_generic_permissions_with_retry (
141+ generic_permissions , "jobs" , job .job_id , migrated_group .name_in_account , PermissionLevel .CAN_MANAGE
142+ )
123143
124144
125- @pytest .mark .parametrize ("is_experimental" , [True , False ])
145+ @pytest .mark .parametrize ("is_experimental" , [True ])
126146@retried (on = [NotFound ], timeout = timedelta (minutes = 3 ))
127147def test_pipelines (
128148 ws : WorkspaceClient ,
@@ -152,8 +172,13 @@ def test_pipelines(
152172 else :
153173 apply_tasks (generic_permissions , [migrated_group ])
154174
155- after = generic_permissions .load_as_dict ("pipelines" , pipeline .pipeline_id )
156- assert after [migrated_group .name_in_account ] == PermissionLevel .CAN_MANAGE
175+ assert_generic_permissions_with_retry (
176+ generic_permissions ,
177+ "pipelines" ,
178+ pipeline .pipeline_id ,
179+ migrated_group .name_in_account ,
180+ PermissionLevel .CAN_MANAGE ,
181+ )
157182
158183
159184@pytest .mark .parametrize ("is_experimental" , [True , False ])
@@ -186,8 +211,13 @@ def test_cluster_policies(
186211 else :
187212 apply_tasks (generic_permissions , [migrated_group ])
188213
189- after = generic_permissions .load_as_dict ("cluster-policies" , cluster_policy .policy_id )
190- assert after [migrated_group .name_in_account ] == PermissionLevel .CAN_USE
214+ assert_generic_permissions_with_retry (
215+ generic_permissions ,
216+ "cluster-policies" ,
217+ cluster_policy .policy_id ,
218+ migrated_group .name_in_account ,
219+ PermissionLevel .CAN_USE ,
220+ )
191221
192222
193223@pytest .mark .parametrize ("is_experimental" , [True , False ])
@@ -220,6 +250,9 @@ def test_warehouses(
220250 else :
221251 apply_tasks (generic_permissions , [migrated_group ])
222252
253+ assert_generic_permissions_with_retry (
254+ generic_permissions , "sql/warehouses" , warehouse .id , migrated_group .name_in_account , PermissionLevel .CAN_MANAGE
255+ )
223256 after = generic_permissions .load_as_dict ("sql/warehouses" , warehouse .id )
224257 assert after [migrated_group .name_in_account ] == PermissionLevel .CAN_MANAGE
225258
@@ -254,8 +287,9 @@ def test_models(
254287 else :
255288 apply_tasks (generic_permissions , [migrated_group ])
256289
257- after = generic_permissions .load_as_dict ("registered-models" , model .id )
258- assert after [migrated_group .name_in_account ] == PermissionLevel .CAN_MANAGE
290+ assert_generic_permissions_with_retry (
291+ generic_permissions , "registered-models" , model .id , migrated_group .name_in_account , PermissionLevel .CAN_MANAGE
292+ )
259293
260294
261295@pytest .mark .parametrize ("is_experimental" , [True , False ])
@@ -285,8 +319,13 @@ def test_experiments(
285319 else :
286320 apply_tasks (generic_permissions , [migrated_group ])
287321
288- after = generic_permissions .load_as_dict ("experiments" , experiment .experiment_id )
289- assert after [migrated_group .name_in_account ] == PermissionLevel .CAN_MANAGE
322+ assert_generic_permissions_with_retry (
323+ generic_permissions ,
324+ "experiments" ,
325+ experiment .experiment_id ,
326+ migrated_group .name_in_account ,
327+ PermissionLevel .CAN_MANAGE ,
328+ )
290329
291330
292331@pytest .mark .parametrize ("is_experimental" , [True , False ])
@@ -328,8 +367,9 @@ def test_directories(
328367 else :
329368 apply_tasks (generic_permissions , [migrated_group ])
330369
331- after = generic_permissions .load_as_dict ("directories" , str (object_id ))
332- assert after [migrated_group .name_in_account ] == PermissionLevel .CAN_MANAGE
370+ assert_generic_permissions_with_retry (
371+ generic_permissions , "directories" , str (object_id ), migrated_group .name_in_account , PermissionLevel .CAN_MANAGE
372+ )
333373
334374
335375@pytest .mark .parametrize ("is_experimental" , [True , False ])
@@ -371,8 +411,9 @@ def test_notebooks(
371411 else :
372412 apply_tasks (generic_permissions , [migrated_group ])
373413
374- after = generic_permissions .load_as_dict ("notebooks" , str (object_id ))
375- assert after [migrated_group .name_in_account ] == PermissionLevel .CAN_MANAGE
414+ assert_generic_permissions_with_retry (
415+ generic_permissions , "notebooks" , str (object_id ), migrated_group .name_in_account , PermissionLevel .CAN_MANAGE
416+ )
376417
377418
378419@retried (on = [BadRequest ], timeout = timedelta (minutes = 3 ))
@@ -398,8 +439,9 @@ def test_tokens(ws: WorkspaceClient, migrated_group, make_authorization_permissi
398439 else :
399440 apply_tasks (generic_permissions , [migrated_group ])
400441
401- after = generic_permissions .load_as_dict ("authorization" , "tokens" )
402- assert after [migrated_group .name_in_account ] == PermissionLevel .CAN_USE
442+ assert_generic_permissions_with_retry (
443+ generic_permissions , "authorization" , "tokens" , migrated_group .name_in_account , PermissionLevel .CAN_USE
444+ )
403445
404446
405447@retried (on = [BadRequest ], timeout = timedelta (minutes = 3 ))
@@ -469,8 +511,13 @@ def test_endpoints(
469511 else :
470512 apply_tasks (generic_permissions , [migrated_group ])
471513
472- after = generic_permissions .load_as_dict ("serving-endpoints" , endpoint .response .id )
473- assert after [migrated_group .name_in_account ] == PermissionLevel .CAN_QUERY
514+ assert_generic_permissions_with_retry (
515+ generic_permissions ,
516+ "serving-endpoints" ,
517+ endpoint .response .id ,
518+ migrated_group .name_in_account ,
519+ PermissionLevel .CAN_QUERY ,
520+ )
474521
475522
476523# TODO: Uncomment this test when the feature store is available in the test infra again
@@ -501,8 +548,13 @@ def test_feature_tables(
501548 else :
502549 apply_tasks (generic_permissions , [migrated_group ])
503550
504- after = generic_permissions .load_as_dict ("feature-tables" , feature_table ["id" ])
505- assert after [migrated_group .name_in_account ] == PermissionLevel .CAN_EDIT_METADATA
551+ assert_generic_permissions_with_retry (
552+ generic_permissions ,
553+ "feature-tables" ,
554+ feature_table ["id" ],
555+ migrated_group .name_in_account ,
556+ PermissionLevel .CAN_EDIT_METADATA ,
557+ )
506558
507559
508560# TODO: Uncomment this test when the feature store is available in the test infra again
@@ -533,8 +585,13 @@ def test_feature_store_root_page(ws: WorkspaceClient, migrated_group, is_experim
533585 [migrated_group ],
534586 )
535587
536- after = generic_permissions .load_as_dict ("feature-tables" , "/root" )
537- assert after [migrated_group .name_in_account ] == PermissionLevel .CAN_EDIT_METADATA
588+ assert_generic_permissions_with_retry (
589+ generic_permissions ,
590+ "feature-tables" ,
591+ "/root" ,
592+ migrated_group .name_in_account ,
593+ PermissionLevel .CAN_EDIT_METADATA ,
594+ )
538595
539596
540597@pytest .mark .parametrize ("is_experimental" , [True , False ])
@@ -563,5 +620,10 @@ def test_models_root_page(ws: WorkspaceClient, migrated_group, is_experimental:
563620 [migrated_group ],
564621 )
565622
566- after = generic_permissions .load_as_dict ("registered-models" , "/root" )
567- assert after [migrated_group .name_in_account ] == PermissionLevel .CAN_MANAGE_PRODUCTION_VERSIONS
623+ assert_generic_permissions_with_retry (
624+ generic_permissions ,
625+ "registered-models" ,
626+ "/root" ,
627+ migrated_group .name_in_account ,
628+ PermissionLevel .CAN_MANAGE_PRODUCTION_VERSIONS ,
629+ )
0 commit comments