"""Application configuration.""" import logging import os from os.path import abspath, dirname, join, pardir from urllib import parse from dotenv import load_dotenv from secrets_manager.python_ext import PythonSecretsManager from sqlalchemy.pool import QueuePool # Load environment variables from a .env file if present dotenv_path = abspath(join(dirname(__file__), pardir, '.env')) load_dotenv(dotenv_path) # Service information SERVICE_NAME = 'ows-delivery-history' SERVICE_VERSION = '1.0.0' # Production environment PROD_ENVIRONMENT = 'prod' DEV_ENVIRONMENT = 'dev' QA_ENVIRONMENT = 'qa' TEST_ENVIRONMENT = 'test' ENVIRONMENT = os.environ.get('Environment') or DEV_ENVIRONMENT secrets_manager_client = PythonSecretsManager( environment=ENVIRONMENT, service_name=SERVICE_NAME) # ArtRelations Connection Params AR_DB_PASSWORD = secrets_manager_client.get_cred('AR_DB_PASSWORD') or '' AR_DB_URL = 'mysql+pymysql://{user}:{password}@{host}/{name}?charset=utf8'.format( user=os.environ.get('AR_DB_USER'), password=parse.quote(AR_DB_PASSWORD.encode('utf-8')), host=os.environ.get('AR_DB_HOST'), name=os.environ.get('AR_DB_DATABASE', 'art_relations') ) # Direct Delivery Connection Params DD_DB_PASSWORD = secrets_manager_client.get_cred('DD_DB_PASSWORD') or '' DD_DB_URL = 'mysql+pymysql://{user}:{password}@{host}/{name}?charset=utf8'.format( user=os.environ.get('DD_DB_USER'), password=parse.quote(DD_DB_PASSWORD.encode('utf-8')), host=os.environ.get('DD_DB_HOST'), name=os.environ.get('DD_DB_DATABASE', 'direct_delivery') ) # AWS region for boto3 clients (overridable via env, e.g. for local runs) AWS_REGION = os.environ.get('AWS_REGION', 'us-east-1') # Direct Delivery XML (delivery audit) S3 bucket holding the ERN delivery files DELIVERY_XML_S3_BUCKET_NAME = os.environ['DELIVERY_XML_S3_BUCKET_NAME'] # ows-delivery-history DB Connection Params DB_PASSWORD = secrets_manager_client.get_cred('DB_PASSWORD') or '' DB_CONNECTION_STRING = 'mysql+pymysql://{user}:{password}@{host}/{name}?charset=utf8mb4'.format( user=os.environ.get('DB_USER'), password=parse.quote(DB_PASSWORD.encode('utf-8')), host=os.environ.get('DB_HOST'), name=os.environ.get('DB_NAME', 'delivery_history') ) # Database config DB_OPTIONS = { 'max_overflow': -1, 'pool_pre_ping': True, 'pool_recycle': 3600, # Avoids connections going stale 'pool_size': 5, 'poolclass': QueuePool, } # Errors and loggers SENTRY_DSN = os.environ.get('SENTRY_DSN') or None LOGGER_LEVEL = logging.INFO LOGGER_NAME = 'ows1' # Generic handlers HEALTH_CHECK = '/hello/' SME_ENCODER_ID = 25