ansible/ansible-rulebook

Webhook triggers only if endpoint url is not empty

electronick opened this issue · 0 comments

  • ansible-rulebook version:
__version__ = '0.9.4'
ad5944ee-3782-48d6-8dae-1e924d00197f
  • Python version: 3.10.8
    • aiohttp: 3.8.3
  • Operating System: MacOS, Ubuntu

Description

Webhook listener does trigger only if endpoint url in not empty, i.e. it's not possible to configure listener on / url.

Example code:

- name: example webhook
  hosts: all
  sources:
    - ansible.eda.webhook:
        host: localhost
        port: 5000

  rules:
    - name: trigger when meta is defined
      condition: event.meta is defined
      action:
        debug:

Execute:

ansible-rulebook --rulebook example.yml -i hosts.yml --verbose

What I Did

Example requests:

> curl -d "{\"data\": \"example\"}" http://localhost:5000/someurl 
webhook

Ansible-rulebook outputs:

INFO:aiohttp.access:127.0.0.1 [21/Nov/2022:17:39:41 +0000] "POST /someurl HTTP/1.1" 200 158 "-" "curl/7.79.1"
INFO:ansible_rulebook.rule_generator:calling trigger when meta is defined
INFO:ansible_rulebook.engine:call_action debug
INFO:ansible_rulebook.engine:substitute_variables [{}] [{'event': {'payload': {'data': 'example'}, 'meta': {'headers': {'Content_Type': 'application/x-www-form-urlencoded', 'Content_Length': '19', 'Accept': '*/*', 'Host': 'localhost:43005', 'User_Agent': 'curl/7.79.1'}, 'endpoint': 'someurl'}}, 'fact': {'payload': {'data': 'example'}, 'meta': {'headers': {'Content_Type': 'application/x-www-form-urlencoded', 'Content_Length': '19', 'Accept': '*/*', 'Host': 'localhost:5000', 'User_Agent': 'curl/7.79.1'}, 'endpoint': 'someurl'}}}]
INFO:ansible_rulebook.engine:action args: {}
============================================================================================================================================================================================================

When I make request to root url:

> curl -d "{\"data\": \"example\"}" http://localhost:5000/       
404: Not Found

Ansible-rulebook log outputs:

INFO:aiohttp.access:127.0.0.1 [21/Nov/2022:17:41:03 +0000] "POST / HTTP/1.1" 404 173 "-" "curl/7.79.1"

This issue is a copy of ansible/event-driven-ansible#57