Bài này chúng ta lấy output của 1 task khác để sử dụng đưa vào withParam để loop cho task khách.
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
name: wf-loop-dynamic
spec:
entrypoint: dag-template
arguments:
parameters:
- name: message1
value: Task 1 is executed
- name: ingrest-list
value: |
[
{ "extractor": "PythonExtractor", "table": "Table 1" },
{ "extractor": "GolangExtractor", "table": "Table 2" },
{ "extractor": "PHPExtractor", "table": "Table 3" }
]
templates:
- name: dag-template
inputs:
parameters:
- name: message1
dag:
tasks:
- name: Task1
arguments:
parameters: [{name: text, value: "{{inputs.parameters.message1}}"}]
template: task-template
- name: Task2
template: task-generate-list
- name: Task3
template: task-loop-sets
dependencies: [Task2]
arguments:
parameters:
- name: extractor
value: "{{item.extractor}}"
- name: table
value: "{{item.table}}"
withParam: "{{tasks.Task2.outputs.result}}"
- name: task-template
inputs:
parameters:
- name: text
script:
image: python:3.8-slim
command:
source: |
p = "{{inputs.parameters.text}}"
print(p)
- name: task-generate-list
script:
image: python:3.8-slim
command:
source: |
import json
import sys
list = [("Python", "Table1"), ("Golang", "Table2"), ("PHP", "Table3")]
json.dump([{"extractor": i[0], "table": i[1]} for i in list], sys.stdout)
- name: task-loop-sets
inputs:
parameters:
- name: extractor
- name: table
script:
image: python:3.8-slim
command:
source: |
print("Applying ", "{{inputs.parameters.extractor}}", "to the table ", "{{inputs.parameters.table}}")

Đâu tiên chúng ta sẽ sử dụng task 2 để generate ra list và output ra sdtout

đưa output của task 2 vào withParam của task3

