From 7cb704db47dba89815d17186d1d98fb1e70e4128 Mon Sep 17 00:00:00 2001 From: Arthur Date: Wed, 1 Nov 2023 10:34:55 -0700 Subject: [PATCH] 14132 fix webhook_worker --- netbox/extras/events_worker.py | 22 ++++------------------ netbox/extras/scripts_worker.py | 2 +- netbox/extras/webhooks_worker.py | 16 +++++++++++++++- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/netbox/extras/events_worker.py b/netbox/extras/events_worker.py index 2d09937b1..a54bf4384 100644 --- a/netbox/extras/events_worker.py +++ b/netbox/extras/events_worker.py @@ -42,11 +42,11 @@ def module_member(name): return getattr(module, member) -def process_event_rules(event_rule, model_name, event, data, timestamp, username, request_id): +def process_event_rules(event_rule, model_name, event, data, timestamp, username, request_id, snapshots): if event_rule.event_type == EventRuleTypeChoices.WEBHOOK: - process_webhook(event_rule, model_name, event, data, timestamp, username, request_id) + process_webhook(event_rule, model_name, event, data, timestamp, username, request_id, snapshots) elif event_rule.event_type == EventRuleTypeChoicesEventRuleTypeChoices.SCRIPT: - process_script(event_rule, model_name, event, data, timestamp, username, request_id) + process_script(event_rule, model_name, event, data, timestamp, username, request_id, snapshots) @job('default') @@ -58,21 +58,7 @@ def process_event(event_rule, model_name, event, data, timestamp, username, requ if not eval_conditions(event_rule, data): return - # Prepare context data for headers & body templates - context = { - 'event': WEBHOOK_EVENT_TYPES[event], - 'timestamp': timestamp, - 'model': model_name, - 'username': username, - 'request_id': request_id, - 'data': data, - } - if snapshots: - context.update({ - 'snapshots': snapshots - }) - # process the events pipeline for name in settings.NETBOX_EVENTS_PIPELINE: func = module_member(name) - func(event_rule, model_name, event, data, timestamp, username, request_id) + func(event_rule, model_name, event, data, timestamp, username, request_id, snapshots) diff --git a/netbox/extras/scripts_worker.py b/netbox/extras/scripts_worker.py index e014463a2..39454dfb4 100644 --- a/netbox/extras/scripts_worker.py +++ b/netbox/extras/scripts_worker.py @@ -12,7 +12,7 @@ from .webhooks import generate_signature logger = logging.getLogger('netbox.webhooks_worker') -def process_script(webhook, model_name, event, data, timestamp, username, request_id=None): +def process_script(webhook, model_name, event, data, timestamp, username, request_id=None, snapshots=None): """ Make a POST request to the defined Webhook """ diff --git a/netbox/extras/webhooks_worker.py b/netbox/extras/webhooks_worker.py index 748afdbc8..734a0784a 100644 --- a/netbox/extras/webhooks_worker.py +++ b/netbox/extras/webhooks_worker.py @@ -12,13 +12,27 @@ from .webhooks import generate_signature logger = logging.getLogger('netbox.webhooks_worker') -def process_webhook(event_rule, model_name, event, data, timestamp, username, request_id=None): +def process_webhook(event_rule, model_name, event, data, timestamp, username, request_id=None, snapshots=None): """ Make a POST request to the defined Webhook """ webhook = event_rule.object + # Prepare context data for headers & body templates + context = { + 'event': WEBHOOK_EVENT_TYPES[event], + 'timestamp': timestamp, + 'model': model_name, + 'username': username, + 'request_id': request_id, + 'data': data, + } + if snapshots: + context.update({ + 'snapshots': snapshots + }) + # Build the headers for the HTTP request headers = { 'Content-Type': webhook.http_content_type,