@@ -68,7 +68,7 @@ def test_app_to_resource_resolved_macros(self) -> None:
6868 "torchx.schedulers.kubernetes_scheduler.make_unique"
6969 ) as make_unique_ctx :
7070 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 )
7272 actual_cmd = (
7373 # pyre-ignore [16]
7474 resource ["spec" ]["tasks" ][0 ]["template" ]
@@ -88,7 +88,7 @@ def test_app_to_resource_resolved_macros(self) -> None:
8888
8989 def test_retry_policy_not_set (self ) -> None :
9090 app = _test_app ()
91- resource = app_to_resource (app , "test_queue" )
91+ resource = app_to_resource (app , "test_queue" , service_account = None )
9292 self .assertListEqual (
9393 [
9494 {"event" : "PodEvicted" , "action" : "RestartJob" },
@@ -99,7 +99,7 @@ def test_retry_policy_not_set(self) -> None:
9999 )
100100 for role in app .roles :
101101 role .max_retries = 0
102- resource = app_to_resource (app , "test_queue" )
102+ resource = app_to_resource (app , "test_queue" , service_account = None )
103103 self .assertFalse ("policies" in resource ["spec" ]["tasks" ][0 ])
104104 self .assertFalse ("maxRetry" in resource ["spec" ]["tasks" ][0 ])
105105
@@ -115,7 +115,7 @@ def test_role_to_pod(self) -> None:
115115 )
116116
117117 app = _test_app ()
118- pod = role_to_pod ("name" , app .roles [0 ])
118+ pod = role_to_pod ("name" , app .roles [0 ], service_account = "srvacc" )
119119
120120 requests = {
121121 "cpu" : "2000m" ,
@@ -146,6 +146,7 @@ def test_role_to_pod(self) -> None:
146146 spec = V1PodSpec (
147147 containers = [container ],
148148 restart_policy = "Never" ,
149+ service_account_name = "srvacc" ,
149150 ),
150151 metadata = V1ObjectMeta (
151152 annotations = {
@@ -298,6 +299,22 @@ def test_submit_dryrun_patch(self) -> None:
298299 },
299300 )
300301
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+
301318 @patch ("kubernetes.client.CustomObjectsApi.create_namespaced_custom_object" )
302319 def test_submit (self , create_namespaced_custom_object : MagicMock ) -> None :
303320 create_namespaced_custom_object .return_value = {
@@ -426,6 +443,7 @@ def test_runopts(self) -> None:
426443 "queue" ,
427444 "namespace" ,
428445 "image_repo" ,
446+ "service_account" ,
429447 },
430448 )
431449
0 commit comments