Skip to content

Commit 1451774

Browse files
committed
✨ Refactor job parent resource name handling in list_jobs method for improved clarity and consistency
1 parent f3743ea commit 1451774

File tree

1 file changed

+15
-8
lines changed

1 file changed

+15
-8
lines changed

services/api-server/src/simcore_service_api_server/_service_solvers.py

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
from packaging.version import Version
1818

1919
from .api.dependencies.webserver_rpc import get_wb_api_rpc_client
20+
from .models.api_resources import compose_resource_name
2021
from .models.schemas.jobs import Job, JobInputs
2122
from .models.schemas.solvers import Solver, SolverKeyId
2223
from .services_http.solver_job_models_converters import (
@@ -104,28 +105,34 @@ async def list_jobs(
104105
) -> tuple[list[Job], PageMetaInfoLimitOffset]:
105106
"""Lists all solver jobs for a user with pagination"""
106107

107-
# NOTE: perhaps we should get comp_tasks instead of projects! or a combinatino of both?
108-
# I need inputs_checksum and job_parent_source_name!
109-
# FIXME: this is still buggy. soldve_id and solver_version need to be encoded!
110-
job_parent_resource_name_filter = "solvers"
108+
# 1. Compose job parent resource name prefix
109+
collection_or_resource_ids = [
110+
"solvers", # solver_id, "releases", solver_version, "jobs",
111+
]
111112
if solver_id:
112-
job_parent_resource_name_filter += f"/{solver_id}"
113+
collection_or_resource_ids.append(solver_id)
113114
if solver_version:
114-
job_parent_resource_name_filter += f"/{solver_version}"
115+
collection_or_resource_ids.append("releases")
116+
collection_or_resource_ids.append(solver_version)
115117
elif solver_version:
116118
msg = "solver_version is set but solver_id is not. Please provide both or none of them"
117119
raise ValueError(msg)
118120

121+
job_parent_resource_name_prefix = compose_resource_name(
122+
*collection_or_resource_ids
123+
)
124+
125+
# 2. List projects marked as jobs
119126
projects_page = await self._webserver_client.list_projects_marked_as_jobs(
120127
product_name=product_name,
121128
user_id=user_id,
122129
offset=offset,
123130
limit=limit,
124-
job_parent_resource_name_filter=job_parent_resource_name_filter,
131+
job_parent_resource_name_prefix=job_parent_resource_name_prefix,
125132
)
126133

134+
# 3. Convert projects to jobs
127135
jobs: list[Job] = []
128-
129136
for project_job in projects_page.data:
130137

131138
assert ( # nosec

0 commit comments

Comments
 (0)