"""Feed Status Monitor config.""" import base64 import logging import os # Service information SERVICE_NAME = 'monty-feed-status' # Production environment PROD_ENVIRONMENT = 'prod' DEV_ENVIRONMENT = 'dev' QA_ENVIRONMENT = 'qa' TEST_ENVIRONMENT = 'test' ENVIRONMENT = os.environ.get('Environment', DEV_ENVIRONMENT) AWS_REGION = os.environ.get('AWS_REGION', 'us-east-1') # Sentry SENTRY_DSN = os.environ.get('SENTRY_DSN') S3_BUCKET_NAME = os.environ.get('S3_BUCKET_NAME', 'cucumbers') DASHBOARD_DISPLAYED_DAYS = 32 DASHBOARD_DISPLAYED_MONTHS = 32 MARKETSHARE_DISPLAYED_DAYS = 105 MONTHLY_DISPLAYED_DAYS = 105 WEEKLY_STABILITY_MONITORING_PERIOD = 28 # days STABILITY_MONITORING_PERIOD = 25 # days COMMENTS_FEED = '__comments__' settings = { TEST_ENVIRONMENT: { 'feed_ingetions_table': 'dev_feed_ingestion_status', 'feed_sender_table': 'dev_feed_sender_status', 'feed_activity_detector_table': 'dev_activity_detector_status', 'log_level': logging.DEBUG, }, DEV_ENVIRONMENT: { 'feed_ingetions_table': 'dev_feed_ingestion_status', 'feed_sender_table': 'dev_feed_sender_status', 'feed_activity_detector_table': 'dev_activity_detector_status', 'log_level': logging.DEBUG, }, QA_ENVIRONMENT: { 'feed_ingetions_table': 'prod_feed_ingestion_status', 'feed_sender_table': 'prod_feed_sender_status', 'feed_activity_detector_table': 'qa_activity_detector_status', 'log_level': logging.INFO, }, PROD_ENVIRONMENT: { 'feed_ingetions_table': 'prod_feed_ingestion_status', 'feed_sender_table': 'prod_feed_sender_status', 'feed_activity_detector_table': 'prod_activity_detector_status', 'log_level': logging.INFO, }, } # DynamoDB table names' settings FEED_INGESTION_TABLE = settings[ENVIRONMENT]['feed_ingetions_table'] FEED_SENDER_TABLE = settings[ENVIRONMENT]['feed_sender_table'] FEED_ACTIVITY_DETECTOR_TABLE = settings[ENVIRONMENT][ 'feed_activity_detector_table' ] DELPHI_SLZ_PARAMS = { 'db': os.environ.get('DELPHI_SLZ_DATABASE'), 'host': os.environ.get('DELPHI_SLZ_HOST'), 'user': os.environ.get('DELPHI_SLZ_USER'), 'password': os.environ.get('DELPHI_SLZ_PASSWORD') } def decode_snowflake_key(snowflake_key=None): """ Decode the Snowflake key. Args: snowflake_key (str): Snowflake key. Returns: bytes: Decoded Snowflake key. """ if not snowflake_key: raise ValueError('Expected snowflake key, got None.') decoded_key = base64.b64decode(bytes(snowflake_key, encoding='utf-8')) return decoded_key def get_sf_conn_config(): """ Get Snowflake connection config. Returns: dict: Snowflake connection config """ sf_private_key_str = os.environ.get('SNOWFLAKE_KEY') sf_creds = { 'user': os.environ.get('SNOWFLAKE_USER'), 'account': os.environ.get('SNOWFLAKE_ACCOUNT'), 'role': os.environ.get('SNOWFLAKE_ROLE'), 'warehouse': os.environ.get('SNOWFLAKE_WAREHOUSE'), 'db': os.environ.get('SNOWFLAKE_DATABASE'), 'schema': os.environ.get('SNOWFLAKE_SCHEMA'), } if sf_private_key_str: private_key = decode_snowflake_key(sf_private_key_str) # moved credentials within function # to avoid exposing private key in # environment variables sf_creds['private_key'] = private_key return sf_creds def get_delphi_slz_config(): """Get Delphi SLZ connection config.""" return DELPHI_SLZ_PARAMS