"""Application configuration.""" import logging import os from secrets_manager.flask_ext import FlaskSecretsManager from sqlalchemy.pool import QueuePool, StaticPool # Service information SERVICE_NAME = 'ows-timed-release' 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) # Errors and loggers SENTRY = os.environ.get('SENTRY_DSN') or None LOGGER_LEVEL = logging.INFO LOGGER_NAME = 'ows1' # Generic handlers HEALTH_CHECK = '/hello/' secrets_manager_client = FlaskSecretsManager( application_context=False, environment=ENVIRONMENT, service_name=SERVICE_NAME) # Database config RDS_DB_URL = 'sqlite://' AR_DB_URL = 'sqlite://' POOL_CLASS = StaticPool AR_MYSQL_PASSWORD = os.environ.get('AR_MYSQL_PASSWORD') RDS_MYSQL_PASSWORD = os.environ.get('RDS_MYSQL_PASSWORD') if ENVIRONMENT != TEST_ENVIRONMENT: if ENVIRONMENT in (QA_ENVIRONMENT, PROD_ENVIRONMENT): AR_MYSQL_PASSWORD = ( secrets_manager_client.get_cred('AR_MYSQL_PASSWORD') ) RDS_MYSQL_PASSWORD = ( secrets_manager_client.get_cred('RDS_MYSQL_PASSWORD') ) RDS_DB_URL = ( 'mysql+pymysql://{RDS_MYSQL_USER}:{RDS_MYSQL_PASSWORD}' '@{RDS_MYSQL_HOST}/{RDS_MYSQL_DATABASE}?charset=utf8mb4').format( RDS_MYSQL_USER=os.environ.get('RDS_MYSQL_USER'), RDS_MYSQL_PASSWORD=RDS_MYSQL_PASSWORD, RDS_MYSQL_HOST=os.environ.get('RDS_MYSQL_HOST'), RDS_MYSQL_DATABASE=os.environ.get('RDS_MYSQL_DATABASE')) AR_DB_URL = ( 'mysql+pymysql://{AR_MYSQL_USER}:{AR_MYSQL_PASSWORD}' '@{AR_MYSQL_HOST}/{AR_MYSQL_DB}?charset=utf8mb4').format( AR_MYSQL_USER=os.environ.get('AR_MYSQL_USER'), AR_MYSQL_PASSWORD=AR_MYSQL_PASSWORD, AR_MYSQL_HOST=os.environ.get('AR_MYSQL_HOST'), AR_MYSQL_DB=os.environ.get('AR_MYSQL_DB')) POOL_CLASS = QueuePool POOL_SIZE = 5 POOL_RECYCLE_MS = 3600 # Avoids connections going stale POOL_MAX_OVERFLOW = -1 POOL_PRE_PING = True # Time zones of product live time TIME_ZONES = ('local', 'GMT') # Timing TIMING = ('timed', 'staggered') # Time format for time_of_day_product field DEFAULT_TIME_FORMAT = '%H:%M:%S' # Swagger file path SWAGGER_FILE_PATH = 'spec/swagger.yaml' # Scheduler group SCHEDULER_GROUP = os.environ.get( 'SCHEDULER_GROUP', f'{ENVIRONMENT}-lambda-timed-release-product-update-schedules') WS_SCHEDULER_GROUP = os.environ.get( 'WS_SCHEDULER_GROUP', f'{ENVIRONMENT}-lambda-timed-release-ws-product-schedules') SCHEDULER_ROLE_ARN = os.environ.get('SCHEDULER_ROLE_ARN', '') WS_SCHEDULER_ROLE_ARN = os.environ.get('WS_SCHEDULER_ROLE_ARN', '') # Lambda ARN's TRIGGER_PRODUCT_UPDATE_LAMBDA_ARN = \ os.environ.get('TRIGGER_PRODUCT_UPDATE_LAMBDA_ARN', '') NOTIFY_LABEL_MANAGER_LAMBDA_ARN = \ os.environ.get('NOTIFY_LABEL_MANAGER_LAMBDA_ARN', '') TRIGGER_SFN_WS_UPDATE_METADATA_ARN = \ os.environ.get('TRIGGER_SFN_WS_UPDATE_METADATA_ARN', '') WS_SEND_NOTIFICATION_LAMBDA_ARN = \ os.environ.get('WS_SEND_NOTIFICATION_LAMBDA_ARN', '') # Step function ARN EXECUTE_STEP_FUNCTION_ARN = os.environ.get('EXECUTE_STEP_FUNCTION_ARN', '') # AWS Region AWS_REGION = os.environ.get('AWS_REGION', 'us-east-1')