Skip to content

Dag Enhanced Depends

Note

This example is a replication of an Argo Workflow example in Hera. The upstream example can be found here.

from hera.workflows import DAG, Container, Workflow

with Workflow(
    generate_name="dag-diamond-",
    entrypoint="diamond",
) as w:
    pass_ = Container(
        name="pass",
        image="alpine:3.7",
        command=["sh", "-c", "exit 0"],
    )
    fail = Container(
        name="fail",
        image="alpine:3.7",
        command=["sh", "-c", "exit 1"],
    )
    with DAG(name="diamond"):
        A = pass_(name="A")
        B = pass_(name="B")
        C = fail(name="C")
        should_execute_1 = pass_(name="should-execute-1", depends="A && (C.Succeeded || C.Failed)")
        should_execute_2 = pass_(name="should-execute-2", depends="B || C")
        should_not_execute = pass_(name="should-not-execute", depends="B && C")
        should_execute_3 = pass_(name="should-execute-3", depends="should-execute-2.Succeeded || should-not-execute")

        A >> [B, C]
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: dag-diamond-
spec:
  entrypoint: diamond
  templates:
  - name: pass
    container:
      image: alpine:3.7
      command:
      - sh
      - -c
      - exit 0
  - name: fail
    container:
      image: alpine:3.7
      command:
      - sh
      - -c
      - exit 1
  - name: diamond
    dag:
      tasks:
      - name: A
        template: pass
      - name: B
        depends: A
        template: pass
      - name: C
        depends: A
        template: fail
      - name: should-execute-1
        depends: A && (C.Succeeded || C.Failed)
        template: pass
      - name: should-execute-2
        depends: B || C
        template: pass
      - name: should-not-execute
        depends: B && C
        template: pass
      - name: should-execute-3
        depends: should-execute-2.Succeeded || should-not-execute
        template: pass

Comments