ZOO-Projecr runner using Argo Workflows to process an Application Package encoded in CWL.
Project description
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
)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file zoo_argowf_runner-0.2.0.tar.gz.
File metadata
- Download URL: zoo_argowf_runner-0.2.0.tar.gz
- Upload date:
- Size: 22.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
28d6c7c73fade4e5af06a7a5d9fe0e7280ae21806615d82c7f1b0c54fed9dab1
|
|
| MD5 |
3e257fd1a39fadb83de926e6b45390fc
|
|
| BLAKE2b-256 |
bc3d9d8c7cf34118b1da717d14c3a8fd0979dce7ead8824d55799ab4e4293b55
|
Provenance
The following attestation bundles were made for zoo_argowf_runner-0.2.0.tar.gz:
Publisher:
package.yaml on ZOO-Project/zoo-argowf-runner
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zoo_argowf_runner-0.2.0.tar.gz -
Subject digest:
28d6c7c73fade4e5af06a7a5d9fe0e7280ae21806615d82c7f1b0c54fed9dab1 - Sigstore transparency entry: 846123187
- Sigstore integration time:
-
Permalink:
ZOO-Project/zoo-argowf-runner@334e8acc01a8bd3523318c7642cd69804b62ba28 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/ZOO-Project
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
package.yaml@334e8acc01a8bd3523318c7642cd69804b62ba28 -
Trigger Event:
release
-
Statement type:
File details
Details for the file zoo_argowf_runner-0.2.0-py3-none-any.whl.
File metadata
- Download URL: zoo_argowf_runner-0.2.0-py3-none-any.whl
- Upload date:
- Size: 13.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5da9cb2db6953d806a02f33194679279a22109a22b53abb9b4957affd8696f77
|
|
| MD5 |
033ef02dfb158414f9f27300a1f80b7d
|
|
| BLAKE2b-256 |
509021529e8b76f9f82630d8f235b9cb20c5003182cbd5d7e0bc8593bccafa60
|
Provenance
The following attestation bundles were made for zoo_argowf_runner-0.2.0-py3-none-any.whl:
Publisher:
package.yaml on ZOO-Project/zoo-argowf-runner
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zoo_argowf_runner-0.2.0-py3-none-any.whl -
Subject digest:
5da9cb2db6953d806a02f33194679279a22109a22b53abb9b4957affd8696f77 - Sigstore transparency entry: 846123195
- Sigstore integration time:
-
Permalink:
ZOO-Project/zoo-argowf-runner@334e8acc01a8bd3523318c7642cd69804b62ba28 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/ZOO-Project
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
package.yaml@334e8acc01a8bd3523318c7642cd69804b62ba28 -
Trigger Event:
release
-
Statement type: