Define key value pair for Argo-Events sensor trigger payload

600 Views Asked by At

I'm trying to fill the Argo-Events Sensor Nats trigger payload with custom key value pairs. These values are not part of the dependency. Anyone knows a way to do this?

From docs:

Payload is the list of key-value extracted from an event payload to construct the request payload.

Sensor definition:

apiVersion: argoproj.io/v1alpha1
kind: Sensor
metadata:
  name: minio-sensor
spec:
  dependencies:
    - name: test-dep
      eventSourceName: minio
      eventName: example
  triggers:
    - template:
        name: nats-trigger
        nats:
          # NATS Server URL
          url: nats.argo-events.svc:4222
          # Name of the subject
          subject: minio-events
          payload:
            - someKey: someValue
            - src:
                dependencyName: test-dep
                dataKey: notification.0.s3.object.key
              dest: fileName
1

There are 1 best solutions below

0
On BEST ANSWER

Finally found a solution. Two actually. (Best use Argo-Events version >= 1.6.0)

  1. Modify event body for dependency.
apiVersion: argoproj.io/v1alpha1
kind: Sensor
metadata:
  name: minio-sensor
spec:
  dependencies:
    - name: test-dep
      eventSourceName: minio
      eventName: example
      transform:
        script: |-
          event.body.someKey='someValue'
          return event
  triggers:
    - template:
        name: nats-trigger
        nats:
          # NATS Server URL
          url: nats.argo-events.svc:4222
          # Name of the subject
          subject: minio-events
          payload:
            - src:
                dependencyName: test-dep
                dataKey: body.someKey
              dest: someKey
            - src:
                dependencyName: test-dep
                dataKey: notification.0.s3.object.key
              dest: fileName
  1. Use default value for non-existing path.
apiVersion: argoproj.io/v1alpha1
kind: Sensor
metadata:
  name: minio-sensor
spec:
  dependencies:
    - name: test-dep
      eventSourceName: minio
      eventName: example
  triggers:
    - template:
        name: nats-trigger
        nats:
          # NATS Server URL
          url: nats.argo-events.svc:4222
          # Name of the subject
          subject: minio-events
          payload:
            - src:
                dependencyName: test-dep
                dataKey: body.non-existing
                value: someValue
              dest: someKey
            - src:
                dependencyName: test-dep
                dataKey: notification.0.s3.object.key
              dest: fileName