Skip to content

CWL-WES

Synopsis

Microservice implementing the Global Alliance for Genomics and Health (GA4GH) Workflow Execution Service (WES) API specification for the execution of workflows written in the Common Workflow Language (CWL).

cwl-WES is a core service of the ELIXIR-on-Cloud project.

Description

cwl-WES (formerly: WES-ELIXIR) is a Flask/Gunicorn application that makes use of Connexion to implement the GA4GH WES OpenAPI specification. It enables clients/users to execute CWL workflows in the cloud via a GA4GH Task Execution Service (TES)-compatible execution backend (e.g., TESK or Funnel). Workflows can be sent for execution, previous runs can be listed, and the status and run information of individual runs can be queried. The service leverages cwl-tes[res-cwl-tes] to interpret CWL workflows, break them down into individual tasks and emit GA4GH TES-compatible HTTP requests to a configured TES instance. Access to endpoints can be configured to require JSON Web Token-based access tokens, such as those issued by ELIXIR AAI. Run information is stored in a MongoDB database.

Note that development is currently in beta stage. Further test deployments can be found at the ELIXIR-on-Cloud's resource listings.

cwl-WES is developed and maintained by the ELIXIR-on-Cloud project, a multinational effort aimed at establishing and implementing FAIR research in the Life Sciences.

Installation

You can find a Helm chart in the GitHub repository of CWL-WES

Follow these instructions

  • Install Helm
  • Clone the CWL-WES repository

    git clone https://github.com/elixir-cloud-aai/cwl-wes.git
    
  • Browse to deployment to find the Chart.yaml and the values.yaml files

Usage

First you must create a namespace in Kubernetes in which to deploy CWL-WES. The commands below assume that everything is created in the context of this namespace. How the namespace is created depends on the cluster, so we won't document it here.

You need to edit the values.yaml file

After this you can deploy CWL-WES using helm:

helm install CWL-WES . -f values.yaml

Updates

If you want to edit any of the Deployments, you can update them with helm and the values.yaml file. Once edited, you can run this command:

helm upgrade CWL-WES . -f values.yaml

Technical details

MongoDB

The MongoDB database is deployed using:

  • templates/mongodb-deployment.yaml

RabbitMQ

The message broker RabbitMQ that allows the app to communicate with the worker is deployed using:

  • templates/rabbitmq/rabbitmq-deployment.yaml

CWL-WES

CWL-WES consists of a Flask server and a Celery worker. There are deployed using:

  • templates/wes-deployment.yaml
  • templates/celery-deployment.yaml

Destroy

Simply run:

helm uninstall cwl-wes