"""Application configuration.""" import logging import os from urllib import parse from secrets_manager.python_ext import PythonSecretsManager from sqlalchemy.pool import QueuePool # Service information SERVICE_NAME = "ows-vectororder" SERVICE_VERSION = "1.0.0" # Production environment DEV_ENVIRONMENT = "dev" TEST_ENVIRONMENT = "test" ENVIRONMENT = os.environ["Environment"] secrets_manager_client = PythonSecretsManager( environment=ENVIRONMENT, service_name=SERVICE_NAME ) # Errors and loggers SENTRY_DSN = os.environ.get("SENTRY_DSN") or None LOGGER_LEVEL = getattr(logging, os.environ.get("LOGGER_LEVEL") or "INFO") LOGGER_NAME = "ows1" logging.getLogger("ddtrace").setLevel(logging.WARNING) # Generic handlers HEALTH_CHECK = "/hello/" AWS_REGION = os.environ.get("AWS_DEFAULT_REGION", "us-east-1") # Vector order DynamoDB name DDB_ORDERS_TABLE = os.environ["DDB_ORDERS_TABLE"] # Vector order search requests table name. DDB_SEARCH_REQUESTS_TABLE = os.environ["DDB_SEARCH_REQUESTS_TABLE"] # Batch size for DynamoDB operations. DDB_BATCH_SIZE = 100 # Database config AR_DB_URL = "mysql+pymysql://{user}:{password}@{host}/{db}?charset={charset}".format( user=os.environ.get("AR_MYSQL_USER"), password=parse.quote( secrets_manager_client.get_cred("AR_MYSQL_PASSWORD").encode("utf-8") ), host=os.environ.get("AR_MYSQL_HOST"), db=os.environ.get("AR_MYSQL_DATABASE", "art_relations"), charset=os.environ.get("AR_MYSQL_CHARSET", "utf8mb4"), ) DD_DB_URL = "mysql+pymysql://{user}:{password}@{host}/{db}?charset={charset}".format( user=os.environ.get("DD_MYSQL_USER"), password=parse.quote( secrets_manager_client.get_cred("DD_MYSQL_PASSWORD").encode("utf-8") ), host=os.environ.get("DD_MYSQL_HOST"), db=os.environ.get("DD_MYSQL_DATABASE", "direct_delivery"), charset="utf8", ) CONNECT_ARGS = { "pool_size": 15, "pool_recycle": 3600, "max_overflow": 5, "poolclass": QueuePool, } # Opensearch details. OPENSEARCH_HOST = os.environ.get("OPENSEARCH_HOST", "") OPENSEARCH_PORT = int(os.environ.get("OPENSEARCH_PORT") or 443) # Default request timeout in seconds. OPENSEARCH_DEFAULT_TIMEOUT = float(os.environ.get("OPENSEARCH_DEFAULT_TIMEOUT") or 60) # the number of connections kept open to this host. Default is no pooling. pool_maxsize = os.environ.get("OPENSEARCH_POOL_MAXSIZE") OPENSEARCH_POOL_MAXSIZE = int(pool_maxsize) if pool_maxsize else None OPENSEARCH_IGNORE_CACHE = bool(os.environ.get("OPENSEARCH_IGNORE_CACHE")) # minutes from encoding/delivery start to consider job (encoding_order_detail) # to be stuck if still has the same status (encoding/delivering) STATUS_STUCK_MINUTES = int(os.environ.get("STATUS_STUCK_MINUTES", 60 * 24)) # Job delivery XML location DELIVERY_XML_S3_BUCKET_NAME = os.environ["DELIVERY_XML_S3_BUCKET_NAME"]