Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 13 additions & 4 deletions packit_service/events/openscanhub/abstract.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,15 @@
# SPDX-License-Identifier: MIT

from logging import getLogger
from typing import Optional
from typing import Optional, Union

from ogr.abstract import GitProject

from packit_service.config import ServiceConfig
from packit_service.models import (
AbstractProjectObjectDbType,
CoprBuildTargetModel,
KojiBuildTargetModel,
OSHScanModel,
ProjectEventModel,
)
Expand All @@ -33,15 +34,21 @@ def __init__(
self.commit_sha = commit_sha

self.scan = OSHScanModel.get_by_task_id(task_id)
self.build: Optional[CoprBuildTargetModel] = None
self.build: Optional[Union[CoprBuildTargetModel, KojiBuildTargetModel]] = None
if not self.scan:
logger.warning(
f"Scan with id {task_id} not found in the database."
" It should have been created when receiving the CoprBuildEndEvent"
" and should have been associated with the copr build.",
)
return
self.build = self.scan.copr_build_target

# TODO: How to handle koji builds here?
if hasattr(self.scan, "copr_build_target"):
self.build = self.scan.copr_build_target
else:
self.build = self.scan.koji_build_target

if not self.build:
logger.warning(
f"Scan with id {task_id} not associated with a build."
Expand All @@ -54,7 +61,9 @@ def __init__(
# and have to be serialized to be later found in the
# event metadata
self.commit_sha = project_event.commit_sha if not self.commit_sha else self.commit_sha
self.identifier = identifier or self.build.identifier
self.identifier = identifier
if not self.identifier and isinstance(self.build, CoprBuildTargetModel):
self.identifier = self.build.identifier

def get_db_project_object(self) -> Optional[AbstractProjectObjectDbType]:
return self.build.get_project_event_object()
Expand Down
13 changes: 13 additions & 0 deletions packit_service/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -2666,6 +2666,8 @@ class KojiBuildTargetModel(GroupAndTargetModelConnector, Base):
back_populates="koji_build_targets",
)

scan = relationship("OSHScanModel", back_populates="koji_build_target")

def set_status(self, status: str):
with sa_session_transaction(commit=True) as session:
self.status = status
Expand Down Expand Up @@ -4257,6 +4259,17 @@ class OSHScanModel(Base):
uselist=False,
)

koji_build_target_id = Column(
Integer,
ForeignKey("koji_build_targets.id"),
unique=True,
)
koji_build_target = relationship(
"KojiBuildTargetModel",
back_populates="scan",
uselist=False,
)

@classmethod
def get_or_create(cls, task_id: int) -> "OSHScanModel":
with sa_session_transaction(commit=True) as session:
Expand Down
4 changes: 4 additions & 0 deletions packit_service/worker/handlers/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@
from packit_service.worker.handlers.open_scan_hub import (
CoprOpenScanHubTaskFinishedHandler,
CoprOpenScanHubTaskStartedHandler,
KojiOpenScanHubTaskFinishedHandler,
KojiOpenScanHubTaskStartedHandler,
)
from packit_service.worker.handlers.testing_farm import (
TestingFarmHandler,
Expand Down Expand Up @@ -61,4 +63,6 @@
VMImageBuildResultHandler.__name__,
CoprOpenScanHubTaskFinishedHandler.__name__,
CoprOpenScanHubTaskStartedHandler.__name__,
KojiOpenScanHubTaskFinishedHandler.__name__,
KojiOpenScanHubTaskStartedHandler.__name__,
]
21 changes: 20 additions & 1 deletion packit_service/worker/handlers/koji.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
AbstractProjectObjectDbType,
KojiBuildTargetModel,
ProjectEventModel,
ProjectEventModelType,
)
from packit_service.service.urls import (
get_koji_build_info_url,
Expand Down Expand Up @@ -65,6 +66,7 @@
from packit_service.worker.handlers.mixin import GetKojiBuildJobHelperMixin
from packit_service.worker.helpers.build.koji_build import KojiBuildJobHelper
from packit_service.worker.helpers.fedora_ci import FedoraCIHelper
from packit_service.worker.helpers.open_scan_hub import KojiOpenScanHubHelper
from packit_service.worker.helpers.sidetag import SidetagHelper
from packit_service.worker.mixin import (
ConfigFromEventMixin,
Expand Down Expand Up @@ -293,7 +295,7 @@ def notify_about_failure_if_configured(


@reacts_to_as_fedora_ci(event=koji.result.Task)
class KojiTaskReportDownstreamHandler(AbstractKojiTaskReportHandler):
class KojiTaskReportDownstreamHandler(AbstractKojiTaskReportHandler, GetKojiBuildJobHelperMixin):
task_name = TaskName.downstream_koji_scratch_build_report
_helper: Optional[FedoraCIHelper] = None

Expand All @@ -314,6 +316,23 @@ def report(self, description: str, commit_status: BaseCommitStatus, url: str):
url=url,
)

if (
not KojiOpenScanHubHelper.osh_disabled()
and self.db_project_event.type == ProjectEventModelType.pull_request
and self.build.target == "fedora-rawhide-x86_64"
):
try:
KojiOpenScanHubHelper(
koji_build_helper=self.koji_build_helper,
build=self.build,
).handle_scan()
except Exception as ex:
# sentry_integration.send_to_sentry(ex)
logger.debug(
f"Handling the scan raised an exception: {ex}. Skipping "
f"as this is only experimental functionality for now.",
)

def notify_about_failure_if_configured(
self, packit_dashboard_url: str, external_dashboard_url: str, logs_url: str
):
Expand Down
Loading
Loading