"""Application configuration.""" import logging import os from secrets_manager.flask_ext import FlaskSecretsManager from sqlalchemy import pool # Service information SERVICE_NAME = 'ows-content-review' 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 = FlaskSecretsManager( application_context=False, environment=ENVIRONMENT, service_name=SERVICE_NAME) # Errors and loggers SENTRY = secrets_manager_client.get_cred('SENTRY_DSN') or None LOGGER_LEVEL = logging.INFO LOGGER_NAME = 'ows1' # Generic handlers HEALTH_CHECK = '/hello/' # Database config if ENVIRONMENT == TEST_ENVIRONMENT: POOL_CLASS = pool.StaticPool DB_URL = 'sqlite://' else: # DB Pool starts with specified pool size, but will temporarily increase # if there is a surge of requests. POOL_CLASS = pool.QueuePool POOL_SIZE = 5 POOL_RECYCLE_MS = 3600 # Avoids connections going stale POOL_MAX_OVERFLOW = -1 POOL_PRE_PING = True # We must explicitly set utf8 encoding for MySQL connections DB_URL = ( 'mysql+pymysql://{user}:{password}@{host}/{db_name}?charset={charset}' .format( user=secrets_manager_client.get_cred('OCR_MYSQL_USER'), password=secrets_manager_client.get_cred('OCR_MYSQL_PASSWORD'), host=secrets_manager_client.get_cred('OCR_MYSQL_HOST'), db_name=secrets_manager_client.get_cred('OCR_MYSQL_DATABASE'), charset='utf8'))