From e4d6ad3defc4872a420cc2f880f5cab3e9572b3b Mon Sep 17 00:00:00 2001 From: Olivier Leger Date: Thu, 11 Jan 2024 10:18:48 -0500 Subject: [PATCH] Add check to service_health for Enketo Redis main --- kobo/apps/__init__.py | 27 +-------------------------- kobo/apps/service_health/views.py | 3 ++- kobo/settings/base.py | 6 ++++-- 3 files changed, 7 insertions(+), 29 deletions(-) diff --git a/kobo/apps/__init__.py b/kobo/apps/__init__.py index f321f57f4b..fa5bed6bcd 100644 --- a/kobo/apps/__init__.py +++ b/kobo/apps/__init__.py @@ -1,7 +1,6 @@ # coding: utf-8 from django.apps import AppConfig -from django.conf import settings -from django.core.checks import register, Tags, Error +from django.core.checks import register, Tags from kpi.utils.two_database_configuration_checker import \ TwoDatabaseConfigurationChecker @@ -19,27 +18,3 @@ def ready(self, *args, **kwargs): register(TwoDatabaseConfigurationChecker().as_check(), Tags.database) - - -@register() -def check_enketo_redis_main_url(app_configs, **kwargs): - """ - `ENKETO_REDIS_MAIN_URL` is required to make the app run properly. - """ - errors = [] - - if not settings.CACHES.get('enketo_redis_main'): - # We need to set `BACKEND` property. Otherwise, this error is shadowed - # by DRF system checks. - settings.CACHES['enketo_redis_main']['BACKEND'] = ( - 'django.core.cache.backends.dummy.DummyCache' - ) - errors.append( - Error( - f'Please set environment variable `ENKETO_REDIS_MAIN_URL`', - hint='Enketo Express Redis main URL is missing.', - obj=settings, - id='kpi.enketo_redis_main.E001', - ) - ) - return errors 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 a118accf0e..335307beec 100644 --- a/kobo/settings/base.py +++ b/kobo/settings/base.py @@ -1301,8 +1301,10 @@ def dj_stripe_request_callback_method(): CACHES = { # Set CACHE_URL to override - 'default': env.cache(default='redis://redis_cache:6380/3'), - 'enketo_redis_main': env.cache(var='ENKETO_REDIS_MAIN_URL', default=None) + 'default': env.cache_url(default='redis://redis_cache:6380/3'), + 'enketo_redis_main': env.cache_url( + 'ENKETO_REDIS_MAIN_URL', default='redis://change-me.invalid/0' + ), } # How long to retain cached responses for kpi endpoints