14132 fix event and webhook worker

This commit is contained in:
Arthur 2023-11-01 10:24:14 -07:00
parent 4a941775be
commit 7770637e3a
3 changed files with 16 additions and 7 deletions

View File

@ -1,15 +1,17 @@
import logging import logging
import requests import requests
import sys
from django.conf import settings from django.conf import settings
from django_rq import job from django_rq import job
from jinja2.exceptions import TemplateError from jinja2.exceptions import TemplateError
from scripts.workers import process_script
from .conditions import ConditionSet from .conditions import ConditionSet
from .constants import WEBHOOK_EVENT_TYPES, EVENT_TYPE_MODELS from .choices import EventRuleTypeChoices
from .constants import WEBHOOK_EVENT_TYPES
from .scripts_worker import process_script
from .webhooks import generate_signature from .webhooks import generate_signature
from webhooks_worker import process_webhook from .webhooks_worker import process_webhook
logger = logging.getLogger('netbox.events_worker') logger = logging.getLogger('netbox.events_worker')
@ -29,6 +31,11 @@ def eval_conditions(event_rule, data):
return False return False
def import_module(name):
__import__(name)
return sys.modules[name]
def module_member(name): def module_member(name):
mod, member = name.rsplit(".", 1) mod, member = name.rsplit(".", 1)
module = import_module(mod) module = import_module(mod)
@ -36,9 +43,9 @@ def module_member(name):
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):
if event_rule.event_type == EVENT_TYPE_MODELS.WEBHOOK: 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)
elif event_rule.event_type == EVENT_TYPE_MODELS.SCRIPT: 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)

View File

@ -27,7 +27,7 @@ def move_webhooks(apps, schema_editor):
event.event_type = EventRuleTypeChoices.WEBHOOK event.event_type = EventRuleTypeChoices.WEBHOOK
event.object_type_id = ContentType.objects.get_for_model(webhook).id event.object_type_id = ContentType.objects.get_for_model(webhook).id
event.object = webhook event.object_id = webhook.id
event.save() event.save()
event.content_types.add(*webhook.content_types.all()) event.content_types.add(*webhook.content_types.all())

View File

@ -12,11 +12,13 @@ from .webhooks import generate_signature
logger = logging.getLogger('netbox.webhooks_worker') logger = logging.getLogger('netbox.webhooks_worker')
def process_webhook(webhook, model_name, event, data, timestamp, username, request_id=None): def process_webhook(event_rule, model_name, event, data, timestamp, username, request_id=None):
""" """
Make a POST request to the defined Webhook Make a POST request to the defined Webhook
""" """
webhook = event_rule.object
# Build the headers for the HTTP request # Build the headers for the HTTP request
headers = { headers = {
'Content-Type': webhook.http_content_type, 'Content-Type': webhook.http_content_type,