server.web.routes.v2.fsm.workflow ================================= .. py:module:: server.web.routes.v2.fsm.workflow .. autoapi-nested-parse:: Routes for Workflows. Attributes ---------- .. autoapisummary:: server.web.routes.v2.fsm.workflow.logger Functions --------- .. autoapisummary:: server.web.routes.v2.fsm.workflow._add_workflow_attributes server.web.routes.v2.fsm.workflow.bind_workflow server.web.routes.v2.fsm.workflow.get_matching_workflows_by_workflow_args server.web.routes.v2.fsm.workflow._add_or_get_wf_attribute_type server.web.routes.v2.fsm.workflow._upsert_wf_attribute server.web.routes.v2.fsm.workflow.update_workflow_attribute server.web.routes.v2.fsm.workflow.set_resume server.web.routes.v2.fsm.workflow.workflow_is_resumable server.web.routes.v2.fsm.workflow.get_max_concurrently_running server.web.routes.v2.fsm.workflow.update_max_running server.web.routes.v2.fsm.workflow.task_status_updates server.web.routes.v2.fsm.workflow.fetch_workflow_metadata server.web.routes.v2.fsm.workflow.get_tasks_from_workflow server.web.routes.v2.fsm.workflow.get_wf_resource_usage Module Contents --------------- .. py:data:: logger .. py:function:: _add_workflow_attributes(workflow_id: int, workflow_attributes: Dict[str, str], session: sqlalchemy.orm.Session) -> None .. py:function:: bind_workflow() -> Any Bind a workflow to the database. .. py:function:: get_matching_workflows_by_workflow_args(workflow_args_hash: str) -> Any Return any dag hashes that are assigned to workflows with identical workflow args. .. py:function:: _add_or_get_wf_attribute_type(name: str, session: sqlalchemy.orm.Session) -> Optional[int] .. py:function:: _upsert_wf_attribute(workflow_id: int, name: str, value: str, session: sqlalchemy.orm.Session) -> None .. py:function:: update_workflow_attribute(workflow_id: int) -> Any Update the attributes for a given workflow. .. py:function:: set_resume(workflow_id: int) -> Any Set resume on a workflow. .. py:function:: workflow_is_resumable(workflow_id: int) -> Any Check if a workflow is in a resumable state. .. py:function:: get_max_concurrently_running(workflow_id: int) -> Any Return the maximum concurrency of this workflow. .. py:function:: update_max_running(workflow_id: int) -> Any Update the number of tasks that can be running concurrently for a given workflow. .. py:function:: task_status_updates(workflow_id: int) -> Any Returns all tasks in the database that have the specified status. :param workflow_id: the ID of the workflow. :type workflow_id: int .. py:function:: fetch_workflow_metadata(workflow_id: int) -> Any Get metadata associated with specified Workflow ID. .. py:function:: get_tasks_from_workflow(workflow_id: int) -> Any Return tasks associated with specified Workflow ID. .. py:function:: get_wf_resource_usage(workflow_id: int) -> Any Gets task instance resource usage for a given Workflow ID. :param workflow_id: ID of the Workflow :type workflow_id: int :returns: A list of dictionaries containing the Task ID, name, status and num of attempts and the TaskInstance ID, status and resource usage. :rtype: List[Dict[str, Any]] Example Call: /workflow/123412/wf_resource_usage Example Response: [ { "task_id": 6213741, "task_name": "random_task_name", "task_status": "D", "task_num_attempts": 2, "task_instance_id": 91823412, "ti_usage_str": "wallclock=8 cpu=1, mem=7 GBs, io=5 GB" "ti_wallclock": 8 "ti_maxrss": 7 "ti_maxpss": 5 "ti_cpu": 1 "ti_io": 5 "ti_status": "D" } ]