"""Application configuration.""" import logging import os from os.path import abspath from os.path import dirname from os.path import join from os.path import pardir from dotenv import load_dotenv from secrets_manager.python_ext import PythonSecretsManager from sqlalchemy.pool import NullPool from sqlalchemy.pool import StaticPool # Load environment variables from a .env file dotenv_path = abspath(join(dirname(__file__), pardir, '.env')) load_dotenv(dotenv_path) # Service information SERVICE_NAME = 'ows-product-configuration' SERVICE_VERSION = '1.0.0' # Production environment PROD_ENVIRONMENT = 'prod' DEV_ENVIRONMENT = 'dev' QA_ENVIRONMENT = 'qa' TEST_ENVIRONMENT = 'test' ENVIRONMENT = os.environ.get('Environment', DEV_ENVIRONMENT) secrets_manager_client = PythonSecretsManager( environment=ENVIRONMENT, service_name=SERVICE_NAME) # Errors and loggers SENTRY_DSN = os.environ.get('SENTRY_DSN') or None LOGGER_LEVEL = logging.INFO LOGGER_NAME = 'ows1' # MySQL database config MYSQL_USER = os.environ.get('MYSQL_USER') MYSQL_PASSWORD = secrets_manager_client.get_cred('MYSQL_PASSWORD') MYSQL_HOST = os.environ.get('MYSQL_HOST') MYSQL_DATABASE = os.environ.get('MYSQL_DATABASE') MYSQL_CHARSET = os.environ.get('MYSQL_CHARSET', 'utf8mb4') DB_CONNECTION_URL = ( 'mysql+pymysql://{user}:{password}@{host}/{name}?charset={charset}').format( user=MYSQL_USER, password=MYSQL_PASSWORD, host=MYSQL_HOST, name=MYSQL_DATABASE, charset=MYSQL_CHARSET) DB_POOLCLASS = NullPool if ENVIRONMENT == TEST_ENVIRONMENT: DB_CONNECTION_URL = 'sqlite://' SQLALCHEMY_TRACK_MODIFICATIONS = False SQLALCHEMY_ENGINE_OPTIONS = {} DB_POOLCLASS = StaticPool else: POOL_SIZE = 15 POOL_RECYCLE_MS = 3600 # Avoids connections going stale POOL_MAX_OVERFLOW = 0 POOL_PRE_PING = True DB_CONNECTION_URL = os.environ.get('DB_CONNECTION_URL') or DB_CONNECTION_URL SQLALCHEMY_TRACK_MODIFICATIONS = False SQLALCHEMY_ENGINE_OPTIONS = { 'pool_size': POOL_SIZE, 'pool_recycle': POOL_RECYCLE_MS, 'max_overflow': POOL_MAX_OVERFLOW, 'pool_pre_ping': POOL_PRE_PING, } # Generic handlers HEALTH_CHECK = '/hello/'