"""Application configuration.""" import os from secrets_manager.python_ext import PythonSecretsManager from sqlalchemy import pool # Service information SERVICE_NAME = 'ows-vector-job-rules' 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) # Init secrets manager secrets_manager_client = PythonSecretsManager( environment=ENVIRONMENT, service_name=SERVICE_NAME ) # Errors and loggers SENTRY = os.environ.get('SENTRY_DSN') or None LOGGER_LEVEL = os.environ.get('LOGGER_LEVEL') or '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=os.environ.get('OVJR_MYSQL_USER'), password=secrets_manager_client.get_cred('OVJR_MYSQL_PASSWORD'), host=os.environ.get('OVJR_MYSQL_HOST'), db_name=os.environ.get('OVJR_MYSQL_DATABASE'), charset='utf8', ) ) # REDIS CACHE REDIS_HOST = os.environ.get('REDIS_HOST') REDIS_PORT = int(os.environ.get('REDIS_PORT', 6379)) # AWS AWS_DEFAULT_REGION = os.environ.get('AWS_DEFAULT_REGION', 'us-east-1')