Преглед изворни кода

implements #3025 - Add request ID to outbound webhook requests

John Anderson пре 7 година
родитељ
комит
2e1887eb0e
4 измењених фајлова са 8 додато и 5 уклоњено
  1. 1 0
      CHANGELOG.md
  2. 2 2
      netbox/extras/middleware.py
  3. 3 2
      netbox/extras/webhooks.py
  4. 2 1
      netbox/extras/webhooks_worker.py

+ 1 - 0
CHANGELOG.md

@@ -4,6 +4,7 @@ v2.5.9 (FUTURE)
 
 * [#2933](https://github.com/digitalocean/netbox/issues/2933) - Add username to outbound webhook requests
 * [#3011](https://github.com/digitalocean/netbox/issues/3011) - Add SSL support for django-rq (requires django-rq v1.3.1+)
+* [#3025](https://github.com/digitalocean/netbox/issues/3025) - Add request ID to outbound webhook requests (for correlating all changes part of a single request)
 
 ## Bug Fixes
 

+ 2 - 2
netbox/extras/middleware.py

@@ -37,7 +37,7 @@ def _record_object_deleted(request, instance, **kwargs):
     if hasattr(instance, 'log_change'):
         instance.log_change(request.user, request.id, OBJECTCHANGE_ACTION_DELETE)
 
-    enqueue_webhooks(instance, request.user, OBJECTCHANGE_ACTION_DELETE)
+    enqueue_webhooks(instance, request.user, request.id, OBJECTCHANGE_ACTION_DELETE)
 
 
 class ObjectChangeMiddleware(object):
@@ -83,7 +83,7 @@ class ObjectChangeMiddleware(object):
                 obj.log_change(request.user, request.id, action)
 
             # Enqueue webhooks
-            enqueue_webhooks(obj, request.user, action)
+            enqueue_webhooks(obj, request.user, request.id, action)
 
         # Housekeeping: 1% chance of clearing out expired ObjectChanges
         if _thread_locals.changed_objects and settings.CHANGELOG_RETENTION and random.randint(1, 100) == 1:

+ 3 - 2
netbox/extras/webhooks.py

@@ -9,7 +9,7 @@ from utilities.api import get_serializer_for_model
 from .constants import WEBHOOK_MODELS
 
 
-def enqueue_webhooks(instance, user, action):
+def enqueue_webhooks(instance, user, request_id, action):
     """
     Find Webhook(s) assigned to this instance + action and enqueue them
     to be processed
@@ -48,5 +48,6 @@ def enqueue_webhooks(instance, user, action):
                 instance._meta.model_name,
                 action,
                 str(datetime.datetime.now()),
-                user.username
+                user.username,
+                request_id
             )

+ 2 - 1
netbox/extras/webhooks_worker.py

@@ -10,7 +10,7 @@ from extras.constants import WEBHOOK_CT_JSON, WEBHOOK_CT_X_WWW_FORM_ENCODED, OBJ
 
 
 @job('default')
-def process_webhook(webhook, data, model_name, event, timestamp, username):
+def process_webhook(webhook, data, model_name, event, timestamp, username, request_id):
     """
     Make a POST request to the defined Webhook
     """
@@ -19,6 +19,7 @@ def process_webhook(webhook, data, model_name, event, timestamp, username):
         'timestamp': timestamp,
         'model': model_name,
         'username': username,
+        'request_id': request_id,
         'data': data
     }
     headers = {