flanksource / mission-control

Other
10 stars 2 forks source link

Playbook: Conditional action fails when special function success() tested with parameter value #1267

Open junaid-ebrahim opened 4 weeks ago

junaid-ebrahim commented 4 weeks ago

When trying to conditionally run an action that depends on the success of previous actions plus a parameter value we get an error. See example below on second action in playbook , note the "success()" function that causes the failure.

apiVersion: mission-control.flanksource.com/v1
kind: Playbook
metadata:
  name: grant-mssql-user-db-access
spec:
  description: Grant an MSSQL user read or readwrite access to a database
  parameters:
    - name: delay
      label: Expires after
      type: list
      properties:
        options:
          - label: "1 minute"
            value: '1m'
          - label: "Indefinitely"
            value: "0"
  actions:
    - name: Assign Database User Roles
      if: "always()"
      sql:
        connection: connection://default/mssql-db
        driver: mssql
        query: |
          <sql here>

    - name: Clear Rolebinding Broken
      if: success() && params.delay != "0"
      delay: '.params.delay'
      sql:
        connection: connection://default/mssql-db
        driver: mssql
        query: |
          <sql here>

The workaround is to use the "getAction()" function instead of "success()"

    - name: Clear Rolebinding Fixed
      if: getAction('Assign Database User Roles').status != 'failed' && params.delay != "0"
      delay: '.params.delay'
      sql:
        connection: connection://default/mssql-db
        driver: mssql
        query: |
          <sql here>