From 4793ad040c1974cb2b9f7f2ed9657bc7f1838c65 Mon Sep 17 00:00:00 2001 From: Neda Moeini <neda.moeini@geant.org> Date: Tue, 30 Jul 2024 12:02:31 +0200 Subject: [PATCH] - Added an environment variable (TESTING) to prevent Sentry from initializing during test runs. - Configured Sentry to include environment information in its setup. --- gso/__init__.py | 19 ++++++++++++------- gso/settings.py | 20 ++++++++++++++++++-- test/__init__.py | 3 +++ 3 files changed, 33 insertions(+), 9 deletions(-) diff --git a/gso/__init__.py b/gso/__init__.py index bb036cdc..2df27bcb 100644 --- a/gso/__init__.py +++ b/gso/__init__.py @@ -1,5 +1,7 @@ """The main entrypoint for :term:`GSO`, and the different ways in which it can be run.""" +import os + import sentry_sdk import typer from orchestrator import OrchestratorCore, app_settings @@ -13,16 +15,10 @@ from gso.api import router as api_router from gso.auth.oidc import oidc_instance from gso.auth.opa import graphql_opa_instance, opa_instance from gso.graphql_api.types import GSO_SCALAR_OVERRIDES +from gso.settings import load_oss_params SCALAR_OVERRIDES.update(GSO_SCALAR_OVERRIDES) -sentry_sdk.init( - dsn="https://2b0b82245bfa6631041802c997ed8b58@test-observer01.geant.org/3", - # Set traces_sample_rate to 1.0 to capture 100% - # of transactions for performance monitoring. - traces_sample_rate=1.0, -) - def init_gso_app() -> OrchestratorCore: """Initialise the :term:`GSO` app.""" @@ -47,3 +43,12 @@ def init_cli_app() -> typer.Typer: cli_app.add_typer(imports.app, name="import-cli") cli_app.add_typer(netbox.app, name="netbox-cli") return cli_app() + + +def init_sentry() -> None: + """Only initialize Sentry if not in testing mode.""" + if os.getenv("TESTING", "false").lower() == "false" and (sentry_config := load_oss_params().SENTRY): + sentry_sdk.init(dsn=sentry_config.DSN, environment=sentry_config.environment, traces_sample_rate=1.0) + + +init_sentry() diff --git a/gso/settings.py b/gso/settings.py index 07f7bbdd..68d95d1d 100644 --- a/gso/settings.py +++ b/gso/settings.py @@ -10,9 +10,8 @@ import logging import os from pathlib import Path from typing import Annotated - from pydantic import EmailStr, Field -from pydantic_forms.types import UUIDstr +from pydantic_forms.types import UUIDstr, strEnum from pydantic_settings import BaseSettings from typing_extensions import Doc @@ -193,6 +192,22 @@ class KentikParams(BaseSettings): md5_password: str +class EnvironmentEnum(strEnum): + """The different environments in which the GSO system can run.""" + + DEVELOPMENT = "development" + TEST = "test" + UAT = "uat" + PRODUCTION = "production" + + +class SentryParams(BaseSettings): + """Settings for Sentry.""" + + DSN: str + environment: EnvironmentEnum + + class OSSParams(BaseSettings): """The set of parameters required for running :term:`GSO`.""" @@ -206,6 +221,7 @@ class OSSParams(BaseSettings): EMAIL: EmailParams SHAREPOINT: SharepointParams KENTIK: KentikParams + SENTRY: SentryParams | None = None def load_oss_params() -> OSSParams: diff --git a/test/__init__.py b/test/__init__.py index 433e89b0..d9001c93 100644 --- a/test/__init__.py +++ b/test/__init__.py @@ -1,3 +1,4 @@ +import os from uuid import uuid4 LSO_RESULT_SUCCESS = { @@ -19,3 +20,5 @@ LSO_RESULT_FAILURE = { } USER_CONFIRM_EMPTY_FORM = [{}] + +os.environ["TESTING"] = "true" -- GitLab