mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-18 13:38:16 -06:00
14132 script run fixup
This commit is contained in:
parent
f5615e5c8a
commit
3dbdd47ada
@ -45,7 +45,7 @@ def module_member(name):
|
||||
def process_event_rules(event_rule, model_name, event, data, timestamp, username, request_id, snapshots):
|
||||
if event_rule.action_type == EventRuleActionChoices.WEBHOOK:
|
||||
process_webhook(event_rule, model_name, event, data, timestamp, username, request_id, snapshots)
|
||||
elif event_rule.action_type == EventRuleActionChoicesEventRuleTypeChoices.SCRIPT:
|
||||
elif event_rule.action_type == EventRuleActionChoices.SCRIPT:
|
||||
process_script(event_rule, model_name, event, data, timestamp, username, request_id, snapshots)
|
||||
|
||||
|
||||
|
@ -293,7 +293,7 @@ class EventRuleForm(NetBoxModelForm):
|
||||
|
||||
def get_webhook_choices(self):
|
||||
initial = None
|
||||
if self.fields['action_object_type'] and self.fields['action_object_id']:
|
||||
if self.fields['action_object_type'] and get_field_value(self, 'action_object_id'):
|
||||
initial = Webhook.objects.get(pk=get_field_value(self, 'action_object_id'))
|
||||
self.fields['action_choice'] = DynamicModelChoiceField(
|
||||
label=_('Webhook'),
|
||||
|
@ -1,20 +1,39 @@
|
||||
import logging
|
||||
|
||||
import requests
|
||||
from core.models import Job
|
||||
from django.conf import settings
|
||||
from django_rq import job
|
||||
from jinja2.exceptions import TemplateError
|
||||
from utilities.rqworker import get_workers_for_queue
|
||||
|
||||
from .conditions import ConditionSet
|
||||
from .constants import WEBHOOK_EVENT_TYPES
|
||||
from .webhooks import generate_signature
|
||||
from extras.conditions import ConditionSet
|
||||
from extras.constants import WEBHOOK_EVENT_TYPES
|
||||
from extras.models import ScriptModule
|
||||
from extras.webhooks import generate_signature
|
||||
|
||||
logger = logging.getLogger('netbox.webhooks_worker')
|
||||
|
||||
|
||||
def process_script(webhook, model_name, event, data, timestamp, username, request_id=None, snapshots=None):
|
||||
def process_script(event_rule, model_name, event, data, timestamp, username, request_id=None, snapshots=None):
|
||||
"""
|
||||
Make a POST request to the defined Webhook
|
||||
Run the requested script
|
||||
"""
|
||||
module_name = event_rule.action_object_identifier.split(":")[0]
|
||||
script_name = event_rule.action_object_identifier.split(":")[1]
|
||||
try:
|
||||
module = ScriptModule.objects.get(file_path__regex=f"^{module_name}\\.")
|
||||
except ScriptModule.DoesNotExist:
|
||||
return
|
||||
|
||||
pass
|
||||
script = module.scripts[script_name]()
|
||||
|
||||
job = Job.enqueue(
|
||||
run_script,
|
||||
instance=module,
|
||||
name=script.class_name,
|
||||
user=None,
|
||||
schedule_at=None,
|
||||
interval=None,
|
||||
data=event_rule.parameters,
|
||||
)
|
||||
|
Loading…
Reference in New Issue
Block a user