@@ -3,7 +3,6 @@ name: arteria-packs.ngi_uu_workflow
description: The ngi workflow, from sequencer to remote system...

workflows:

main:
type: direct
input:
@@ -12,96 +11,217 @@ workflows:
- run_type
- remote_host
- trigger_ngi_pipeline
- send_mail_to
- bcl2fastq_service_port
- bcl2fastq_version
- barcode_mismatches
- tiles
- use_base_mask
- bcl2fastq_additional_arguments
- siswrap_service_port
output:
output_the_whole_workflow_context: <% $ %>
stdout: < $.stdout %>
task-defaults:
on-error:
- oh_shit_error_main

tasks:
get_runfolder_name:
action: core.local
input:
cmd: python -c 'import sys; sys.stdout.write("<% $.runfolder %>".split("/")[-1])'
publish:
runfolder_name: <% $.get_runfolder_name.stdout %>
report_err: <% $.get_runfolder_name.stdout %> <% $.get_runfolder_name.stderr %>
runfolder_name: "<% $.get_runfolder_name.stdout %>"
on-success:
- get_demultiplex_config

### DEMULTIPLEX START ###

get_demultiplex_config:
action: arteria-packs.get_pack_config
publish:
hermes_base_url: <% $.get_config.result.hermes_base_url %>
hermes_user: <% $.get_config.result.hermes_user %>
hermes_token: <% $.get_config.result.hermes_token %>
on-success:
- get_flowcell_name
on-error:
- print_error

get_flowcell_name:
action: arteria-packs.get_flowcell_from_runfolder_name
input:
runfolder_name: < $.runfolder_name >
runfolder_name: <% $.runfolder_name %>
publish:
flowcell_name: <% $.get_flowcell_name.result %>
on-success:
- download_samplesheet

download_samplesheet:
action: core.http
input:
url: <% $.hermes_base_url %>/<% $.flowcell_name %>/samplesheetfile
headers: USER=<% $.hermes_user %>&X-XSRF-TOKEN=<% $.hermes_token %>
publish:
samplesheet_string: <% $.download_samplesheet.body.samplesheet %>
on-success:
- construct_bcl2fastq_body

# Since we don't want to pass empty values into
# bcl2fastq-ws, we remove any empty keys from
# this body.
construct_bcl2fastq_body:
action: arteria-packs.parse_bcl2fastq_args
input:
samplesheet: "<% $.samplesheet_string %>"
bcl2fastq_version: "<% $.bcl2fastq_version %>"
barcode_mismatches: "<% $.barcode_mismatches %>"
tiles: "<% $.tiles %>"
use_base_mask: "<% $.use_base_mask %>"
additional_arguments: "<% $.bcl2fastq_additional_arguments %>"
publish:
flowcell_name: <% $.get_flowcell_name.stdout %>
report_err: <% $.get_flowcell_name.stdout %> <% $.get_flowcell_name.stderr %>
bcl2fastq_body: <% $.construct_bcl2fastq_body.stdout %>
on-success:
- demultiplex
on-error:
- print_error
- run_bcl2fastq

demultiplex:
action: arteria-packs.demultiplex
run_bcl2fastq:
action: core.http
input:
host: "<% $.host %>"
runfolder_name: "<% $.runfolder_name %>"
run_type: "<% $.run_type %>"
url: "http://<% $.host %>:<% $.bcl2fastq_service_port %>/api/1.0/start/<% $.runfolder_name %>"
method: "POST"
headers: "Content-Type=application/json"
body: <% $.bcl2fastq_body %>
publish:
status_message: "Runfolder <% $.runfolder %> run on <% $.host %>..."
bcl2fastq_status_code: <% $.run_bcl2fastq.status_code %>
bcl2fastq_status_url: <% $.run_bcl2fastq.body.link %>
on-success:
- poll_demultiplex_status

poll_demultiplex_status:
action: arteria-packs.poll_status
input:
url: <% $.bcl2fastq_status_url %>
publish:
poll_out: <% $.poll_status.stdout %>
poll_err: <% $.poll_status.stderr %>
on-success:
- run_sisyphus_quick_report

### DEMULTIPLEX END ###

# demultiplex:
# action: arteria-packs.demultiplex
# input:
# host: "<% $.host %>"
# runfolder_name: "<% $.runfolder_name %>"
# run_type: "<% $.run_type %>"
# publish:
# demultiplex_message: "Finished demultiplex for <% $.runfolder %> on <% $.host %>..."
# #error_msg: "<% $.demultiplex.output_the_whole_workflow_context %>"
# #stdout: "<% $.demultiplex.stdout %>"
# #error_msg: "<% $.demultiplex.stdout %> <% $.demultiplex.stderr %>"
# on-success:
# - run_sisyphus_quick_report

### QUICK REPORT START ###

run_sisyphus_quick_report:
action: arteria-packs.sisyphus_quickreport
action: core.http
input:
host: "<% $.host %>"
runfolder: "<% $.runfolder_name %>"
url: "http://<% $.host %>:<% $.siswrap_service_port %>/api/1.0/report/run/<% $.runfolder_name %>"
method: "POST"
headers: "Content-Type=application/json"
body: '{"runfolder": "<% $.runfolder_name %>"}'
publish:
siswrap_err: <% $.run_sisyphus_quick_report.output_the_whole_workflow_context %>
#report_message: "Report generated for <% $.runfolder %> on <% $.host %>"
#report_err: "<% $.run_sisyphus_quick_report.stdout $.run_sisyphus_quick_report.stderr %>"
report_code: "<% $.run_quickreport.status_code %>"
report_msg: "<% $.run_quickreport.body %>"
report_status_url: "<% $.run_quickreport.body.link %>"
report_err: "<% $.run_quickreport.status_code %> <% $.run_quickreport.body %>"
on-success:
- run_sisyphus_quality_control
on-error:
- print_error
- poll_report_status

run_sisyphus_quality_control:
action: arteria-packs.sisyphus_qc
poll_report_status:
action: arteria-packs.poll_status
input:
host: "<% $.host %>"
runfolder: "<% $.runfolder_name %>"
url: "<% $.report_status_url %>"
publish:
qc_message: "QC and report finished for <% $.runfolder %> on <% $.host %>"
siswrap_err: <% $.run_sisyphus_quality_control.output_the_whole_workflow_context %>
#qc_err: <% $.run_sisyphus_quality_control.stdout $.run_sisyphus_quality_control.stderr %>
poll_out: "<% $.poll_status.stdout %>"
poll_err: "<% $.poll_status.stderr %>"
on-success:
- notify
on-error:
- print_error
- run_sisyphus_qc

notify:
action: core.local
### QUICK REPORT END ###


# run_sisyphus_quick_report:
# action: arteria-packs.sisyphus_quickreport
# input:
# host: "<% $.host %>"
# runfolder: "<% $.runfolder_name %>"
# publish:
# report_message: "Report generated for <% $.runfolder %> on <% $.host %>"
# #error_msg: "<% $.run_sisyphus_quick_report.output_the_whole_workflow_context %>"
# #error_msg: "<% $.run_sisyphus_quick_report.stdout $.run_sisyphus_quick_report.stderr %>"
# on-success:
# - run_sisyphus_quality_control

### QUALITY CONTROL START ###

run_sisyphus_qc:
action: core.http
input:
cmd: "printf '<% $.qc_message %>'"
url: "http://<% $.host %>:<% $.siswrap_service_port %>/api/1.0/qc/run/<% $.runfolder_name %>"
method: "POST"
headers: "Content-Type=application/json"
body: '{"runfolder": "<% $.runfolder_name %>"}'
publish:
qc_code: "<% $.run_qc.status_code %>"
qc_msg: "<% $.run_qc.body.msg %>"
qc_status_url: "<% $.run_qc.body.link %>"
qc_err: "<% $.run_quickreport.status_code %> <% $.run_quickreport.body %>"
on-success:
- poll_qc_status

print_error:
action: core.local
poll_qc_status:
action: arteria-packs.poll_status
input:
cmd: "printf 'an error occurred: <% $.siswrap_err %>'"
url: <% $.qc_status_url %>
publish:
poll_out: <% $.poll_status.stdout %>
poll_err: <% $.poll_status.stderr %>
on-success:
- notify_finished

### QUALITY CONTROL END ###


# run_sisyphus_local_processing:
# action: arteria-packs.sisyphus_local_processing
# run_sisyphus_quality_control:
# action: arteria-packs.sisyphus_qc
# input:
# host: "<% $.host %>"
# runfolder: "<% $.runfolder %>"
# host: "<% $.host %>"
# runfolder: "<% $.runfolder_name %>"
# publish:
# qc_message: "QC finished for <% $.runfolder %> on <% $.host %>"
# #error_msg: "<% $.run_sisyphus_quality_control.output_the_whole_workflow_context %>"
# #error_msg: "<% $.run_sisyphus_quality_control.stdout $.run_sisyphus_quality_control.stderr %>"
# on-success:
# - start_ngi_pipeline

# TODO Split out the ngi pipeline processing stuff..
# start_ngi_pipeline:
# action: core.http
# input:
# url: "http://www.uu.se"
# url: "http://localhost:9101/v1/webhooks/ngi_pipeline"
# method: "POST"
# headers: "X-Auth-Token={{system.st2_auth_token}}&Content-Type=application/json"
# body: '{ "start_ngi_pipeline": "<% $.trigger_ngi_pipeline %>" }'
# - notify_finished

notify_finished:
action: core.sendmail
input:
to: <% $.send_mail_to %>
subject: "'[ARTERIA] - Finished processing runfolder <% $.runfolder_name %>'"
body: "Finished processing on <% $.host %> for <% $.runfolder_name %>: <% $.demultiplex_message %> <% $.report_message %> <% $.qc_message %>"


#shit_error:
# action: arteria-packs.oh_shit_error execution_id=<% $.__execution.id %> host=<% $.host %> runfolder=<% $.runfolder %>

oh_shit_error_main:
action: core.sendmail
input:
to: <% $.send_mail_to %>
subject: "'[ARTERIA] - OH SHIT ERROR MAIN occurred for runfolder <% $.runfolder_name %>'"
body: "An oh shit error occurred on <% $.runfolder_name %> on <% $.host %> in main flow. Please investigate!"
on-complete:
- fail
@@ -0,0 +1,17 @@
---
version: '2.0'

oh_shit_error:
input:
- execution_id
- runfolder_name
- host
- send_mail_to

base: core.sendmail
base-input:
to: <% $.send_mail_to %>
subject: "'[ARTERIA] - OH SHIT ERROR error occurred for runfolder <% $.runfolder_name %>'"
body: "An oh shit error occurred on <% $.runfolder_name %> on <% $.host %>. Please investigate!"
on-complete:
- fail
@@ -6,26 +6,26 @@ workflows:

main:
type: direct
# fixme: get port nr from somewhere?
input:
- host
- runfolder_name
- siswrap_service_port
output:
# std_out: <% $.std_out %>
output_the_whole_workflow_context: <% $ %>
std_out: <% $.std_out %>
#output_the_whole_workflow_context: <% $ %>
tasks:
run_qc:
action: core.http
input:
url: "http://<% $.host %>:10900/api/1.0/qc/run/<% $.runfolder_name %>"
url: "http://<% $.host %>:<% $.siswrap_service_port %>/api/1.0/qc/run/<% $.runfolder_name %>"
method: "POST"
headers: "Content-Type=application/json"
body: '{"runfolder": "<% $.runfolder_name %>"}'
publish:
qc_code: <% $.run_qc.status_code %>
qc_msg: <% $.run_qc.body.msg %>
qc_status_url: <% $.run_qc.body.link %>
qc_err: <% $.run_quickreport.status_code %> <% $.run_quickreport.body %>
qc_code: "<% $.run_qc.status_code %>"
qc_msg: "<% $.run_qc.body.msg %>"
qc_status_url: "<% $.run_qc.body.link %>"
qc_err: "<% $.run_quickreport.status_code %> <% $.run_quickreport.body %>"
on-success:
- poll_status
on-error:
@@ -6,26 +6,26 @@ workflows:

main:
type: direct
# fixme: get port nr from somewhere?
input:
- host
- runfolder_name
- siswrap_service_port
output:
# std_out: <% $.std_out %>
output_the_whole_workflow_context: <% $ %>
std_out: <% $.std_out %>
# output_the_whole_workflow_context: <% $ %>
tasks:
run_quickreport:
action: core.http
input:
url: "http://<% $.host %>:10900/api/1.0/report/run/<% $.runfolder_name %>"
url: "http://<% $.host %>:<% $.siswrap_service_port %>/api/1.0/report/run/<% $.runfolder_name %>"
method: "POST"
headers: "Content-Type=application/json"
body: '{"runfolder": "<% $.runfolder_name %>"}'
publish:
report_code: <% $.run_quickreport.status_code %>
report_msg: <% $.run_quickreport.body %>
report_status_url: <% $.run_quickreport.body.link %>
report_err: <% $.run_quickreport.status_code %> <% $.run_quickreport.body %>
report_code: "<% $.run_quickreport.status_code %>"
report_msg: "<% $.run_quickreport.body %>"
report_status_url: "<% $.run_quickreport.body.link %>"
report_err: "<% $.run_quickreport.status_code %> <% $.run_quickreport.body %>"
on-success:
- poll_status
on-error:
@@ -34,11 +34,11 @@ workflows:
poll_status:
action: arteria-packs.poll_status
input:
url: <% $.report_status_url %>
url: "<% $.report_status_url %>"
publish:
poll_out: <% $.poll_status.stdout %>
poll_err: <% $.poll_status.stderr %>
report_err: <% $.poll_status.stdout %> <% $.poll_status.stderr %>
poll_out: "<% $.poll_status.stdout %>"
poll_err: "<% $.poll_status.stderr %>"
report_err: "<% $.poll_status.stdout %> <% $.poll_status.stderr %>"
on-success:
- notify
on-error: