|
| 1 | +## Synopsis |
| 2 | + |
| 3 | +Microservice implementing the [Global Alliance for Genomics and |
| 4 | +Health][ga4gh] (GA4GH) [Workflow Execution Service][ga4gh-wes] (WES) |
| 5 | +API specification for the execution of workflows written in the [Common |
| 6 | +Workflow Language](https://www.commonwl.org/) (CWL). |
| 7 | + |
| 8 | +cwl-WES is a core service of the [ELIXIR Cloud & AAI |
| 9 | +project][elixir-cloud-aai-github]. |
| 10 | + |
| 11 | +## Description |
| 12 | + |
| 13 | +cwl-WES (formerly: WES-ELIXIR) is a Flask/Gunicorn |
| 14 | +application that makes use of [Connexion](https://github.com/ga4gh/workflow-execution-service-schemas) to implement the |
| 15 | +[GA4GH WES OpenAPI specification][ga4gh-wes]. It enables clients/users |
| 16 | +to execute [CWL](https://www.commonwl.org) workflows in the cloud via a [GA4GH Task Execution |
| 17 | +Service][ga4gh-tes] (TES)-compatible execution backend (e.g., |
| 18 | +[TESK][tesk] or [Funnel][funnel]). Workflows can be sent for execution, |
| 19 | +previous runs can be listed, and the status and run information of individual |
| 20 | +runs can be queried. The service leverages [cwl-tes][res-cwl-tes] to |
| 21 | +interpret [CWL](https://www.commonwl.org) workflows, break them down into individual tasks and |
| 22 | +emit [GA4GH TES][ga4gh-tes]-compatible HTTP requests to a configured |
| 23 | +[TES][ga4gh-tes] instance. Access to endpoints can be configured to require |
| 24 | +JSON Web Token-based access tokens, such as those issued by |
| 25 | +[ELIXIR AAI](https://elixir-europe.org/platforms/compute/aai). Run information is stored in a |
| 26 | +MongoDB database. |
| 27 | + |
| 28 | +Note that development is currently in beta stage. |
| 29 | +Further test deployments can be found at the [ELIXIR Cloud & AAI's resource |
| 30 | +listings](https://github.com/elixir-cloud-aai/elixir-cloud-aai/blob/dev/resources/resources.md). |
| 31 | + |
| 32 | +cwl-WES is developed and maintained by the [ELIXIR Cloud & AAI |
| 33 | +project][elixir-cloud], a multinational effort aimed at establishing and |
| 34 | +implementing [FAIR][fair] research in the Life Sciences. |
| 35 | + |
| 36 | +## Installation |
| 37 | + |
| 38 | +You can find a Helm chart in the [GitHub repository](https://github.com/elixir-cloud-aai/cwl-wes/tree/dev/deployment) of CWL-WES |
| 39 | + |
| 40 | +Follow these instructions |
| 41 | + |
| 42 | +- Install [Helm][helm-install] |
| 43 | +- Clone the [CWL-WES repository](https://github.com/elixir-cloud-aai/cwl-wes/) |
| 44 | + |
| 45 | + ```sh |
| 46 | + git clone https://github.com/elixir-cloud-aai/cwl-wes.git |
| 47 | + ``` |
| 48 | + |
| 49 | +- Browse to `deployment` to find the `Chart.yaml` and the `values.yaml` files |
| 50 | + |
| 51 | +## Usage |
| 52 | + |
| 53 | +First you must create a namespace in Kubernetes in which to deploy CWL-WES. The |
| 54 | +commands below assume that everything is created in the context of this |
| 55 | +namespace. How the namespace is created depends on the cluster, so we won't |
| 56 | +document it here. |
| 57 | +
|
| 58 | +You need to edit the `values.yaml` file |
| 59 | +
|
| 60 | +After this you can deploy CWL-WES using `helm`: |
| 61 | +
|
| 62 | +```bash |
| 63 | +helm install CWL-WES . -f values.yaml |
| 64 | +``` |
| 65 | +
|
| 66 | +### Updates |
| 67 | +
|
| 68 | +If you want to edit any of the Deployments, you can update them with |
| 69 | +`helm` and the `values.yaml` file. Once edited, you can run this command: |
| 70 | +
|
| 71 | +```bash |
| 72 | +helm upgrade CWL-WES . -f values.yaml |
| 73 | +``` |
| 74 | +
|
| 75 | +## Technical details |
| 76 | +
|
| 77 | +### MongoDB |
| 78 | +
|
| 79 | +The MongoDB database is deployed using: |
| 80 | +
|
| 81 | +- `templates/mongodb-deployment.yaml` |
| 82 | +
|
| 83 | +### RabbitMQ |
| 84 | +
|
| 85 | +The message broker RabbitMQ that allows the app to communicate with the |
| 86 | +worker is deployed using: |
| 87 | +
|
| 88 | +- `templates/rabbitmq/rabbitmq-deployment.yaml` |
| 89 | +
|
| 90 | +### CWL-WES |
| 91 | +
|
| 92 | +CWL-WES consists of a Flask server and a Celery worker. |
| 93 | +There are deployed using: |
| 94 | +
|
| 95 | +- `templates/wes-deployment.yaml` |
| 96 | +- `templates/celery-deployment.yaml` |
| 97 | +
|
| 98 | +## Destroy |
| 99 | +
|
| 100 | +Simply run: |
| 101 | +
|
| 102 | +```bash |
| 103 | +helm uninstall cwl-wes |
| 104 | +``` |
| 105 | +
|
0 commit comments