"""Application configuration.""" import logging import os from secrets_manager.flask_ext import FlaskSecretsManager from pyraml import parser as raml_parser # Service information SERVICE_NAME = 'ows-features' SERVICE_VERSION = '0.0.1' # Production environment PROD_ENVIRONMENT = 'prod' DEV_ENVIRONMENT = 'dev' QA_ENVIRONMENT = 'qa' TEST_ENVIRONMENT = 'test' ENVIRONMENT = os.environ.get('Environment', DEV_ENVIRONMENT) FORCE_REMOTE = os.environ.get('FORCE_REMOTE', 'false').lower() == 'true' secrets_manager_client = FlaskSecretsManager( application_context=False, environment=ENVIRONMENT, service_name=SERVICE_NAME, force_remote=FORCE_REMOTE, ) # Caching REDIS_URL = secrets_manager_client.get_cred('REDIS_URL') or None REDIS_CACHE_TTL = os.environ.get('REDIS_CACHE_TTL', 60) # Errors and loggers SENTRY = secrets_manager_client.get_cred('SENTRY_DSN') or None LOGGER_LEVEL = int(os.environ.get('LOGGER_LEVEL') or logging.INFO) LOGGER_NAME = 'ows1' logger = logging.getLogger(LOGGER_NAME) path = os.path.dirname(os.path.dirname(__file__)) # API definition API_DEFINITION = raml_parser.load( os.path.join( path, 'docs', 'api', 'ows-features-{version}.raml'.format(version=SERVICE_VERSION), ) ) API_TEST_DEFINITION = raml_parser.load(os.path.join(path, 'docs', 'api', 'test.raml')) if ENVIRONMENT == TEST_ENVIRONMENT: FEATURES_YML_FILE = os.path.join(path, 'tests', 'fixtures', 'features.yml') PROFILE_FEATURES_YML_FILE = os.path.join( path, 'tests', 'fixtures', 'profile_features.yml' ) else: FEATURES_YML_FILE = os.path.join(path, 'features.yml') if os.environ.get('PATH_TO_FEATURES_YML'): FEATURES_YML_FILE = os.environ.get('PATH_TO_FEATURES_YML') HEALTH_CHECK = '/hello/' # split.io SPLITIO_API_KEY = secrets_manager_client.get_cred('SPLITIO_API_KEY') or None SPLIT_CONFIG = { 'ready': 5000, # postfork does not work when uwsgi --lazy-apps is enabled # and --lazy-apps is required by ddtrace 'preforkedInitialization': False, # 'optimized' is the default setting, but failing to explicitly pass it in # produces warning log messages 'impressionsMode': 'optimized', 'impressionsQueueSize': 20000, 'impressionsRefreshRate ': 30, } SPLIT_BLOCK_UNTIL_READY_TIMEOUT = ( 115 # Try for *almost* 2 minutes. uwsgi will kill the process at 2 minutes. ) SPLITIO_ENABLED = 'true' # split.io is always powering feature flags ONLY_LOG_ACCESS_ERRORS = True