Line: 1 to 1 | ||||||||
---|---|---|---|---|---|---|---|---|
Cromwell-workflow-management-systemCromwell is a workflow management system geared towards scientific workflows. More information can be found online![]() | ||||||||
Line: 15 to 15 | ||||||||
If you want to request a (personal) Cromwell service, send an e-mail to hpc-systems@lists.umcutrecht.nl with:
Required information | ||||||||
Changed: | ||||||||
< < |
| |||||||
> > |
| |||||||
| ||||||||
Line: 58 to 58 | ||||||||
And tells you that the workflow succeeded; which entails it successfully finished. | ||||||||
Changed: | ||||||||
< < | Aborting a running workflow is also facilitated by a RESTful endpoint![]() abort in combination with the the id of the job. For instance; running curl -X POST https://johndoe.hpccw.op.umcutrecht.nl/api/workflows/v1/3415ad29-ecc0-4a9d-93e2-660d0a95945d/abort![]() | |||||||
> > | Aborting a running workflow is also facilitated by a RESTful endpoint![]() abort in combination with the id of the job. For instance; running curl -X POST https://johndoe.hpccw.op.umcutrecht.nl/api/workflows/v1/3415ad29-ecc0-4a9d-93e2-660d0a95945d/abort![]() | |||||||
{ "status": "Aborted", |
Line: 1 to 1 | ||||||||
---|---|---|---|---|---|---|---|---|
Added: | ||||||||
> > | Cromwell-workflow-management-systemCromwell is a workflow management system geared towards scientific workflows. More information can be found online![]() ![]() HPC Cromwell-as-a-service (CaaS)The HPC team has setup a Cromwell-as-a-service. This (CaaS) is serviced from a dedicated server running a separate Cromwell-service instance per user. A user can then post jobs to a provided URL of his/her personal instance. A posted job (or workflow) will then be processed on the HPC in the users’s name. A user will need to explicitly request access to the service for it is quite a waste to have one for each user by default; not everyone will use the service. The (CaaS) is secured by a Basic Authentication with a custom username / password. When posting a job to the (CaaS) you need to submit these credentials. Before you request usage of the (CaaS) we kindly request you to quickly scan the Cromwell documentation![]() ![]() ![]() ![]() Apply for the serviceIf you want to request a (personal) Cromwell service, send an e-mail to hpc-systems@lists.umcutrecht.nl with:Required information
Optional information
Example: job submissionA workflow can be submitted to the RESTful API endpoints![]() cURL .
Below is an example where hello.wdl is the workflow, name.json is the input for the workflow, and johndoe is the user:
$ curl -X POST "https://johndoe.hpccw.op.umcutrecht.nl/api/workflows/v1" \ --user johndoe:password1 \ --header "accept: application/json" \ --header "Content-Type: multipart/form-data" \ --form "workflowSource=@hello.wdl" \ --form "workflowInputs=@name.json"This should then output: { "id":"3415ad29-ecc0-4a9d-93e2-660d0a95945d", "status":"Submitted" }Which tells us that the job is been successfully submitted to Cromwell and has been given the id 3415ad29-ecc0-4a9d-93e2-660d0a95945d .
Cromwell will pick up the job and start to execute each of the tasks in the workflow on a submit node of the HPC.
Keeping tabs on the progression of the workflow can be done via the RESTful endpoints![]() status /timing /metadata in combination with the the id of the job. For instance; visiting https://johndoe.hpccw.op.umcutrecht.nl/api/workflows/v1/3415ad29-ecc0-4a9d-93e2-660d0a95945d/status in the browser will output:
{ "status": "Succeeded", "id": "3415ad29-ecc0-4a9d-93e2-660d0a95945d" }And tells you that the workflow succeeded; which entails it successfully finished. Aborting a running workflow is also facilitated by a RESTful endpoint ![]() abort in combination with the the id of the job. For instance; running curl -X POST https://johndoe.hpccw.op.umcutrecht.nl/api/workflows/v1/3415ad29-ecc0-4a9d-93e2-660d0a95945d/abort![]() { "status": "Aborted", "id": "3415ad29-ecc0-4a9d-93e2-660d0a95945d" } Alternative submissions toolsDoing every submission via cURL can be bothersome. Nearly all popular programming languages have packages or support for calling RESTful APIs (e.g. Python:requests, R:RCurl. However, there are several Cromwell specific alternatives.Swagger UISimply visitinghttps://johndoe.hpccw.op.umcutrecht.nl in a browser will provide you with a Swagger user interface that can aid in building and test cURL-like calls to the Cromwell service.
Python package: cromwell-toolsBroad institute has also developed a Python package![]() $ cromwell-tools submit --username johndoe --password password1 --url https://johndoe.hpccw.op.umcutrecht.nl -w hello.wdl -i name.json Technical detailsCaching heuristicsHaving each Cromwell service calculate a md5 checksum over multiple files puts a considerable load on the input/output throughput of the HPC storage. As such, Cromwell is configured to use"path+modtime" instead of "file" as caching heuristic. More information can be found here![]() Outside access to the (CaaS)The URL of the Cromwell service (i.e.https://johndoe.hpccw.op.umcutrecht.nl ) can only be accessed from within permitted domains. The UMC domain is permitted by default. It is possible to permit access from a different domain; please contact hpc-systems@lists.umcutrecht.nl and provide a source IP address.
ConfigurationTo reduce administrative load for the HPC team only a single configuration exists for all Cromwell services of a specific version. These are provided by the Kemmeren group in Princess Máxima Center and are a result of years of experience with Cromwell. The configurations are hosted on bitbucket![]() WDL versionAt the time of writing the WDLs submitted to the Cromwell service are by default expected to be indraft-2 of the WDL specifications. You can override this via workflow options![]() HowToSBackup a (CaaS) databaseBy default your (CaaS) database with the workflow cache and metadata is NOT backed up. It is possible to set this up yourself; access to the MySQL database is provided.
Restore a (CaaS) databaseRestoring a (gzipped) database dump can be done as follows 1. Login to one of the HPC transfer nodes$ ssh johndoe@hpct01.op.umcutrecht.nl1. Unpack the backup while redirecting it to the mysql client $ gunzip < johndoe-backup.sql.gz | mysql --user=johndoe --password --host=johndoe.hpccw02.compute.hpc johndoe Connect to the (CaaS) via the HPC gatewayThe permitted-domain security of the (CaaS) can be circumvented in a slightly convoluted way by use of a SSH-proxy jump via the HPC gateway with the addition of a port forward:$ ssh -L 4242:johndoe.hpccw.op.umcutrecht.nl:443 \ -l johndoe \ -o ProxyCommand='ssh -q %r@hpcgw.op.umcutrecht.nl -W %h:%p' \ hpcsubmit.op.umcutrecht.nlIf you then communicate with a RESTful endpoint you NEED to communicate with URL https://localhost:4242 (note the https) instead of https://johndoe.hpccw.op.umcutrecht.nl , set the Host header for the HTTP request, and allow for insecure connections:
$ curl https://localhost:4242/api/workflows/v1/backends \ --insecure \ --user johndoe:password1 \ --header "Host: johndoe.hpccw.op.umcutrecht.nl" WDL examplesBelow are the content of the files that are used in the examples above. A full WDL specification can be found online![]() file: hello.wdltask hello { String name command { echo 'Hello ${name}!' } output { File response = stdout() } } workflow test { call hello } file: name.json{ "test.hello.name": "World" } |