zoo-argowf-runner
ZOO-Project runner using Argo Workflows
🔗 Dependencies
This runner now uses zoo-runner-common for shared functionality, eliminating ~361 lines of duplicated code (including complete removal of zoo_helpers.py).
Key changes:
- ✅ Inherits from
BaseRunnerfor common methods - ✅
zoo_helpers.pycompletely removed (was 271 lines) - ✅ Uses shared
ZooConf,ZooInputs,ZooOutputs,CWLWorkflowclasses - ✅ Implements
ExecutionHandlerinterface from zoo-runner-common - ✅ Focuses only on Argo Workflows-specific logic
Installation
Install with zoo-runner-common dependency:
pip install zoo-argowf-runner
# Or from source:
pip install -e .
Environment variables
STORAGE_CLASS: k8s cluster RWX storage class, defaults tostandard.DEFAULT_VOLUME_SIZE: Calrissian default RWX volume size, defaults to12Gi.DEFAULT_MAX_CORES: Calrissian default max cores, defaults to4.DEFAULT_MAX_RAM: Calrissian default max RAM, defaults to4Gi.ARGO_WF_ENDPOINT: this is the Argo Workflows API endpoint, defaults to"http://localhost:2746".ARGO_WF_TOKEN: this is the Argo Workflows API token that can be retrieved with:kubectl get -n ns1 secret argo.service-account-token -o=jsonpath='{.data.token}' | base64 --decodeARGO_WF_SYNCHRONIZATION_CM: this is the Argo Workflows synchronizaion configmap (with key "workflow"). For tests, we use "semaphore-argo-cwl-runner"ARGO_CWL_RUNNER_TEMPLATE: this is the Argo Workflows WorkflowTemplate that runs the CWL, defaults to: "argo-cwl-runner"ARGO_CWL_RUNNER_ENTRYPOINT: this is the Argo Workflows WorkflowTemplate entrypoint, defaults to: "calrissian-runner"
Requirements
The Argo Workflows deployment has a Argo Workflows WorkflowTemplate or ClusterWorkflowTemplate impllementing the execution of a Calrissian Job and exposing the interface:
Input parameters:
templates:
- name: calrissian-runner
inputs:
parameters:
- name: parameters
description: Parameters in JSON format
- name: cwl
description: CWL document in JSON format
- name: max_ram
default: 8G
description: Max RAM (e.g. 8G)
- name: max_cores
default: '4'
description: Max cores (e.g. 4)
- name: entry_point
description: CWL document entry_point
Outputs:
outputs:
parameters:
- name: results
valueFrom:
parameter: '{{steps.get-results.outputs.parameters.calrissian-output}}'
- name: log
valueFrom:
parameter: '{{steps.get-results.outputs.parameters.calrissian-stderr}}'
- name: usage-report
valueFrom:
parameter: '{{steps.get-results.outputs.parameters.calrissian-report}}'
- name: stac-catalog
valueFrom:
parameter: '{{steps.stage-out.outputs.parameters.stac-catalog}}'
- name: feature-collection
valueFrom:
parameter: >-
{{steps.feature-collection.outputs.parameters.feature-collection}}
artifacts:
- name: tool-logs
from: '{{steps.get-results.outputs.artifacts.tool-logs}}'
- name: calrissian-output
from: '{{steps.get-results.outputs.artifacts.calrissian-output}}'
- name: calrissian-stderr
from: '{{steps.get-results.outputs.artifacts.calrissian-stderr}}'
- name: calrissian-report
from: '{{steps.get-results.outputs.artifacts.calrissian-report}}'
Where:
resultsis the Calrissian job stdoutlogis the Calrissian job stderrusage-reportis the Calrissian usage reportstac-catalogis the s3 path to the published STAC Catalogfeature-collectionis the Feature Collection with the STAC Items produced
And the artifacts:
tool-logsis the Calrissian CWL step logs defined as:
artifacts:
- name: tool-logs
path: /calrissian/logs
s3:
key: '{{workflow.name}}-{{workflow.uid}}-artifacts/tool-logs'
archive:
none: {}
calrissian-outputis the Calrissian stdoutcalrissian-stderris the Calrissian job stderrcalrissian-reportis the Calrissian usage report
See the example provided in folder example
Caveats
Additional volumes in the Argo Workflows WorkflowTemplate that runs the CWL
Let's say one wants to add a configmap on the Argo Workflows WorkflowTemplate that runs the CWL.
By design, this volume must also be declared in an Argo Workflows Workflow that wants to run the WorkflowTemplate in a step.
This means that if the Argo Workflows WorkflowTemplate that runs the CWL declares:
volumes:
- name: cwl-wrapper-config-vol
configMap:
name: cwl-wrapper-config
items:
- key: main.yaml
- key: rules.yaml
- key: stage-in.cwl
- key: stage-out.cwl
The
config_map_volume(
name="cwl-wrapper-config-vol",
configMapName="cwl-wrapper-config",
items=[
{"key": "main.yaml"},
{"key": "rules.yaml"},
{"key": "stage-in.yaml"},
{"key": "stage-out.yaml"},
],
defaultMode=420,
optional=False,
)
Metadata
Release files for zoo-argowf-runner 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| zoo_argowf_runner-0.2.1.tar.gz | 31.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| zoo_argowf_runner-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 49.5 kB
Release files / zoo_argowf_runner-0.2.1.tar.gz
| Download URL | zoo_argowf_runner-0.2.1.tar.gz |
|---|---|
| Size | 31.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2fa8cf548fb06d9927b775db8b363d67fc542793859ff9fb7d271d3e8f2be5f6
|
|
BLAKE2b-256 checksum How to use checksums |
2e03989e6e22b681d40949c2ec9d9a8de98d7d1caaa05db48e543ee6f5bfae7d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.
Transparency logRelease files / zoo_argowf_runner-0.2.1-py3-none-any.whl
| Download URL | zoo_argowf_runner-0.2.1-py3-none-any.whl |
|---|---|
| Size | 18.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e3505916fffe1e268b49ff3079054e3e42ab021a059ea39b94d85a2804c566e6
|
|
BLAKE2b-256 checksum How to use checksums |
f3159dcf6318c3a02bd7b70a8d3f7aaa701e9efcda729be6896bb70086715a74
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.
Transparency log