Skip to content
Draft
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
13 changes: 13 additions & 0 deletions components/renku_data_services/session/k8s_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from typing import TYPE_CHECKING

import httpx
import sentry_sdk
from kr8s import NotFoundError, ServerError
from kr8s.asyncio.objects import APIObject, Pod

Expand Down Expand Up @@ -212,6 +213,11 @@ async def update_image_build_status(self, buildrun_name: str, user_id: str) -> m
k8s_build = await self.get_build_run(name=buildrun_name, user_id=user_id)

if k8s_build is None:
# Report this condition to Sentry: we expected to find a buildrun object but found none
try:
raise errors.ProgrammingError(message=f"Build run {buildrun_name} not found.")
except Exception as e:
sentry_sdk.capture_exception(e)
return models.ShipwrightBuildStatusUpdate(
update=models.ShipwrightBuildStatusUpdateContent(status=models.BuildStatus.failed)
)
Expand Down Expand Up @@ -274,6 +280,13 @@ async def update_image_build_status(self, buildrun_name: str, user_id: str) -> m
)
)
else:
# Report the failed buildrun to Sentry
try:
raise errors.ProgrammingError(message=f"Build run {buildrun_name} detected as failed.")
except Exception as e:
scope = sentry_sdk.get_current_scope()
scope.set_context(key="build_run", value=k8s_build.model_dump(mode="json"))
scope.capture_exception(e)
return models.ShipwrightBuildStatusUpdate(
update=models.ShipwrightBuildStatusUpdateContent(
status=models.BuildStatus.failed,
Expand Down