-
Notifications
You must be signed in to change notification settings - Fork 37
Open
Description
Summary
Currently, one can discover all engines configured in a WES server via the /service-info endpoint. However, this information is not sufficient for real-world production use.
To safely and dynamically use WES in a production setting, additional visibility into engine configuration and defaults is required.
Problem
In the current WES specification, while /service-info provides generic details, it does not expose engine-level configuration or metadata.
For example:
- Different WES deployments may register multiple workflow engines (e.g., Cromwell, Nextflow, Snakemake, Toil).
- Each engine may support custom configurations like maximum CPU, memory, or runtime limits.
- Currently, these configurations are opaque to the WES user or UI.
This lack of visibility makes it difficult to:
- Build UIs or services that adapt dynamically to backend capabilities.
- Enforce safe guardrails on user-submitted resource requests.
- Communicate which engine is the default and what parameters are allowed or overridden.
Proposed Solution
Introduce a new endpoint, for example:
GET /ga4gh/wes/v1/engines
and
GET /ga4gh/wes/v1/engines/{id}
This endpoint should return all registered engines in the WES implementation, along with key metadata such as:
- Engine name and version
- Whether it’s the default engine
- Supported workflow languages
- Default or maximum CPU/memory configurations
- Any additional parameters exposed by the engine
Example Response
{
"engines": [
{
"name": "cromwell",
"version": "85",
"default": true,
"languages": ["WDL", "CWL"],
"config": {
"max_cpu": {
"value": 16,
"cli_flag": "--max-concurrent-jobs",
"is_default": true,
"user_overridable": false,
"description": "Maximum number of concurrent jobs Cromwell can execute."
},
"max_memory_gb": {
"value": 64,
"cli_flag": "--max-memory",
"is_default": true,
"user_overridable": false,
"description": "Maximum total memory allocation allowed for Cromwell jobs."
},
"default_cpu": {
"value": 4,
"cli_flag": "--default-cpu",
"is_default": true,
"user_overridable": true,
"description": "Default CPU cores assigned per task if not specified in the workflow."
},
"default_memory_gb": {
"value": 8,
"cli_flag": "--default-memory",
"is_default": true,
"user_overridable": true,
"description": "Default memory per task if not explicitly defined in workflow inputs."
},
"queue": {
"value": "production",
"is_default": true,
"user_overridable": false,
"description": "Execution queue used for submitted workflows."
}
}
},
{
"name": "nextflow",
"version": "24.04.1",
"default": false,
"languages": ["Nextflow"],
"config": {
"max_cpu": {
"value": 8,
"cli_flag": "-process.maxForks",
"is_default": true,
"user_overridable": false,
"description": "Maximum parallel processes allowed in the executor."
},
"max_memory_gb": {
"value": 32,
"cli_flag": "-process.maxMemory",
"is_default": true,
"user_overridable": false,
"description": "Upper limit for memory requested per process."
},
"default_cpu": {
"value": 2,
"cli_flag": "-process.cpus",
"is_default": true,
"user_overridable": true,
"description": "Default number of CPU cores assigned per process."
},
"runtime": {
"value": {
"container_engine": "docker",
"default_image": "nextflow/nextflow:24.04.1"
},
"is_default": true,
"user_overridable": false,
"description": "Runtime environment for workflow execution."
}
}
}
]
}**The above is just an example
Benefits
- Enables frontends and clients to display engine information dynamically.
- Helps enforce and communicate backend resource limits to users.
- Improves transparency for multi-engine WES deployments.
- Makes it easier to integrate WES with custom orchestration or authentication systems that set user-specific quotas.
Metadata
Metadata
Assignees
Labels
No labels