oncall-engine/engine/apps/grafana_plugin/apps.py
Vadim Stepanov f977f9faee
Minor formatting changes (#2641)
# What this PR does

- Updates `black` and `flake8` to latest
- Removes `F541` from flake8 ignore (`F541 f-string is missing
placeholders`)
- Enables ["float to top"
option](https://pycqa.github.io/isort/docs/configuration/options.html#float-to-top)
for `isort`
2023-07-26 14:45:44 +01:00

42 lines
1.7 KiB
Python

import logging
import sys
from django.apps import AppConfig
from django.conf import settings
from django.db import OperationalError
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
STARTUP_COMMANDS = ["runserver", "uwsgi"]
class GrafanaPluginConfig(AppConfig):
name = "apps.grafana_plugin"
def ready(self):
"""
For OSS installations, validate that GRAFANA_API_URL environment variable is specified, otherwise
abort app startup.
We only care to run this for OSS INSTALLATIONS. The STARTUP_COMMANDS check is to avoid running this check
for the django migrate command. For a fresh installation this would crash because user_management table would
[not exist](https://stackoverflow.com/a/63326719).
"""
# TODO: this logic should probably be moved out to a common utility
is_not_migration_script = any(startup_command in sys.argv for startup_command in STARTUP_COMMANDS)
if is_not_migration_script and settings.IS_OPEN_SOURCE:
try:
from apps.user_management.models import Organization
has_existing_org = Organization.objects.first() is not None
# only enforce the following for new setups - if no organization exists in the database
# and the GRAFANA_API_URL env var is not specified, exit the application
if has_existing_org is False and settings.SELF_HOSTED_SETTINGS["GRAFANA_API_URL"] is None:
logger.error(
"For OSS installations, GRAFANA_API_URL is a required environment variable. Please set it and restart the application."
)
sys.exit()
except OperationalError:
pass