Search code examples
yamlargocdargo-events

Define key value pair for Argo-Events sensor trigger payload


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

Solution

  • 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