"""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.flask_ext import FlaskSecretsManager # 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-sound-recordings' 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 = FlaskSecretsManager( application_context=False, environment=ENVIRONMENT, service_name=SERVICE_NAME) # Errors and loggers SENTRY = os.environ.get('SENTRY_DSN') or None NEO4J_DATABASE_NAME = os.environ.get('NEO4J_DATABASE_NAME', 'graph.db') NEO4J_URL = secrets_manager_client.get_cred('NEO4J_URL') NEO4J_USERNAME = secrets_manager_client.get_cred('NEO4J_USERNAME') NEO4J_PASSWORD = secrets_manager_client.get_cred('NEO4J_PASSWORD') # Maximum connection pool per host, driver default is 100 NEO4J_MAX_CONN_POOLSIZE = int(os.environ.get('NEO4J_MAX_CONN_POOLSIZE', 100)) LOGGER_LEVEL = logging.INFO LOGGER_NAME = 'ows1' # Generic handlers HEALTH_CHECK = '/hello/' EXCLUDE_PATH = [HEALTH_CHECK] # Swagger documentation path SWAGGER_FILE_PATH = 'spec/ows_sound_recordings-1.0.0.yaml' # Version bucket name VERSION_BUCKET_KEY_PREFIX = os.environ.get('S3_VERSION_BUCKET_KEY_PREFIX', '') if ENVIRONMENT == TEST_ENVIRONMENT: VERSION_BUCKET = 'test-sr-bucket' else: VERSION_BUCKET = os.environ['S3_VERSION_BUCKET'] # Delivery audit bucket ENV_DELIVERY_CONFIG = { 'test': { 'bucket': 'test-bucket', 'prefix': '' }, 'dev': { 'bucket': 'test-orcd-bucket', 'prefix': 'sound_recording_delivery_audit' }, 'qa': { 'bucket': 'qa-sr-delivery-audit-bucket', 'prefix': '' }, 'prod': { 'bucket': 'prod-sr-delivery-audit-bucket', 'prefix': '' } } DELIVERY_BUCKET = ENV_DELIVERY_CONFIG[ENVIRONMENT]['bucket'] DELIVERY_BUCKET_PREFIX = ENV_DELIVERY_CONFIG[ENVIRONMENT]['prefix'] # Snowflake SNOWFLAKE_POOL_SIZE = 15 # UWSGI number of threads SNOWFLAKE_POOL_RECYCLE = 4 * 55 * 60 # Snowflake timeout: ~4 hours SNOWFLAKE_POOL_MAX_OVERFLOW = 5 SNOWFLAKE_POOL_PRE_PING = False SNOWFLAKE_POOL_RESET_ON_RETURN = None SNOWFLAKE_CONNECT_ARGS = {} if ENVIRONMENT == DEV_ENVIRONMENT or ENVIRONMENT == TEST_ENVIRONMENT: SNOWFLAKE_USER = os.environ.get('SNOWFLAKE_USER') SNOWFLAKE_KEY = os.environ.get('SNOWFLAKE_KEY') else: SNOWFLAKE_USER = secrets_manager_client.get_cred('SNOWFLAKE_USER') SNOWFLAKE_KEY = secrets_manager_client.get_cred('SNOWFLAKE_KEY') SNOWFLAKE_ACCOUNT = os.environ.get('SNOWFLAKE_ACCOUNT') SNOWFLAKE_ROLE = os.environ.get('SNOWFLAKE_ROLE') SNOWFLAKE_WAREHOUSE = os.environ.get('SNOWFLAKE_WAREHOUSE') SNOWFLAKE_SCHEMA = os.environ.get('SNOWFLAKE_SCHEMA', 'QA') SNOWFLAKE_DATABASE = os.environ.get('SNOWFLAKE_DATABASE') ENABLE_FLASGGER = int(os.environ.get('ENABLE_FLASGGER', 0)) ONLY_LOG_ACCESS_ERRORS = False