diff --git a/alws/app.py b/alws/app.py index a63a4874..573f00de 100644 --- a/alws/app.py +++ b/alws/app.py @@ -1,10 +1,8 @@ import importlib import logging -import sentry_sdk from fastapi import FastAPI from fastapi_sqla import setup as fastapi_sqla_setup -from pika.exceptions import StreamLostError from starlette.middleware.exceptions import ExceptionMiddleware from alws import routers @@ -16,6 +14,7 @@ from alws.config import settings from alws.middlewares import handlers from alws.utils.limiter import limiter_shutdown, limiter_startup +from alws.utils.sentry import sentry_init logging.basicConfig(level=settings.logging_level) @@ -27,16 +26,7 @@ AUTH_PREFIX = APP_PREFIX + '/auth' AUTH_TAG = 'auth' -if settings.sentry_dsn: - sentry_sdk.init( - dsn=settings.sentry_dsn, - traces_sample_rate=settings.sentry_traces_sample_rate, - environment=settings.sentry_environment, - ignore_errors=[ - ConnectionResetError, - StreamLostError, - ], - ) +sentry_init() app = FastAPI() diff --git a/alws/dramatiq/build.py b/alws/dramatiq/build.py index e5df5cb9..d33dbc95 100644 --- a/alws/dramatiq/build.py +++ b/alws/dramatiq/build.py @@ -38,11 +38,14 @@ move_issues, set_build_id_to_issues, ) +from alws.utils.sentry import sentry_init + __all__ = ['start_build', 'build_done'] logger = logging.getLogger(__name__) +sentry_init() def _sync_fetch_build(db: Session, build_id: int) -> models.Build: query = select(models.Build).where(models.Build.id == build_id) diff --git a/alws/dramatiq/errata.py b/alws/dramatiq/errata.py index df5fa7c6..a1dadd9b 100644 --- a/alws/dramatiq/errata.py +++ b/alws/dramatiq/errata.py @@ -14,10 +14,14 @@ ) from alws.dramatiq import event_loop from alws.utils.fastapi_sqla_setup import setup_all +from alws.utils.sentry import sentry_init __all__ = ["release_errata"] +sentry_init() + + async def _create_new_errata_record(errata): await create_new_errata_record(errata) diff --git a/alws/dramatiq/products.py b/alws/dramatiq/products.py index db88dfd3..2c6ec3ab 100644 --- a/alws/dramatiq/products.py +++ b/alws/dramatiq/products.py @@ -17,12 +17,16 @@ from alws.utils.fastapi_sqla_setup import setup_all from alws.utils.log_utils import setup_logger from alws.utils.pulp_client import PulpClient +from alws.utils.sentry import sentry_init __all__ = ['perform_product_modification'] logger = setup_logger(__name__) +sentry_init() + + async def get_existing_packages( pulp_client: PulpClient, repository: models.Repository, diff --git a/alws/dramatiq/releases.py b/alws/dramatiq/releases.py index b9e035cd..e1438c68 100644 --- a/alws/dramatiq/releases.py +++ b/alws/dramatiq/releases.py @@ -1,5 +1,3 @@ -from contextlib import asynccontextmanager - import dramatiq from fastapi_sqla import open_async_session @@ -8,10 +6,14 @@ from alws.dependencies import get_async_db_key from alws.dramatiq import event_loop from alws.utils.fastapi_sqla_setup import setup_all +from alws.utils.sentry import sentry_init __all__ = ["execute_release_plan"] +sentry_init() + + async def _commit_release(release_id, user_id): async with open_async_session(key=get_async_db_key()) as db: await r_crud.commit_release(db, release_id, user_id) diff --git a/alws/dramatiq/sign_task.py b/alws/dramatiq/sign_task.py index dd769999..c8208003 100644 --- a/alws/dramatiq/sign_task.py +++ b/alws/dramatiq/sign_task.py @@ -1,16 +1,19 @@ import typing import dramatiq - from alws.constants import DRAMATIQ_TASK_TIMEOUT from alws.crud import sign_task from alws.dramatiq import event_loop from alws.schemas import sign_schema from alws.utils.fastapi_sqla_setup import setup_all +from alws.utils.sentry import sentry_init __all__ = ['complete_sign_task'] +sentry_init() + + async def _complete_sign_task( task_id: int, payload: typing.Dict[str, typing.Any] ): diff --git a/alws/dramatiq/tests.py b/alws/dramatiq/tests.py index f3aef1a8..010bfb36 100644 --- a/alws/dramatiq/tests.py +++ b/alws/dramatiq/tests.py @@ -3,17 +3,20 @@ import dramatiq from fastapi_sqla import open_async_session - from alws.constants import DRAMATIQ_TASK_TIMEOUT, TestTaskStatus from alws.crud import test as t_crud from alws.dependencies import get_async_db_key from alws.dramatiq import event_loop from alws.schemas.test_schema import TestTaskResult from alws.utils.fastapi_sqla_setup import setup_all +from alws.utils.sentry import sentry_init __all__ = ['complete_test_task'] +sentry_init() + + async def _complete_test_task(task_id: int, task_result: TestTaskResult): async with open_async_session(key=get_async_db_key()) as db: try: diff --git a/alws/dramatiq/user.py b/alws/dramatiq/user.py index 0c7d918f..91fcce5c 100644 --- a/alws/dramatiq/user.py +++ b/alws/dramatiq/user.py @@ -9,10 +9,14 @@ from alws.dependencies import get_async_db_key from alws.dramatiq import event_loop from alws.utils.fastapi_sqla_setup import setup_all +from alws.utils.sentry import sentry_init __all__ = ['perform_user_removal'] +sentry_init() + + async def _perform_user_removal(user_id: int): async with open_async_session(key=get_async_db_key()) as db: # Remove builds diff --git a/alws/utils/sentry.py b/alws/utils/sentry.py new file mode 100644 index 00000000..13d3b6d6 --- /dev/null +++ b/alws/utils/sentry.py @@ -0,0 +1,18 @@ +import sentry_sdk +from pika.exceptions import StreamLostError + +from alws.config import settings + + +def sentry_init(): + if not settings.sentry_dsn: + return + sentry_sdk.init( + dsn=settings.sentry_dsn, + traces_sample_rate=settings.sentry_traces_sample_rate, + environment=settings.sentry_environment, + ignore_errors=[ + ConnectionResetError, + StreamLostError, + ], + )