"""Common configuration.""" from logging import INFO import os from lambdacommon import util from secrets_manager.lambda_ext import LambdaSecretsManager from sentry_sdk.integrations.logging import LoggingIntegration # Environment setup DEV_ENVIRONMENT = 'dev' QA_ENVIRONMENT = 'qa' PROD_ENVIRONMENT = 'prod' TEST_ENVIRONMENT = 'test' ENVIRONMENT = os.environ.get('Environment') ENVIRONMENTS = [ TEST_ENVIRONMENT, DEV_ENVIRONMENT, QA_ENVIRONMENT, PROD_ENVIRONMENT] if ENVIRONMENT not in ENVIRONMENTS: raise Exception('Invalid environment. Valid options are " . \ "dev, qa, prod, or test.') APPLICATION_NAME = 'lambda-vector' LAMBDA_NAME = f'{APPLICATION_NAME}-ar-to-ddb-sync' secrets_manager_client = LambdaSecretsManager( environment=ENVIRONMENT, service_name=LAMBDA_NAME) # Logger configuration. LOGGER_LEVEL = os.environ.get('LOGGER_LEVEL', INFO) sentry_logging = LoggingIntegration( level=LOGGER_LEVEL, event_level=None # Don't send error log as sentry event. ) util.init_sentry_for_lambda(sentry_logging) # art_relations database connection setup. AR_DB_CREDENTIALS = { 'user': os.environ.get('AR_MYSQL_USER'), 'password': secrets_manager_client.get_cred('AR_MYSQL_PASSWORD'), 'host': os.environ.get('AR_MYSQL_HOST'), 'port': int(os.environ.get('AR_MYSQL_PORT', '3306')), 'database': os.environ.get('AR_MYSQL_DATABASE'), 'connect_timeout': 15 } # The max number of orders to select on each run. ORDERS_AR_SELECT_LIMIT = int(os.environ.get('ORDERS_AR_SELECT_LIMIT', 100)) # Maximum number of attempts to use for DDB write operation. # Boto uses 10 by default. DDB_WRITE_MAX_ATTEMPTS = int(os.environ.get('DDB_WRITE_MAX_ATTEMPTS', 10)) # Encoder ids, filter for art_relation get orders query. # It is used to process only some specific orders, not all. # Default: release - 17 (Video Encoder), 18 (Vector 2.5), # 23 (Vector Bulk Feeds); harddrive - 19 (Vector 2.5 HD) ORDER_ENCODER_ID_LIST = os.environ.get('ORDER_ENCODER_ID_LIST', '17,18,19,23') ORDERS_S3_BUCKET = os.environ.get('ORDERS_S3_BUCKET', 'test-vector-order') ORDERS_S3_PREFIX = os.environ.get('ORDERS_S3_PREFIX', 'vector3/vector-orders') ORDERS_DDB_TABLE = os.environ.get('ORDERS_DDB_TABLE', 'save_to_dd_db') PHYSICAL_LOCATION_ID_AVL = 1 PHYSICAL_LOCATION_ID_NYC = 2 PHYSICAL_LOCATION_ID_QA = 7 if ENVIRONMENT != TEST_ENVIRONMENT: for k, v in AR_DB_CREDENTIALS.items(): assert v, '{} is not set'.format(k) PHYSICAL_LOCATIONS = os.environ.get( 'PHYSICAL_LOCATIONS', f'{PHYSICAL_LOCATION_ID_AVL},{PHYSICAL_LOCATION_ID_NYC}' )