class Config(object): """Base configuration.""" DEBUG = env_bool('IGL_DEBUG', default=True) TESTING = env_bool('IGL_TESTING', default=True) CHANNEL_NOTIFICATION_REPO_CONF = env_queue_config( 'CHANNEL_NOTIFICATION_REPO') ROUTING_TABLE = env_json("IGL_MCHR_ROUTING_TABLE") SENTRY_DSN = env("SENTRY_DSN", default=None)
def Config(): environment_config = dict( SUBSCRIPTIONS_REPO=env_s3_config('SUBSCRIPTIONS_REPO'), # api base url, ex: https://test.api.com CHANNEL_URL=env('CHANNEL_URL'), TESTING=env_bool('TESTING', default=False), DEBUG=env_bool('DEBUG', default=False), HTTP_BLOCKCHAIN_ENDPOINT=env('HTTP_BLOCKCHAIN_ENDPOINT'), CONTRACT_REPO=env_s3_config('CONTRACT_REPO'), CONTRACT_BUILD_ARTIFACT_KEY=env('CONTRACT_BUILD_ARTIFACT_KEY'), CONTRACT_NETWORK_ID=str(int(env('CONTRACT_NETWORK_ID', default=1))), CONTRACT_OWNER_PRIVATE_KEY=env('CONTRACT_OWNER_PRIVATE_KEY'), MESSAGE_CONFIRMATION_THRESHOLD=int(env('CONFIRMATION_THRESHOLD', default='12')), SENDER=env('SENDER', default='AU') ) return Box(environment_config)
import logging from io import BytesIO import boto3 from botocore.client import ClientError from libtrustbridge.domain.wire_protocols.generic_discrete import Message from libtrustbridge.utils.conf import env_bool logger = logging.getLogger(__name__) IGL_ALLOW_UNSAFE_REPO_CLEAR = env_bool('IGL_ALLOW_UNSAFE_REPO_CLEAR', default=False) IGL_ALLOW_UNSAFE_REPO_IS_EMPTY = env_bool('IGL_ALLOW_UNSAFE_REPO_IS_EMPTY', default=False) def slash_chunk(uri): """ given a URI, returns string like U/R/I (with slashes in it). This is to prevent a very large number of URIs from exhausting the inode pool on some files systems when they are saved as files or directory names. (because subdirectories could be mounted on differnt file systems) """ if len(uri) > 10: return '{}/{}'.format( uri[:5], uri[5:],
def test_simple(): # test env_none assert not os.environ.get(TEST_ENV_NONE_KEY) assert not conf.env_none(TEST_ENV_NONE_KEY) assert TEST_DEFAULT == conf.env_none(TEST_ENV_NONE_KEY, default=TEST_DEFAULT) os.environ[TEST_ENV_NONE_KEY] = TEST_NON_DEFAULT_VALUE assert TEST_NON_DEFAULT_VALUE == conf.env_none(TEST_ENV_NONE_KEY, default=TEST_DEFAULT) os.environ[TEST_ENV_NONE_KEY] = "" assert conf.env_none(TEST_ENV_NONE_KEY) is None # test env_bool assert not os.environ.get(TEST_ENV_BOOL_VALUE_KEY) for env_value, value in TEST_ENV_BOOL_VALUES: os.environ[TEST_ENV_BOOL_VALUE_KEY] = env_value assert conf.env_bool(TEST_ENV_BOOL_VALUE_KEY) == value del os.environ[TEST_ENV_BOOL_VALUE_KEY] assert conf.env_bool(TEST_ENV_BOOL_VALUE_KEY, default=True) assert conf.env_bool(TEST_ENV_BOOL_VALUE_KEY, default=None, nullable=True) is None os.environ[TEST_ENV_BOOL_VALUE_KEY] = 'False' assert conf.env_bool(TEST_ENV_BOOL_VALUE_KEY, default=True) is False # not none exception del os.environ[TEST_ENV_BOOL_VALUE_KEY] with pytest.raises(Exception) as e: conf.env_bool(TEST_ENV_BOOL_VALUE_KEY, nullable=False, default=None) assert str( e.value) == "Variable {} can't be None".format(TEST_ENV_BOOL_VALUE_KEY) # unknown string value os.environ[TEST_ENV_BOOL_VALUE_KEY] = "FalseFalseTrue" with pytest.raises(Exception) as e: conf.env_bool(TEST_ENV_BOOL_VALUE_KEY) assert str(e.value) == "Unknown value for variable {}: '{}'".format( TEST_ENV_BOOL_VALUE_KEY, os.environ[TEST_ENV_BOOL_VALUE_KEY]) # invalid default value del os.environ[TEST_ENV_BOOL_VALUE_KEY] with pytest.raises(Exception) as e: conf.env_bool(TEST_ENV_BOOL_VALUE_KEY, default=dict(msg="Hello")) assert str(e.value) == "Unknown value type for variable {}: '{}'".format( TEST_ENV_BOOL_VALUE_KEY, dict) # test env_json assert not os.environ.get(TEST_ENV_JSON_KEY) os.environ[TEST_ENV_JSON_KEY] = json.dumps(TEST_ENV_JSON_DICT) assert conf.env_json(TEST_ENV_JSON_KEY) == TEST_ENV_JSON_DICT del os.environ[TEST_ENV_JSON_KEY] assert conf.env_json( TEST_ENV_JSON_KEY, default=TEST_ENV_JSON_DEFAULT) == TEST_ENV_JSON_DEFAULT os.environ[TEST_ENV_JSON_KEY] = TEST_ENV_INVALID_JSON_STR with pytest.raises(ValueError): conf.env_json(TEST_ENV_JSON_KEY)
} }, 'handlers': { 'console': { 'level': 'DEBUG', 'class': 'logging.StreamHandler', 'formatter': 'verbose', } }, 'root': { 'handlers': ['console'], 'level': 'INFO', }, '': { 'handlers': ['console'], 'level': 'INFO', }, } # JSON formatter for sending logs to ES LOG_FORMATTER_JSON = env_bool('ICL_LOG_FORMATTER_JSON', default=False) if LOG_FORMATTER_JSON: # pragma: no cover LOGGING['formatters']['json'] = { '()': 'libtrustbridge.utils.json_log_formatter.JsonFormatter', } LOGGING['handlers']['console']['formatter'] = 'json' # Apply the config dictConfig(LOGGING) logger = logging.getLogger('intergov')