Skip to content

Latest commit

 

History

History
77 lines (65 loc) · 2.26 KB

trigger-conditions.md

File metadata and controls

77 lines (65 loc) · 2.26 KB

Trigger Conditions

v1.0 and after

Triggers can be executed based on different dependency conditions.

An example with conditions:

apiVersion: argoproj.io/v1alpha1
kind: Sensor
metadata:
  name: example
spec:
  dependencies:
    - name: dep01
      eventSourceName: webhook-a
      eventName: example01
    - name: dep02
      eventSourceName: webhook-a
      eventName: example02
   - name: dep03
     eventSourceName: webhook-b
     eventName: example03
  triggers:
    - template:
        conditions: "dep02"
        name: trigger01
        http:
          url: http://abc.com/hello1
          method: GET
    - template:
        conditions: "dep02 && dep03"
        name: trigger02
        http:
          url: http://abc.com/hello2
          method: GET
    - template:
        conditions: "(dep01 || dep02) && dep03"
        name: trigger03
        http:
          url: http://abc.com/hello3
          method: GET

Conditions is a boolean expression contains dependency names, the trigger won't be executed until the expression resolves to true. The operators in conditions include:

  • &&
  • ||

Triggers Without Conditions

If conditions is missing, the default conditions to execute the trigger is && logic of all the defined dependencies.

Conditions Reset

When multiple dependencies are defined for a trigger, the trigger won't be executed until the condition expression is resolved to true. Sometimes you might want to reset all the stakeholders of the conditions, conditions reset is the way to do it.

For example, your trigger has a condition as A && B, both A and B are expected to have an event everyday. One day for some reason, A gets an event but B doesn't, then it ends up with today's A and tomorrow's B triggering an action, which might not be something you want. To avoid that, you can reset the conditions as following:

spec:
  triggers:
    - template:
        conditions: "dep01 && dep02"
        conditionsReset:
          - byTime:
              # Reset conditions at 23:59
              cron: "59 23 * * *"
              # Optional, defaults to UTC
              # More info for timezone: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
              timezone: America/Los_Angeles
        name: trigger01