Webhook body template generates wrong json #4952

Closed
opened 2025-12-29 19:22:36 +01:00 by adam · 0 comments
Owner

Originally created by @Dees7 on GitHub (Jun 1, 2021).

Hello.
For posting vars to AWX I need to add "extra_vars" before webhook body.
by default it generate correct json. But If use custom template with {{data}} it do not resolve OrderedDict

NetBox version

v2.11.2

Python version

3.8

Steps to Reproduce

Create webhook

Content types: IPAM>IP Address
URL: http://192.168.1.100:10000/post
HTTP method: POST
Body template: {"extra_vars":{{data}}}

On 192.168.1.100:
while true; do nc -l 10000 < /dev/null ; printf '\n\n\n'; done

when I change any IP in Netbox I see:

{"extra_vars":{
   'id': 19212, 
   'url': '/api/ipam/ip-addresses/19212/', 
   'display': '10.0.7.7/24', 
   'family': OrderedDict([('value', 4), ('label', 'IPv4')]), 
   'address': '10.0.7.7/24', 
   'vrf': None, 
   'tenant': None, 
   'status': OrderedDict([('value', 'reserved'), ('label', 'Reserved')]) 
   }
}

Expected Behavior

Expected json

{"extra_vars":{
   'id': 19212, 
   'url': '/api/ipam/ip-addresses/19212/', 
   'display': '10.0.7.7/24', 
   'family': {
        'value': 4, 
        'label': 'IPv4'
   }, 
   'address': '10.0.7.7/24', 
   'vrf': None, 
   'tenant': None, 
   'status': {
        'value': 'active', 
        'label': 'Active'
     }
   }
}

Observed Behavior

It is not valid json and AWX failed.

Originally created by @Dees7 on GitHub (Jun 1, 2021). Hello. For posting vars to AWX I need to add "extra_vars" before webhook body. by default it generate correct json. But If use custom template with {{data}} it do not resolve OrderedDict ### NetBox version v2.11.2 ### Python version 3.8 ### Steps to Reproduce Create webhook Content types: IPAM>IP Address URL: http://192.168.1.100:10000/post HTTP method: POST Body template: {"extra_vars":{{data}}} On 192.168.1.100: ```while true; do nc -l 10000 < /dev/null ; printf '\n\n\n'; done``` when I change any IP in Netbox I see: ``` {"extra_vars":{ 'id': 19212, 'url': '/api/ipam/ip-addresses/19212/', 'display': '10.0.7.7/24', 'family': OrderedDict([('value', 4), ('label', 'IPv4')]), 'address': '10.0.7.7/24', 'vrf': None, 'tenant': None, 'status': OrderedDict([('value', 'reserved'), ('label', 'Reserved')]) } } ``` ### Expected Behavior Expected json ``` {"extra_vars":{ 'id': 19212, 'url': '/api/ipam/ip-addresses/19212/', 'display': '10.0.7.7/24', 'family': { 'value': 4, 'label': 'IPv4' }, 'address': '10.0.7.7/24', 'vrf': None, 'tenant': None, 'status': { 'value': 'active', 'label': 'Active' } } } ``` ### Observed Behavior It is not valid json and AWX failed.
adam added the type: bug label 2025-12-29 19:22:36 +01:00
adam closed this issue 2025-12-29 19:22:36 +01:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/netbox#4952