mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-24 00:15:17 -06:00
14132 fix event and webhook worker
This commit is contained in:
parent
4a941775be
commit
7770637e3a
@ -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)
|
||||||
|
|
||||||
|
|
||||||
|
@ -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())
|
||||||
|
|
||||||
|
@ -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,
|
||||||
|
Loading…
Reference in New Issue
Block a user