@@ -334,6 +334,9 @@ def create(
334334 job = new_job ,
335335 artifacts = [],
336336 has_draft = False ,
337+ swap_task_names = _build_swap_task_name_lookup (
338+ new_job , self ._swaps_retrieval_service , log
339+ ),
337340 )
338341
339342 def _build_job_swaps (
@@ -553,12 +556,19 @@ def get(
553556 )
554557
555558 jobs = list (db .session .scalars (jobs_stmt ).all ())
556- return _build_job_dict (jobs ), total_num_jobs
559+ return (
560+ _build_job_dict (jobs , self ._swaps_retrieval_service , log ),
561+ total_num_jobs ,
562+ )
557563
558564
559565class JobIdService (object ):
560566 """The service methods for registering and managing jobs by their unique id."""
561567
568+ @inject
569+ def __init__ (self , swaps_retrieval_service : SwapsRetrievalService ) -> None :
570+ self ._swaps_retrieval_service = swaps_retrieval_service
571+
562572 def get (
563573 self ,
564574 job_id : int ,
@@ -606,6 +616,9 @@ def get(
606616 job = job ,
607617 artifacts = artifacts ,
608618 has_draft = False ,
619+ swap_task_names = _build_swap_task_name_lookup (
620+ job , self ._swaps_retrieval_service , log
621+ ),
609622 )
610623
611624 def delete (self , job_id : int , ** kwargs ) -> dict [str , Any ]:
@@ -955,7 +968,10 @@ class ExperimentJobService(object):
955968
956969 @inject
957970 def __init__ (
958- self , experiment_id_service : ExperimentIdService , job_service : JobService
971+ self ,
972+ experiment_id_service : ExperimentIdService ,
973+ job_service : JobService ,
974+ swaps_retrieval_service : SwapsRetrievalService ,
959975 ) -> None :
960976 """Initialize the ExperimentIdJob service.
961977
@@ -967,6 +983,7 @@ def __init__(
967983 """
968984 self ._experiment_id_service = experiment_id_service
969985 self ._job_service = job_service
986+ self ._swaps_retrieval_service = swaps_retrieval_service
970987
971988 def create (
972989 self ,
@@ -1111,7 +1128,10 @@ def get(
11111128 )
11121129
11131130 jobs = list (db .session .scalars (jobs_stmt ).all ())
1114- return _build_job_dict (jobs ), total_num_jobs
1131+ return (
1132+ _build_job_dict (jobs , self ._swaps_retrieval_service , log ),
1133+ total_num_jobs ,
1134+ )
11151135
11161136
11171137class ExperimentJobIdService (object ):
@@ -1672,12 +1692,44 @@ def get_logs(
16721692 return records , total_count
16731693
16741694
1675- def _build_job_dict (jobs : list [models .Job ]) -> list [utils .JobDict ]:
1695+ def _build_swap_task_name_lookup (
1696+ job : models .Job ,
1697+ swaps_retrieval_service : SwapsRetrievalService ,
1698+ logger : BoundLogger ,
1699+ ) -> dict [tuple [int , str , str ], str ]:
1700+ if not job .job_swaps :
1701+ return {}
1702+
1703+ entrypoint = job .entry_point_job .entry_point
1704+ available_swaps = swaps_retrieval_service .get_swaps (
1705+ entrypoint_id = entrypoint .resource_id ,
1706+ entrypoint_snapshot_id = entrypoint .resource_snapshot_id ,
1707+ logger = logger ,
1708+ )
1709+
1710+ return {
1711+ (
1712+ swap ["plugin_file_resource_snapshot_id" ],
1713+ swap ["swap_name" ],
1714+ swap ["task_alias" ],
1715+ ): swap ["task_name" ]
1716+ for swap in available_swaps
1717+ }
1718+
1719+
1720+ def _build_job_dict (
1721+ jobs : list [models .Job ],
1722+ swaps_retrieval_service : SwapsRetrievalService ,
1723+ logger : BoundLogger ,
1724+ ) -> list [utils .JobDict ]:
16761725 job_dicts : dict [int , utils .JobDict ] = {
16771726 job .resource_id : utils .JobDict (
16781727 job = job ,
16791728 artifacts = [],
16801729 has_draft = False ,
1730+ swap_task_names = _build_swap_task_name_lookup (
1731+ job , swaps_retrieval_service , logger
1732+ ),
16811733 )
16821734 for job in jobs
16831735 }
0 commit comments