Skip to main content

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 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
)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zoo_argowf_runner-0.2.0.tar.gz (22.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

zoo_argowf_runner-0.2.0-py3-none-any.whl (13.9 kB view details)

Uploaded Python 3

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

Hashes for zoo_argowf_runner-0.2.0.tar.gz
Algorithm Hash digest
SHA256 28d6c7c73fade4e5af06a7a5d9fe0e7280ae21806615d82c7f1b0c54fed9dab1
MD5 3e257fd1a39fadb83de926e6b45390fc
BLAKE2b-256 bc3d9d8c7cf34118b1da717d14c3a8fd0979dce7ead8824d55799ab4e4293b55

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zoo_argowf_runner-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for zoo_argowf_runner-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5da9cb2db6953d806a02f33194679279a22109a22b53abb9b4957affd8696f77
MD5 033ef02dfb158414f9f27300a1f80b7d
BLAKE2b-256 509021529e8b76f9f82630d8f235b9cb20c5003182cbd5d7e0bc8593bccafa60

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page