|
17 | 17 | from packaging.version import Version |
18 | 18 |
|
19 | 19 | from .api.dependencies.webserver_rpc import get_wb_api_rpc_client |
| 20 | +from .models.api_resources import compose_resource_name |
20 | 21 | from .models.schemas.jobs import Job, JobInputs |
21 | 22 | from .models.schemas.solvers import Solver, SolverKeyId |
22 | 23 | from .services_http.solver_job_models_converters import ( |
@@ -104,28 +105,34 @@ async def list_jobs( |
104 | 105 | ) -> tuple[list[Job], PageMetaInfoLimitOffset]: |
105 | 106 | """Lists all solver jobs for a user with pagination""" |
106 | 107 |
|
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 | + ] |
111 | 112 | if solver_id: |
112 | | - job_parent_resource_name_filter += f"/{solver_id}" |
| 113 | + collection_or_resource_ids.append(solver_id) |
113 | 114 | 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) |
115 | 117 | elif solver_version: |
116 | 118 | msg = "solver_version is set but solver_id is not. Please provide both or none of them" |
117 | 119 | raise ValueError(msg) |
118 | 120 |
|
| 121 | + job_parent_resource_name_prefix = compose_resource_name( |
| 122 | + *collection_or_resource_ids |
| 123 | + ) |
| 124 | + |
| 125 | + # 2. List projects marked as jobs |
119 | 126 | projects_page = await self._webserver_client.list_projects_marked_as_jobs( |
120 | 127 | product_name=product_name, |
121 | 128 | user_id=user_id, |
122 | 129 | offset=offset, |
123 | 130 | limit=limit, |
124 | | - job_parent_resource_name_filter=job_parent_resource_name_filter, |
| 131 | + job_parent_resource_name_prefix=job_parent_resource_name_prefix, |
125 | 132 | ) |
126 | 133 |
|
| 134 | + # 3. Convert projects to jobs |
127 | 135 | jobs: list[Job] = [] |
128 | | - |
129 | 136 | for project_job in projects_page.data: |
130 | 137 |
|
131 | 138 | assert ( # nosec |
|
0 commit comments