The Task Execution Service (TES) API
Kyle Ellrott & Alex Kanitz
1.0. Introduction
GA4GH Cloud Work Stream APIs
Sharing Tools and Workflows
Executing Workflows
Executing Individual Tasks
Accessing Data
Data Repository Service, DRS
Task Execution Service (TES) API
A way to send a request to run a Docker-based tool in a remote environment, monitor progress, and retrieve the result. (TES does tasks, WES does workflows)
POST new task
GET task status
GET task stderr/stdout
API Standard to Execute
Tools
Docker
JSON
stderr
stdout
file(s)
status
+
Cloud-specific Implementation
Official GA4GH�Standard!
TES 1.1 Features
TES Ecosystem
TES-compatible CWL workflow engine by Seven Bridges Genomics.
WDL workflow engine built by The Broad Institute
TES-compatible CWL engine
Protocol Specification
Microsoft-developed and maintained TES implementation on Azure
TES endpoint supporting HPC clusters and multiple clouds
2.0. Workflow Engine &�TES Client Updates
2.1. Cromwell & Nextflow
Cromwell on Azure powered by TES on Azure
Production-ready, FOSS implementation of the Broad Institute's Cromwell workflow engine on Azure, powered by TES on Azure for max scale, cost-optimized genomics workflow execution
Nextflow
2.2. Snakemake & CWL
Snakemake
TES executor implemented by ELIXIR Cloud & AAI Driver Project in 2020/2021 (PR)
Update to TES v1.1 planned
Potentially also a more native / less opaque implementation (currently each task is basically a 1-step Snakemake workflow)
CWL
Demo: Use TES to bring compute to data
Uses cwl-tes (and Snakemake)* with TES gateway and simple distribution logic to bring compute to data across a heterogeneous network of TES instances (HPC and native cloud)
* works in principle, but needs a bit more testing/integration into existing demo
Compute federation
Compute federation: Gateway
Compute federation: CWL workflow
Future directions
2.3. Galaxy
Galaxy
2.4. py-tes
py-tes
Python client for accessing TES servers
pip install py-tes
Currently supports v1.0, will be updated to v1.1
3.0. TES Server Updates
3.1. TES on Azure
TES on Azure v4.4
3.2. TESK & TES gateway
TESK - TES for Kubernetes
3.3. Funnel
Funnel
Funnel provides a TES endpoint to a number of backends including:
Supported* Databases include:
Supported Object Storage:
Funnel TESv1.1 Support Update
Priorities (slightly opinionated):
�Examples of the Nitty Gritty:
Funnel Testing Strategy
Compliance Tests:
Unit Tests/Linting:
4.0. Google Summer of Code�Project Updates
4.1. TES compliance test suite
TES compliance test suite
OpenAPI Test Runner
Test Schema
Endpoint details
Polling
Filtering
Validate tests using the test schema
The OpenAPI test runner supports:�
Tests written for TES
Total 23 tests have been written for the TES test suite to intricately check conformance to API specifications
Executing the tests
–server | The server url of API instance |
–version | API version |
–include-tags & –exclude-tags | Run specific tests with matching tags |
–test-path | Run all the tests at the given path (Directory or File) |
–output-path | Store the JSON report locally at given path |
Results for cancel_task test
�Job-1 creates a task
�Job-2 cancels the task
�All responses valid. Tests is successful.
Skip the test, since v1.0.0 does not support ignore_error test
Test failed as the Get Task Basic response missed a required field
Results summary for v1.0.0 (Skips some tests meant for v1.1.0)
Results summary for v1.1.0
Reports
Report Text View
Report Table View
Report JSON View
4.2. Web Component for TES API
Javed Habib (JaeAeich)
Implementation
Components developed are:-
TES:
Display service info for TES API
Hits the TES/run to get full view of the runs, info like all the stats and meta-data about the run.
Expands on click
Wraps in the bigger component called ecc-client-ga4gh-tes-runs
Component used to browse tasks
Filters via name_prefix (logic handled by backend currently non functional)
Filter based on status like, complete, error, system error, processing etc..
Pagination
# task per page configurable
Trivial/necessary fields uncollapsed by default
Other fields can be set as per requirements
Create Task runs!
ELIXIR Cloud Components
Javed Habib (JaeAeich)
5.0 Future of TES API
5.1. API extensions
API Extensions
Possible examples
Discussion
5.2. Auth/Pass
Auth/Pass
Current spec:
TES does not accept credentials with inputs/outputs
Current implementations: Global secrets to access in/out locations stored at the backend. Good for a private TES server.
Auth/Pass
Sending passports with TES payload:
How can a passport translate to credentials to a URL?
Auth/Pass
5.3. Other needs?��Brainstorming session