Skip to content

Commit d9b48ca

Browse files
committed
add job links when creating job from study
1 parent a0acf32 commit d9b48ca

File tree

4 files changed

+39
-7
lines changed

4 files changed

+39
-7
lines changed

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@
4343
from .services_http.solver_job_models_converters import (
4444
get_solver_job_rest_interface_links,
4545
)
46+
from .services_http.study_job_models_converters import (
47+
get_study_job_rest_interface_links,
48+
)
4649
from .services_rpc.wb_api_server import WbApiRpcClient
4750

4851

@@ -224,10 +227,14 @@ async def run_function(
224227
return cached_function_job
225228

226229
if function.function_class == FunctionClass.PROJECT:
230+
job_links = get_study_job_rest_interface_links(
231+
url_for=url_for, study_id=function.project_id
232+
)
227233
study_job = await self._job_service.create_studies_job(
228234
study_id=function.project_id,
229235
job_inputs=JobInputs(values=joined_inputs or {}),
230236
hidden=True,
237+
job_links=job_links,
231238
x_simcore_parent_project_uuid=x_simcore_parent_project_uuid,
232239
x_simcore_parent_node_id=x_simcore_parent_node_id,
233240
)

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -391,6 +391,7 @@ async def create_studies_job(
391391
job_inputs: JobInputs,
392392
x_simcore_parent_project_uuid: ProjectID | None,
393393
x_simcore_parent_node_id: NodeID | None,
394+
job_links: JobLinks,
394395
hidden: bool,
395396
) -> Job:
396397

@@ -401,7 +402,10 @@ async def create_studies_job(
401402
parent_node_id=x_simcore_parent_node_id,
402403
)
403404
job = create_job_from_study(
404-
study_key=study_id, project=project, job_inputs=job_inputs
405+
study_key=study_id,
406+
project=project,
407+
job_inputs=job_inputs,
408+
job_links=job_links,
405409
)
406410

407411
await self._web_rest_client.patch_project(

services/api-server/src/simcore_service_api_server/api/routes/studies_jobs.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
from ...services_http.storage import StorageApi
3838
from ...services_http.study_job_models_converters import (
3939
create_job_outputs_from_project_outputs,
40+
get_study_job_rest_interface_links,
4041
)
4142
from ...services_http.webserver import AuthSession
4243
from ..dependencies.application import get_reverse_url_mapper
@@ -113,11 +114,13 @@ async def create_study_job(
113114
hidden -- if True (default) hides project from UI
114115
"""
115116

117+
job_links = get_study_job_rest_interface_links(url_for=url_for, study_id=study_id)
116118
job = await job_service.create_studies_job(
117119
study_id=study_id,
118120
job_inputs=job_inputs,
119121
x_simcore_parent_project_uuid=x_simcore_parent_project_uuid,
120122
x_simcore_parent_node_id=x_simcore_parent_node_id,
123+
job_links=job_links,
121124
hidden=hidden,
122125
)
123126
assert job.name == compose_study_job_resource_name(study_id, job.id)

services/api-server/src/simcore_service_api_server/services_http/study_job_models_converters.py

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
services/api-server/src/simcore_service_api_server/api/routes/studies_jobs.py
44
"""
55

6+
from collections.abc import Callable
67
from typing import Any, NamedTuple
78
from uuid import UUID
89

@@ -16,6 +17,7 @@
1617
from models_library.projects_nodes_io import LinkToFileTypes, NodeID, SimcoreS3FileID
1718
from pydantic import TypeAdapter
1819

20+
from ..models.api_resources import JobLinks
1921
from ..models.domain.files import File
2022
from ..models.domain.projects import InputTypes, SimCoreFileLink
2123
from ..models.schemas.jobs import Job, JobInputs, JobOutputs
@@ -57,10 +59,26 @@ def get_project_and_file_inputs_from_job_inputs(
5759
return ProjectInputs(new_inputs, file_inputs)
5860

5961

62+
def get_study_job_rest_interface_links(
63+
*, url_for: Callable, study_id: StudyID
64+
) -> JobLinks:
65+
return JobLinks(
66+
url_template=url_for(
67+
"get_study_job",
68+
study_id=study_id,
69+
job_id="{job_id}",
70+
),
71+
runner_url_template=url_for("get_study", study_id=study_id),
72+
outputs_url_template=url_for(
73+
"get_study_job_outputs",
74+
study_id=study_id,
75+
job_id="{job_id}",
76+
),
77+
)
78+
79+
6080
def create_job_from_study(
61-
study_key: StudyID,
62-
project: ProjectGet,
63-
job_inputs: JobInputs,
81+
study_key: StudyID, project: ProjectGet, job_inputs: JobInputs, job_links: JobLinks
6482
) -> Job:
6583
"""
6684
Given a study, creates a job
@@ -78,9 +96,9 @@ def create_job_from_study(
7896
inputs_checksum=job_inputs.compute_checksum(),
7997
created_at=DateTimeStr.to_datetime(project.creation_date),
8098
runner_name=study_name,
81-
url=None,
82-
runner_url=None,
83-
outputs_url=None,
99+
url=job_links.url(job_id=project.uuid),
100+
runner_url=job_links.runner_url(job_id=project.uuid),
101+
outputs_url=job_links.outputs_url(job_id=project.uuid),
84102
)
85103

86104

0 commit comments

Comments
 (0)