workflow parameter validation (#1028)

This commit is contained in:
Shuchang Zheng 2024-10-22 17:36:25 -07:00 committed by GitHub
parent 7cba401e2e
commit 0e3da8d1d3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 46 additions and 23 deletions

View file

@ -1,5 +1,6 @@
import json
from datetime import datetime
from typing import Any
import requests
import structlog
@ -125,13 +126,13 @@ class WorkflowService:
request_body_value = workflow_request.data[workflow_parameter.key]
workflow_run_parameter = await self.create_workflow_run_parameter(
workflow_run_id=workflow_run.workflow_run_id,
workflow_parameter_id=workflow_parameter.workflow_parameter_id,
workflow_parameter=workflow_parameter,
value=request_body_value,
)
elif workflow_parameter.default_value is not None:
workflow_run_parameter = await self.create_workflow_run_parameter(
workflow_run_id=workflow_run.workflow_run_id,
workflow_parameter_id=workflow_parameter.workflow_parameter_id,
workflow_parameter=workflow_parameter,
value=workflow_parameter.default_value,
)
else:
@ -565,12 +566,15 @@ class WorkflowService:
async def create_workflow_run_parameter(
self,
workflow_run_id: str,
workflow_parameter_id: str,
value: bool | int | float | str | dict | list,
workflow_parameter: WorkflowParameter,
value: Any,
) -> WorkflowRunParameter:
# InvalidWorkflowParameter will be raised if the validation fails
workflow_parameter.workflow_parameter_type.convert_value(value)
return await app.DATABASE.create_workflow_run_parameter(
workflow_run_id=workflow_run_id,
workflow_parameter_id=workflow_parameter_id,
workflow_parameter=workflow_parameter,
value=json.dumps(value) if isinstance(value, (dict, list)) else value,
)