From 31c51435acde14b4fe12c5e1633d8edf27941a9d Mon Sep 17 00:00:00 2001 From: Olivier Leger Date: Thu, 11 Jan 2024 14:54:23 -0500 Subject: [PATCH] Remove system check for ENKETO_REDIS_MAIN_URL --- conftest.py | 21 --------------------- kobo/apps/__init__.py | 2 -- kobo/apps/service_health/views.py | 3 ++- kobo/settings/base.py | 9 ++++----- kpi/utils/environ.py | 14 -------------- kpi/utils/system_check.py | 24 ------------------------ 6 files changed, 6 insertions(+), 67 deletions(-) delete mode 100644 conftest.py delete mode 100644 kpi/utils/environ.py delete mode 100644 kpi/utils/system_check.py diff --git a/conftest.py b/conftest.py deleted file mode 100644 index fe241eeddd..0000000000 --- a/conftest.py +++ /dev/null @@ -1,21 +0,0 @@ -import pytest - -from kpi.utils.system_check import required_env_vars_check - - -@pytest.fixture(scope='session', autouse=True) -def setup(request): - - # Django system checks are not called while using pytest. - # Make this one run at least - errors = required_env_vars_check(app_configs=None) - if errors: - print('') # force a new line before displaying errors - for error in errors: - # Will only be displayed with `-s` option - print(error.msg, flush=True) - - pytest.exit( - 'Some environment variables are not set', - pytest.ExitCode.INTERRUPTED, - ) diff --git a/kobo/apps/__init__.py b/kobo/apps/__init__.py index 29b8dde7dc..fa5bed6bcd 100644 --- a/kobo/apps/__init__.py +++ b/kobo/apps/__init__.py @@ -2,7 +2,6 @@ from django.apps import AppConfig from django.core.checks import register, Tags -from kpi.utils.system_check import required_env_vars_check from kpi.utils.two_database_configuration_checker import \ TwoDatabaseConfigurationChecker @@ -19,4 +18,3 @@ def ready(self, *args, **kwargs): register(TwoDatabaseConfigurationChecker().as_check(), Tags.database) -register(required_env_vars_check, Tags.compatibility) diff --git a/kobo/apps/service_health/views.py b/kobo/apps/service_health/views.py index be1b0b01aa..25b651b983 100644 --- a/kobo/apps/service_health/views.py +++ b/kobo/apps/service_health/views.py @@ -4,7 +4,7 @@ import requests from django.conf import settings -from django.core.cache import cache +from django.core.cache import cache, caches from django.http import HttpResponse from kobo.celery import celery_app @@ -75,6 +75,7 @@ def service_health(request): 'Enketo': lambda: requests.get( settings.ENKETO_INTERNAL_URL, timeout=10 ).raise_for_status(), + 'Enketo Redis (main)': lambda: caches['enketo_redis_main'].set('a', True, 1), } check_results = [] diff --git a/kobo/settings/base.py b/kobo/settings/base.py index a5b2762eec..6d637a7155 100644 --- a/kobo/settings/base.py +++ b/kobo/settings/base.py @@ -8,13 +8,13 @@ from urllib.parse import quote_plus import django.conf.locale +import environ from celery.schedules import crontab from django.conf.global_settings import LOGIN_URL from django.urls import reverse_lazy from django.utils.translation import get_language_info, gettext_lazy as t from pymongo import MongoClient -import kpi.utils.environ as environ from kpi.utils.json import LazyJSONSerializable from kobo.apps.stripe.constants import FREE_TIER_NO_THRESHOLDS, FREE_TIER_EMPTY_DISPLAY from ..static_lists import EXTRA_LANG_INFO, SECTOR_CHOICE_DEFAULTS @@ -1302,7 +1302,9 @@ def dj_stripe_request_callback_method(): CACHES = { # Set CACHE_URL to override 'default': env.cache_url(default='redis://redis_cache:6380/3'), - 'enketo_redis_main': env.lazy_cache_url('ENKETO_REDIS_MAIN_URL') + 'enketo_redis_main': env.cache_url( + 'ENKETO_REDIS_MAIN_URI', default='redis://change-me.invalid/0' + ), } # How long to retain cached responses for kpi endpoints @@ -1404,6 +1406,3 @@ def dj_stripe_request_callback_method(): 'NAME': 'kpi.password_validation.MostRecentPasswordValidator', }, ] - -# Keep at the end of file to be sure all required env variables are registered -ENVIRONMENT_VARIABLES_TO_CHECK = env.lazy_env_vars diff --git a/kpi/utils/environ.py b/kpi/utils/environ.py deleted file mode 100644 index 0f9a8a6cf2..0000000000 --- a/kpi/utils/environ.py +++ /dev/null @@ -1,14 +0,0 @@ -import environ - - -class Env(environ.Env): - - def __init__(self, **scheme): - super().__init__(**scheme) - self.lazy_env_vars = set() - - def lazy_cache_url(self, var=environ.Env.DEFAULT_CACHE_ENV): - self.lazy_env_vars.add(var) - cache_url = super().cache_url(var=var, default=None) - cache_url['BACKEND'] = environ.Env.CACHE_SCHEMES['dummycache'] - return cache_url diff --git a/kpi/utils/system_check.py b/kpi/utils/system_check.py deleted file mode 100644 index 2f6d89f181..0000000000 --- a/kpi/utils/system_check.py +++ /dev/null @@ -1,24 +0,0 @@ -import os - -from django.conf import settings -from django.core.checks import Error - - -def required_env_vars_check(app_configs, **kwargs): - """ - Validate that required environment variables are set - """ - errors = [] - for env_var in settings.ENVIRONMENT_VARIABLES_TO_CHECK: - try: - os.environ[env_var] - except KeyError: - errors.append( - Error( - f'Environment variable `{env_var}` is not set', - obj=settings, - id=f'kpi.{env_var.lower()}.E001', - ) - ) - - return errors