Skip to main content

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 BaseRunner for common methods
  • ✅ zoo_helpers.py completely removed (was 271 lines)
  • ✅ Uses shared ZooConf, ZooInputs, ZooOutputs, CWLWorkflow classes
  • ✅ Implements ExecutionHandler interface 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 to standard.
  • DEFAULT_VOLUME_SIZE: Calrissian default RWX volume size, defaults to 12Gi.
  • DEFAULT_MAX_CORES: Calrissian default max cores, defaults to 4.
  • DEFAULT_MAX_RAM: Calrissian default max RAM, defaults to 4Gi.
  • 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 --decode
  • ARGO_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:

  • results is the Calrissian job stdout
  • log is the Calrissian job stderr
  • usage-report is the Calrissian usage report
  • stac-catalog is the s3 path to the published STAC Catalog
  • feature-collection is the Feature Collection with the STAC Items produced

And the artifacts:

  • tool-logs is 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-output is the Calrissian stdout
  • calrissian-stderr is the Calrissian job stderr
  • calrissian-report is 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)

Source distribution for zoo-argowf-runner 0.2.1
File Size Uploaded
zoo_argowf_runner-0.2.1.tar.gz 31.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for zoo-argowf-runner 0.2.1
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 release files

0.2.0

2 release files

0.1.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page