Dag Nested
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, Parameter, Workflow
echo = Container(
name="echo",
inputs=Parameter(name="message"),
image="alpine:3.7",
command=["echo", "{{inputs.parameters.message}}"],
)
with Workflow(generate_name="dag-nested-", entrypoint="diamond") as w:
with DAG(name="nested-diamond", inputs=[Parameter(name="message")]) as nested_diamond:
A = echo(name="A", arguments={"message": "{{inputs.parameters.message}}A"})
B = echo(name="B", arguments={"message": "{{inputs.parameters.message}}B"})
C = echo(name="C", arguments={"message": "{{inputs.parameters.message}}C"})
D = echo(name="D", arguments={"message": "{{inputs.parameters.message}}D"})
A >> [B, C] >> D
with DAG(name="diamond") as diamond:
A = nested_diamond(name="A", arguments={"message": "A"})
B = nested_diamond(name="B", arguments={"message": "B"})
C = nested_diamond(name="C", arguments={"message": "C"})
D = nested_diamond(name="D", arguments={"message": "D"})
A >> [B, C] >> D
|
| apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: dag-nested-
spec:
entrypoint: diamond
templates:
- name: nested-diamond
dag:
tasks:
- name: A
template: echo
arguments:
parameters:
- name: message
value: '{{inputs.parameters.message}}A'
- name: B
depends: A
template: echo
arguments:
parameters:
- name: message
value: '{{inputs.parameters.message}}B'
- name: C
depends: A
template: echo
arguments:
parameters:
- name: message
value: '{{inputs.parameters.message}}C'
- name: D
depends: B && C
template: echo
arguments:
parameters:
- name: message
value: '{{inputs.parameters.message}}D'
inputs:
parameters:
- name: message
- name: echo
container:
image: alpine:3.7
command:
- echo
- '{{inputs.parameters.message}}'
inputs:
parameters:
- name: message
- name: diamond
dag:
tasks:
- name: A
template: nested-diamond
arguments:
parameters:
- name: message
value: A
- name: B
depends: A
template: nested-diamond
arguments:
parameters:
- name: message
value: B
- name: C
depends: A
template: nested-diamond
arguments:
parameters:
- name: message
value: C
- name: D
depends: B && C
template: nested-diamond
arguments:
parameters:
- name: message
value: D
|