Skip to content

Commit 8c3b881

Browse files
committed
missing files
1 parent 0a94743 commit 8c3b881

File tree

4 files changed

+61
-2
lines changed

4 files changed

+61
-2
lines changed

packages/models-library/src/models_library/functions.py

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
from models_library.users import UserID
1414
from models_library.utils.enums import StrAutoEnum
1515
from pydantic import BaseModel, ConfigDict, Field
16+
from servicelib.celery.models import TaskID
1617

1718
from .projects import ProjectID
1819
from .utils.change_case import snake_to_camel
@@ -196,22 +197,40 @@ class RegisteredFunctionJobBase(FunctionJobBase):
196197

197198
class ProjectFunctionJob(FunctionJobBase):
198199
function_class: Literal[FunctionClass.PROJECT] = FunctionClass.PROJECT
199-
project_job_id: ProjectID
200+
project_job_id: ProjectID | None
201+
job_creation_task_id: TaskID | None
200202

201203

202204
class RegisteredProjectFunctionJob(ProjectFunctionJob, RegisteredFunctionJobBase):
203205
pass
204206

205207

208+
class RegisteredProjectFunctionJobPatch(BaseModel):
209+
function_class: FunctionClass
210+
title: str | None
211+
description: str | None
212+
project_job_id: ProjectID | None
213+
job_creation_task_id: TaskID | None
214+
215+
206216
class SolverFunctionJob(FunctionJobBase):
207217
function_class: Literal[FunctionClass.SOLVER] = FunctionClass.SOLVER
208-
solver_job_id: ProjectID
218+
solver_job_id: ProjectID | None
219+
job_creation_task_id: TaskID | None
209220

210221

211222
class RegisteredSolverFunctionJob(SolverFunctionJob, RegisteredFunctionJobBase):
212223
pass
213224

214225

226+
class RegisteredSolverFunctionJobPatch(BaseModel):
227+
function_class: FunctionClass
228+
title: str | None
229+
description: str | None
230+
solver_job_id: ProjectID | None
231+
job_creation_task_id: TaskID | None
232+
233+
215234
class PythonCodeFunctionJob(FunctionJobBase):
216235
function_class: Literal[FunctionClass.PYTHON_CODE] = FunctionClass.PYTHON_CODE
217236

@@ -220,6 +239,12 @@ class RegisteredPythonCodeFunctionJob(PythonCodeFunctionJob, RegisteredFunctionJ
220239
pass
221240

222241

242+
class RegisteredPythonCodeFunctionJobPatch(BaseModel):
243+
function_class: FunctionClass
244+
title: str | None
245+
description: str | None
246+
247+
223248
FunctionJob: TypeAlias = Annotated[
224249
ProjectFunctionJob | PythonCodeFunctionJob | SolverFunctionJob,
225250
Field(discriminator="function_class"),
@@ -232,6 +257,13 @@ class RegisteredPythonCodeFunctionJob(PythonCodeFunctionJob, RegisteredFunctionJ
232257
Field(discriminator="function_class"),
233258
]
234259

260+
RegisteredFunctionJobPatch = Annotated[
261+
RegisteredProjectFunctionJobPatch
262+
| RegisteredPythonCodeFunctionJobPatch
263+
| RegisteredSolverFunctionJobPatch,
264+
Field(discriminator="function_class"),
265+
]
266+
235267

236268
class FunctionJobStatus(BaseModel):
237269
status: str

packages/service-library/src/servicelib/rabbitmq/rpc_interfaces/webserver/functions/functions_rpc_interface.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
FunctionOutputs,
2323
FunctionUserAccessRights,
2424
FunctionUserApiAccessRights,
25+
RegisteredFunctionJobPatch,
2526
)
2627
from models_library.products import ProductName
2728
from models_library.rabbitmq_basic_types import RPCMethodName
@@ -297,6 +298,28 @@ async def register_function_job(
297298
) # Validates the result as a RegisteredFunctionJob
298299

299300

301+
@log_decorator(_logger, level=logging.DEBUG)
302+
async def patch_registered_function_job(
303+
rabbitmq_rpc_client: RabbitMQRPCClient,
304+
*,
305+
user_id: UserID,
306+
product_name: ProductName,
307+
function_job_uuid: FunctionJobID,
308+
registered_function_job_patch: RegisteredFunctionJobPatch,
309+
) -> RegisteredFunctionJob:
310+
result = await rabbitmq_rpc_client.request(
311+
WEBSERVER_RPC_NAMESPACE,
312+
TypeAdapter(RPCMethodName).validate_python("patch_registered_function_job"),
313+
user_id=user_id,
314+
product_name=product_name,
315+
function_job_uuid=function_job_uuid,
316+
registered_function_job_patch=registered_function_job_patch,
317+
)
318+
return TypeAdapter(RegisteredFunctionJob).validate_python(
319+
result
320+
) # Validates the result as a RegisteredFunctionJob
321+
322+
300323
@log_decorator(_logger, level=logging.DEBUG)
301324
async def get_function_job(
302325
rabbitmq_rpc_client: RabbitMQRPCClient,

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,7 @@ async def run_function(
252252
inputs=job_inputs.values,
253253
outputs=None,
254254
project_job_id=study_job.id,
255+
job_creation_task_id=None,
255256
),
256257
user_id=self.user_id,
257258
product_name=self.product_name,
@@ -281,6 +282,7 @@ async def run_function(
281282
inputs=job_inputs.values,
282283
outputs=None,
283284
solver_job_id=solver_job.id,
285+
job_creation_task_id=None,
284286
),
285287
user_id=self.user_id,
286288
product_name=self.product_name,

services/api-server/tests/unit/api_functions/conftest.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,7 @@ def mock_project_function_job(
180180
"outputs": None,
181181
"project_job_id": f"{uuid4()}",
182182
"function_class": FunctionClass.PROJECT,
183+
"job_creation_task_id": None,
183184
}
184185
return ProjectFunctionJob(**mock_function_job)
185186

@@ -209,6 +210,7 @@ def mock_solver_function_job(
209210
outputs=None,
210211
function_class=FunctionClass.SOLVER,
211212
solver_job_id=ProjectID(f"{uuid4()}"),
213+
job_creation_task_id=None,
212214
)
213215

214216

0 commit comments

Comments
 (0)