Skip to content

Commit

Permalink
fix report webhook
Browse files Browse the repository at this point in the history
  • Loading branch information
amyasnikov committed Sep 9, 2024
1 parent e9e7196 commit 0b51fc0
Showing 2 changed files with 10 additions and 8 deletions.
15 changes: 7 additions & 8 deletions validity/scripts/runtests/combine.py
Original file line number Diff line number Diff line change
@@ -9,38 +9,37 @@
from core.models import Job
from dimi import Singleton
from django.db.models import QuerySet
from django.http import HttpRequest
from django.urls import reverse
from netbox.context import events_queue
from extras.events import flush_events

from validity import di
from validity.models import ComplianceReport
from validity.netbox_changes import QUEUE_CREATE_ACTION, enqueue_event
from ..data_models import FullRunTestsParams, Message, TestResultRatio
from ..data_models import FullRunTestsParams, Message, RequestInfo, TestResultRatio
from ..exceptions import AbortScript
from ..launch import Launcher
from ..logger import Logger
from ..parent_jobs import JobExtractor
from .base import TerminateMixin


def enqueue(report, request):
queue = events_queue.get()
def enqueue(report: ComplianceReport, request: RequestInfo):
queue = {}
enqueue_event(queue, report, request.get_user(), request.id, QUEUE_CREATE_ACTION)
events_queue.set(queue)
flush_events(queue.values())


@di.dependency(scope=Singleton)
@dataclass(repr=False, kw_only=True)
class CombineWorker(TerminateMixin):
log_factory: Callable[[], Logger] = Logger
job_extractor_factory: Callable[[], JobExtractor] = JobExtractor
enqueue_func: Callable[[ComplianceReport, HttpRequest], None] = enqueue
enqueue_func: Callable[[ComplianceReport, RequestInfo], None] = enqueue
report_queryset: QuerySet[ComplianceReport] = field(
default_factory=ComplianceReport.objects.annotate_result_stats().count_devices_and_tests
)

def fire_report_webhook(self, report_id: int, request: HttpRequest) -> None:
def fire_report_webhook(self, report_id: int, request: RequestInfo) -> None:
report = self.report_queryset.get(pk=report_id)
self.enqueue_func(report, request)

3 changes: 3 additions & 0 deletions validity/utils/misc.py
Original file line number Diff line number Diff line change
@@ -15,6 +15,9 @@

@contextmanager
def null_request():
"""
Prevents EventRule instances from triggering by setting current request to None
"""
ctx = current_request.get()
current_request.set(None)
try:

0 comments on commit 0b51fc0

Please sign in to comment.