Skip to content

Commit

Permalink
Add Open Scan Hub task finish event
Browse files Browse the repository at this point in the history
  • Loading branch information
majamassarini committed Oct 11, 2024
1 parent c376983 commit 7a694cb
Show file tree
Hide file tree
Showing 4 changed files with 82 additions and 0 deletions.
3 changes: 3 additions & 0 deletions packit_service/worker/events/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@

from packit_service.worker.events.vm_image import VMImageBuildResultEvent

from packit_service.worker.events.openscanhub import OpenScanHubTaskFinishEvent

__all__ = [
Event.__name__,
EventData.__name__,
Expand Down Expand Up @@ -86,4 +88,5 @@
ReleaseGitlabEvent.__name__,
TagPushGitlabEvent.__name__,
PullRequestFlagPagureEvent.__name__,
OpenScanHubTaskFinishEvent.__name__,
]
23 changes: 23 additions & 0 deletions packit_service/worker/events/openscanhub.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Copyright Contributors to the Packit project.
# SPDX-License-Identifier: MIT

from logging import getLogger
from packit_service.worker.events import Event

logger = getLogger(__name__)


class OpenScanHubTaskFinishEvent(Event):
def __init__(
self,
task_id: int,
issues_added_url: str,
issues_fixed_url: str,
scan_results_url: str,
):
super().__init__()

self.task_id = task_id
self.issues_added_url = issues_added_url
self.issues_fixed_url = issues_fixed_url
self.scan_results_url = scan_results_url
22 changes: 22 additions & 0 deletions packit_service/worker/parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
ReleaseGitlabEvent,
TagPushGitlabEvent,
VMImageBuildResultEvent,
OpenScanHubTaskFinishEvent,
)
from packit_service.worker.events.enums import (
GitlabEventAction,
Expand Down Expand Up @@ -115,6 +116,7 @@ def parse_event(
TagPushGitlabEvent,
VMImageBuildResultEvent,
AnityaVersionUpdateEvent,
OpenScanHubTaskFinishEvent,
]
]:
"""
Expand Down Expand Up @@ -160,6 +162,7 @@ def parse_event(
Parser.parse_gitlab_release_event,
Parser.parse_gitlab_tag_push_event,
Parser.parse_anitya_version_update_event,
Parser.parse_openscanhub_task_finish_event,
),
):
if response:
Expand Down Expand Up @@ -1651,6 +1654,24 @@ def parse_anitya_version_update_event(event) -> Optional[AnityaVersionUpdateEven
anitya_project_name=anitya_project_name,
)

@staticmethod
def parse_openscanhub_task_finish_event(
event,
) -> Optional[OpenScanHubTaskFinishEvent]:

if "openscanhub.task.finish" not in event.get("topic", ""):
return None

task_id = event.get("task_id")
logger.info(f"OpenScanHub task: {task_id} finished")

return OpenScanHubTaskFinishEvent(
task_id=task_id,
issues_added_url=event.get("added.js"),
issues_fixed_url=event.get("fixed.js"),
scan_results_url=event.get("scan-results.js"),
)

# The .__func__ are needed for Python < 3.10
MAPPING = {
"github": {
Expand Down Expand Up @@ -1684,6 +1705,7 @@ def parse_anitya_version_update_event(event) -> Optional[AnityaVersionUpdateEven
"org.release-monitoring.prod.anitya.project.version.update.v2": (
parse_anitya_version_update_event.__func__ # type: ignore
),
"openscanhub.task.finish": parse_openscanhub_task_finish_event.__func__, # type: ignore
},
"testing-farm": {
"results": parse_testing_farm_results_event.__func__, # type: ignore
Expand Down
34 changes: 34 additions & 0 deletions tests/unit/events/test_open_scan_hub.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Copyright Contributors to the Packit project.
# SPDX-License-Identifier: MIT

import json
import pytest

from packit_service.worker.events import OpenScanHubTaskFinishEvent
from packit_service.worker.parser import Parser
from tests.spellbook import DATA_DIR


@pytest.fixture()
def openscanhub_task_finish_event():
with open(DATA_DIR / "fedmsg" / "open_scan_hub_task_finish.json") as outfile:
return json.load(outfile)


def test_parse_openscanhub_task_finish(openscanhub_task_finish_event):
event_object = Parser.parse_event(openscanhub_task_finish_event)

assert isinstance(event_object, OpenScanHubTaskFinishEvent)
assert event_object.task_id == 15649
assert (
event_object.issues_added_url
== "http://openscanhub.fedoraproject.org/task/15649/log/added.js?format=raw"
)
assert (
event_object.issues_fixed_url
== "http://openscanhub.fedoraproject.org/task/15649/log/fixed.js?format=raw"
)
assert event_object.scan_results_url == (
"http://openscanhub.fedoraproject.org/task/15649/log/gvisor-tap-vsock"
"-0.7.5-1.20241007054606793155.pr405.23.g829aafd6/scan-results.js?format=raw"
)

0 comments on commit 7a694cb

Please sign in to comment.