"""App configuration.""" from logging import INFO 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 # Load environment variables from a .env file if present dotenv_path = abspath(join(dirname(__file__), pardir, '.env')) load_dotenv(dotenv_path) class Config: """Configuration class for moneyhub.""" # Service information SERVICE_NAME = 'ows-moneyhub' SERVICE_VERSION = '1.0.0' # Environment PROD_ENVIRONMENT = 'prod' DEV_ENVIRONMENT = 'dev' QA_ENVIRONMENT = 'qa' TEST_ENVIRONMENT = 'test' ENVIRONMENT = os.environ.get('Environment') or DEV_ENVIRONMENT # Logging LOGGER_LEVEL = INFO LOGGER_NAME = 'ows1' ONLY_LOG_ACCESS_ERRORS = ENVIRONMENT in [DEV_ENVIRONMENT, TEST_ENVIRONMENT] SENTRY = os.environ.get('SENTRY_DSN') or None # Database if ENVIRONMENT == TEST_ENVIRONMENT: DATABASE_URL = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=UTF8MB4'.format( os.environ.get('TEST_MYSQL_DB_USER'), os.environ.get('TEST_MYSQL_DB_PASS'), os.environ.get('TEST_MYSQL_DB_HOST'), os.environ.get('TEST_MYSQL_DB_PORT', '6500'), os.environ.get('TEST_MYSQL_DB_NAME', 'royalty_accounting_test'), ) SNOWFLAKE_URL = DATABASE_URL SNOWFLAKE_PRIVATE_KEY_PATH = None SNOWFLAKE_PRIVATE_KEY = None SNOWFLAKE_KEY_PASSPHRASE = None else: DATABASE_URL = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=UTF8MB4'.format( os.environ.get('MYSQL_DB_USER'), os.environ.get('MYSQL_DB_PASS'), os.environ.get('MYSQL_DB_HOST'), os.environ.get('MYSQL_DB_PORT', '3306'), os.environ.get('MYSQL_DB_NAME', 'royalty_accounting'), ) SNOWFLAKE_URL = 'snowflake://{}:@{}/{}/{}?warehouse={}&role={}'.format( os.environ.get('SNOWFLAKE_USER'), os.environ.get('SNOWFLAKE_ACCOUNT'), os.environ.get('SNOWFLAKE_DATABASE'), os.environ.get('SNOWFLAKE_SCHEMA'), os.environ.get('SNOWFLAKE_WAREHOUSE'), os.environ.get('SNOWFLAKE_ROLE'), ) SNOWFLAKE_PRIVATE_KEY = os.environ.get('SNOWFLAKE_PRIVATE_KEY') SNOWFLAKE_PRIVATE_KEY_PATH = os.environ.get('SNOWFLAKE_PRIVATE_KEY_PATH') SNOWFLAKE_KEY_PASSPHRASE = os.environ.get('SNOWFLAKE_KEY_PASSPHRASE', '') DATABASE_ENGINE_ARGUMENTS: dict = { 'connect_args': { 'connect_timeout': 10 }, 'pool_pre_ping': True, 'pool_size': 30, 'pool_recycle': 3600, 'max_overflow': 60, } DATABASE_SESSION_ARGUMENTS = {'autocommit': False, 'autoflush': True} # SQS Queues SQS_MH_CUSTOM_REPORTS_QUEUE_NAME = \ f'{ENVIRONMENT}-sqs-moneyhub-custom-reports-queue' SQS_MH_GENERATE_ATTACHMENTS_QUEUE_NAME = \ f'{ENVIRONMENT}-sqs-moneyhub-generate-attachments-queue' # Redis configuration REDIS_HOST = os.environ.get('REDIS_HOST') or None REDIS_PORT = os.environ.get('REDIS_PORT') or None REDIS_USE_SSL = os.environ.get('REDIS_USE_SSL', False) REDIS_ENABLED = os.environ.get('REDIS_ENABLED', False) # ECS Task Configuration TASK_FAMILY = os.environ.get('TASK_FAMILY') CONTAINER_NAME = os.environ.get('CONTAINER_NAME') ECS_CLUSTER_NAME = os.environ.get('ECS_CLUSTER_NAME') AWS_REGION = os.environ.get('AWS_REGION', 'us-east-1') ECS_TASK_SUBNETS = os.environ.get('ECS_TASK_SUBNETS') ECS_TASK_SECURITY_GROUPS = os.environ.get('ECS_TASK_SECURITY_GROUPS') ECS_TASK_ASSIGN_PUBLIC_IP = os.environ.get('ECS_TASK_ASSIGN_PUBLIC_IP', 'DISABLED') # Step Functions Configuration DBT_REFRESH_STATE_MACHINE_ARN = os.environ.get('DBT_REFRESH_STATE_MACHINE_ARN')