I'm looking to setup argo-events to trigger a data-logging workflow when a "regular" workflow is submitted. Following the resource event source docs, I can do this, but I cannot find how to encode and extract variables as is done using the webhook parameterization.
So I want to submit the following workflow:
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: test-logger-workflow-
labels:
class: dummy-in
submitaction: log-this
wfuser: m-wf
wfteam: a-wf
spec:
entrypoint: whalesay
templates:
- name: whalesay
container:
image: docker/whalesay:latest
command: [cowsay]
args: ["hello world - manual submit - was log created?"]
and then access these labels in the trigger:
apiVersion: argoproj.io/v1alpha1
kind: Sensor
metadata:
name: resource-logger
spec:
template:
serviceAccountName: operate-workflow-sa
dependencies:
- name: test-dep-sensor
eventSourceName: resource-wf-submit
eventName: log-this
triggers:
- template:
name: argo-workflow
k8s:
operation: create
source:
resource:
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: resource-workflow-
labels:
class: dummy-out
spec:
entrypoint: mylogger
arguments:
parameters:
- name: user
value: default-name
- name: group
value: default-group
- name: description
value: triggered by argo submission
templates:
- name: logger
inputs:
parameters:
- name: user
- name: group
- name: description
container:
image: logger:latest
imagePullPolicy: Always
command: [/app/logger.py]
args: ["-w", "argo-events", "-u", "{{inputs.parameters.user}}", "-t", "{{inputs.parameters.group}}", "-d", "{{inputs.parameters.description}}"]
parameters:
- src:
dependencyName: test-dep-user
??
dest: spec.arguments.parameters.0.value
- src:
dependencyName: test-dep-group
??
dest: spec.arguments.parameters.1.value
- src:
dependencyName: test-dep-description
??
dest: spec.arguments.parameters.2.value
What do I need to put in in place of "??" to get the wfuser
and wfteam
values from the workflow?
Is there a generic way to access any of the workflow structure, e.g. populate the description with the image
value (docker/whalesay:latest
)?
The error I had is that spec.dependencies.name
(test-dep-sensor
) and spec.triggers.template.k8s.parameters.src.dependencyName
need to match, otherwise the latter isn't included/processed:
apiVersion: argoproj.io/v1alpha1
kind: Sensor
metadata:
name: resource-logger
spec:
template:
serviceAccountName: operate-workflow-sa
dependencies:
- name: test-dep-sensor
eventSourceName: resource-wf-submit
eventName: log-this
triggers:
- template:
name: argo-workflow
k8s:
operation: create
source:
resource:
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: resource-workflow-
labels:
class: dummy-out
spec:
entrypoint: mylogger
arguments:
parameters:
- name: description
value: triggered by argo submission
- name: user
value: default-name
- name: group
value: default-group
templates:
- name: logger
inputs:
parameters:
- name: description
- name: user
- name: group
container:
image: logger:latest
imagePullPolicy: Always
command: [/app/logger.py]
args: ["-w", "argo-events", "-u", "{{inputs.parameters.user}}", "-t", "{{inputs.parameters.group}}", "-d", "{{inputs.parameters.description}}"]
parameters:
- src:
dependencyName: test-dep-sensor
dataKey: body
dest: spec.arguments.parameters.0.value