@@ -68,7 +68,7 @@ def test_app_to_resource_resolved_macros(self) -> None:
68
68
"torchx.schedulers.kubernetes_scheduler.make_unique"
69
69
) as make_unique_ctx :
70
70
make_unique_ctx .return_value = unique_app_name
71
- resource = app_to_resource (app , "test_queue" )
71
+ resource = app_to_resource (app , "test_queue" , service_account = None )
72
72
actual_cmd = (
73
73
# pyre-ignore [16]
74
74
resource ["spec" ]["tasks" ][0 ]["template" ]
@@ -88,7 +88,7 @@ def test_app_to_resource_resolved_macros(self) -> None:
88
88
89
89
def test_retry_policy_not_set (self ) -> None :
90
90
app = _test_app ()
91
- resource = app_to_resource (app , "test_queue" )
91
+ resource = app_to_resource (app , "test_queue" , service_account = None )
92
92
self .assertListEqual (
93
93
[
94
94
{"event" : "PodEvicted" , "action" : "RestartJob" },
@@ -99,7 +99,7 @@ def test_retry_policy_not_set(self) -> None:
99
99
)
100
100
for role in app .roles :
101
101
role .max_retries = 0
102
- resource = app_to_resource (app , "test_queue" )
102
+ resource = app_to_resource (app , "test_queue" , service_account = None )
103
103
self .assertFalse ("policies" in resource ["spec" ]["tasks" ][0 ])
104
104
self .assertFalse ("maxRetry" in resource ["spec" ]["tasks" ][0 ])
105
105
@@ -115,7 +115,7 @@ def test_role_to_pod(self) -> None:
115
115
)
116
116
117
117
app = _test_app ()
118
- pod = role_to_pod ("name" , app .roles [0 ])
118
+ pod = role_to_pod ("name" , app .roles [0 ], service_account = "srvacc" )
119
119
120
120
requests = {
121
121
"cpu" : "2000m" ,
@@ -146,6 +146,7 @@ def test_role_to_pod(self) -> None:
146
146
spec = V1PodSpec (
147
147
containers = [container ],
148
148
restart_policy = "Never" ,
149
+ service_account_name = "srvacc" ,
149
150
),
150
151
metadata = V1ObjectMeta (
151
152
annotations = {
@@ -298,6 +299,22 @@ def test_submit_dryrun_patch(self) -> None:
298
299
},
299
300
)
300
301
302
+ def test_submit_dryrun_service_account (self ) -> None :
303
+ scheduler = create_scheduler ("test" )
304
+ self .assertIn ("service_account" , scheduler .run_opts ()._opts )
305
+ app = _test_app ()
306
+ cfg = {
307
+ "queue" : "testqueue" ,
308
+ "service_account" : "srvacc" ,
309
+ }
310
+
311
+ info = scheduler ._submit_dryrun (app , cfg )
312
+ self .assertIn ("'service_account_name': 'srvacc'" , str (info .request .resource ))
313
+
314
+ del cfg ["service_account" ]
315
+ info = scheduler ._submit_dryrun (app , cfg )
316
+ self .assertIn ("service_account_name': None" , str (info .request .resource ))
317
+
301
318
@patch ("kubernetes.client.CustomObjectsApi.create_namespaced_custom_object" )
302
319
def test_submit (self , create_namespaced_custom_object : MagicMock ) -> None :
303
320
create_namespaced_custom_object .return_value = {
@@ -426,6 +443,7 @@ def test_runopts(self) -> None:
426
443
"queue" ,
427
444
"namespace" ,
428
445
"image_repo" ,
446
+ "service_account" ,
429
447
},
430
448
)
431
449
@@ -452,7 +470,7 @@ def test_log_iter(self, read_namespaced_pod_log: MagicMock) -> None:
452
470
read_namespaced_pod_log .return_value = "foo reg\n foo\n bar reg\n "
453
471
lines = scheduler .log_iter (
454
472
app_id = "testnamespace:testjob" ,
455
- role_name = "role " ,
473
+ role_name = "role_blah " ,
456
474
k = 1 ,
457
475
regex = "reg" ,
458
476
since = datetime .now (),
@@ -472,7 +490,7 @@ def test_log_iter(self, read_namespaced_pod_log: MagicMock) -> None:
472
490
kwargs ,
473
491
{
474
492
"namespace" : "testnamespace" ,
475
- "name" : "testjob-role -1-0" ,
493
+ "name" : "testjob-roleblah -1-0" ,
476
494
"timestamps" : True ,
477
495
},
478
496
)
0 commit comments