"""This file contains configuration data for python daemon and workers.""" import logging 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 from secrets_manager.lambda_ext import LambdaSecretsManager # Load environment variables from a .env file if present dotenv_path = abspath(join(dirname(__file__), pardir, '.env')) load_dotenv(dotenv_path) # Application info SERVICE_NAME = 'daemon-video' APP_VERSION = '0.0.1' # Environments ENVIRONMENT_PROD = 'prod' ENVIRONMENT_DEV = 'dev' ENVIRONMENT_QA = 'qa' ENVIRONMENT_TEST = 'test' ENVIRONMENT = os.environ.get('Environment', ENVIRONMENT_DEV) OWS_ENVIRONMENT = ENVIRONMENT if ENVIRONMENT == ENVIRONMENT_DEV: OWS_ENVIRONMENT = ENVIRONMENT_QA RIPPER_OUTPUT_VIDEO_WINDOWS_MOUNT_PATH = os.environ.get( 'RIPPER_OUTPUT_VIDEO_WINDOWS_MOUNT_PATH', '') RIPPER_OUTPUT_THUMBNAIL_WINDOWS_MOUNT_PATH = os.environ.get( 'RIPPER_OUTPUT_THUMBNAIL_WINDOWS_MOUNT_PATH', '') OUTPUT_VIDEO_WINDOWS_DIR = 'VPB_testing' OUTPUT_VIDEO_PRORES_MEZZANINE_DIR = 'video_master/source' OUTPUT_VIDEO_H264_MEZZANINE_DIR = 'stored_videos' OUTPUT_TIFF_DIR = 'TIF' if ENVIRONMENT == ENVIRONMENT_TEST: RIPPER_OUTPUT_VIDEO_WINDOWS_MOUNT_PATH = '/test/path' RIPPER_OUTPUT_THUMBNAIL_WINDOWS_MOUNT_PATH = '/test/path' if ENVIRONMENT == ENVIRONMENT_QA: OUTPUT_VIDEO_PRORES_MEZZANINE_DIR = 'qa_daemon_video_video_master' OUTPUT_VIDEO_H264_MEZZANINE_DIR = 'qa_daemon_video_stored_videos' IS_ON_PREM_INSTANCE = os.environ.get('IS_ON_PREM_INSTANCE') == 'true' if IS_ON_PREM_INSTANCE: SERVICE_NAME = '{}-on-prem'.format(SERVICE_NAME) # Amazon Web Services # ------------------- AWS_REGION = os.environ.get('AWS_REGION', 'us-east-1') secrets_manager_client = LambdaSecretsManager( environment=ENVIRONMENT, service_name=SERVICE_NAME ) # Logging # ------- # Sentry: allows us to track effectively exceptions. SENTRY_DSN = os.environ.get('SENTRY_DSN') # Loggly LOGGER_DSN = os.environ.get('LOGGER_DSN') LOGGER_LEVEL = getattr(logging, os.environ.get('LOGGER_LEVEL', 'INFO')) LOGGER_NAME = 'ows1' MEDIACONVERT_URL = os.environ.get('MEDIACONVERT_URL') MEDIACONVERT_QUEUE = os.environ.get('MEDIACONVERT_QUEUE') MEDIACONVERT_ROLE = os.environ.get('MEDIACONVERT_ROLE') if ENVIRONMENT == ENVIRONMENT_TEST: MEDIACONVERT_URL = 'test-mediaconvert-url' MEDIACONVERT_QUEUE = 'test-mediaconvert-queue' MEDIACONVERT_ROLE = 'test-mediaconvert-role' WORKER_NAME_PREFIX = os.environ.get('WORKER_NAME_PREFIX', '') NUM_ACTIVITY_TASK_HANDLING_WORKERS = int(os.environ.get( 'NUM_ACTIVITY_TASK_HANDLING_WORKERS') or 10) ACTIVITY_TASK_SQS_QUEUE_NAME = os.environ.get('ACTIVITY_TASK_SQS_QUEUE_NAME') ACTIVITY_ARN_PREFIX = os.environ.get('ACTIVITY_ARN_PREFIX') if ENVIRONMENT == ENVIRONMENT_TEST: ACTIVITY_ARN_PREFIX = 'arn:aws:states:us-test-1:123456789:activity:' CLOUDWATCH_NAMESPACE = 'ElasticBeanstalk/{}'.format(SERVICE_NAME) CUSTOM_METRIC_CPU_USAGE_PERCENT = os.environ.get( 'CUSTOM_METRIC_CPU_USAGE_PERCENT', 'CPUUsagePercent') CUSTOM_METRIC_MEMORY_USAGE_PERCENT = os.environ.get( 'CUSTOM_METRIC_MEMORY_USAGE_PERCENT', 'MemoryUsagePercent') MAX_ALLOWED_CPU_UTILIZATION_PERCENT = int(os.environ.get( 'MAX_ALLOWED_CPU_UTILIZATION_PERCENT', 90)) MAX_ALLOWED_MEMORY_UTILIZATION_PERCENT = int(os.environ.get( 'MAX_ALLOWED_MEMORY_UTILIZATION_PERCENT', 90)) MAX_TIMEOUT_BETWEEN_RESOURCE_UTILIZATION_CHECKS_SECONDS = int(os.environ.get( 'MAX_TIMEOUT_BETWEEN_RESOURCE_UTILIZATION_CHECKS_SECONDS', 15)) MAX_TIMEOUT_BEFORE_PICKING_UP_WORK_SECONDS = int(os.environ.get( 'MAX_TIMEOUT_BEFORE_PICKING_UP_WORK_SECONDS', 60)) MAX_TIMEOUT_BETWEEN_PICKING_UP_WORK_AND_HANDLING_SECONDS = int(os.environ.get( 'MAX_TIMEOUT_BETWEEN_PICKING_UP_WORK_AND_HANDLING_SECONDS', 10)) MAX_TIMEOUT_AFTER_AWS_THROTTLING_EXCEPTION_SECONDS = int( os.environ.get( 'MAX_TIMEOUT_AFTER_AWS_THROTTLING_EXCEPTION_SECONDS', 20)) HEARTBEAT_PERIOD_SECONDS = int(os.environ.get( 'HEARTBEAT_PERIOD_SECONDS', 30)) HTTP_REQUEST_RETRY_PERIOD_SECONDS = int(os.environ.get( 'HTTP_REQUEST_RETRY_PERIOD_SECONDS', 60)) S3_TOKEN_EXPIRATION_FORMAT = '%Y-%m-%d %H:%M:%S' UPLOAD_FROM_BROWSER_TO_S3_TIMEOUT_THRESHOLD = int(os.environ.get( 'UPLOAD_FROM_BROWSER_TO_S3_TIMEOUT_THRESHOLD', 10 * 60)) if ENVIRONMENT == ENVIRONMENT_TEST: GOOGLE_API_KEY = 'some_google_api_key' elif not IS_ON_PREM_INSTANCE: GOOGLE_API_KEY = secrets_manager_client.get_cred('GOOGLE_API_KEY') AUTO_APPROVE_USER_ID = os.environ.get('AUTO_APPROVE_USER_ID', 2204) AUTO_APPROVE_USER = f'oa:{AUTO_APPROVE_USER_ID}'