2016-02-10 19:55:33 +01:00
|
|
|
import copy
|
2017-04-18 14:51:12 +02:00
|
|
|
import logging
|
2016-05-13 16:21:33 +02:00
|
|
|
import os
|
2016-02-10 19:55:33 +01:00
|
|
|
|
2017-04-18 14:51:12 +02:00
|
|
|
from bigchaindb.log.configs import SUBSCRIBER_LOGGING_CONFIG as log_config
|
|
|
|
|
2016-04-07 14:15:29 +02:00
|
|
|
# from functools import reduce
|
|
|
|
# PORT_NUMBER = reduce(lambda x, y: x * y, map(ord, 'BigchainDB')) % 2**16
|
|
|
|
# basically, the port number is 9984
|
|
|
|
|
2017-03-28 14:51:02 +02:00
|
|
|
|
|
|
|
_base_database_rethinkdb = {
|
2017-01-23 16:49:59 +01:00
|
|
|
'host': os.environ.get('BIGCHAINDB_DATABASE_HOST', 'localhost'),
|
|
|
|
'port': int(os.environ.get('BIGCHAINDB_DATABASE_PORT', 28015)),
|
|
|
|
'name': os.environ.get('BIGCHAINDB_DATABASE_NAME', 'bigchain'),
|
|
|
|
}
|
|
|
|
|
2017-03-28 14:51:02 +02:00
|
|
|
# The following variable is used by `bigchaindb configure` to
|
|
|
|
# prompt the user for database values. We cannot rely on
|
|
|
|
# _base_database_rethinkdb.keys() or _base_database_mongodb.keys()
|
|
|
|
# because dicts are unordered. I tried to configure
|
|
|
|
|
2017-04-04 18:58:34 +02:00
|
|
|
_database_keys_map = {
|
2017-11-10 17:53:57 +01:00
|
|
|
'localmongodb': ('host', 'port', 'name'),
|
2017-04-04 18:58:34 +02:00
|
|
|
'mongodb': ('host', 'port', 'name', 'replicaset'),
|
|
|
|
'rethinkdb': ('host', 'port', 'name')
|
|
|
|
}
|
2017-03-28 14:51:02 +02:00
|
|
|
|
2017-11-10 17:53:57 +01:00
|
|
|
_base_database_localmongodb = {
|
|
|
|
'host': os.environ.get('BIGCHAINDB_DATABASE_HOST', 'localhost'),
|
|
|
|
'port': int(os.environ.get('BIGCHAINDB_DATABASE_PORT', 27017)),
|
|
|
|
'name': os.environ.get('BIGCHAINDB_DATABASE_NAME', 'bigchain'),
|
|
|
|
'replicaset': os.environ.get('BIGCHAINDB_DATABASE_REPLICASET'),
|
|
|
|
'login': os.environ.get('BIGCHAINDB_DATABASE_LOGIN'),
|
|
|
|
'password': os.environ.get('BIGCHAINDB_DATABASE_PASSWORD')
|
|
|
|
}
|
|
|
|
|
2017-03-28 14:51:02 +02:00
|
|
|
_base_database_mongodb = {
|
2017-01-23 16:49:59 +01:00
|
|
|
'host': os.environ.get('BIGCHAINDB_DATABASE_HOST', 'localhost'),
|
|
|
|
'port': int(os.environ.get('BIGCHAINDB_DATABASE_PORT', 27017)),
|
|
|
|
'name': os.environ.get('BIGCHAINDB_DATABASE_NAME', 'bigchain'),
|
|
|
|
'replicaset': os.environ.get('BIGCHAINDB_DATABASE_REPLICASET', 'bigchain-rs'),
|
2017-03-28 14:51:02 +02:00
|
|
|
'login': os.environ.get('BIGCHAINDB_DATABASE_LOGIN'),
|
|
|
|
'password': os.environ.get('BIGCHAINDB_DATABASE_PASSWORD')
|
|
|
|
}
|
|
|
|
|
|
|
|
_database_rethinkdb = {
|
|
|
|
'backend': os.environ.get('BIGCHAINDB_DATABASE_BACKEND', 'rethinkdb'),
|
2017-02-23 17:20:21 +01:00
|
|
|
'connection_timeout': 5000,
|
|
|
|
'max_tries': 3,
|
2017-01-23 16:49:59 +01:00
|
|
|
}
|
2017-03-28 14:51:02 +02:00
|
|
|
_database_rethinkdb.update(_base_database_rethinkdb)
|
|
|
|
|
|
|
|
_database_mongodb = {
|
|
|
|
'backend': os.environ.get('BIGCHAINDB_DATABASE_BACKEND', 'mongodb'),
|
|
|
|
'connection_timeout': 5000,
|
|
|
|
'max_tries': 3,
|
2017-06-13 12:04:34 +02:00
|
|
|
'ssl': bool(os.environ.get('BIGCHAINDB_DATABASE_SSL', False)),
|
|
|
|
'ca_cert': os.environ.get('BIGCHAINDB_DATABASE_CA_CERT'),
|
|
|
|
'certfile': os.environ.get('BIGCHAINDB_DATABASE_CERTFILE'),
|
|
|
|
'keyfile': os.environ.get('BIGCHAINDB_DATABASE_KEYFILE'),
|
|
|
|
'keyfile_passphrase': os.environ.get('BIGCHAINDB_DATABASE_KEYFILE_PASSPHRASE'),
|
|
|
|
'crlfile': os.environ.get('BIGCHAINDB_DATABASE_CRLFILE')
|
2017-03-28 14:51:02 +02:00
|
|
|
}
|
|
|
|
_database_mongodb.update(_base_database_mongodb)
|
|
|
|
|
2017-11-10 17:53:57 +01:00
|
|
|
_database_localmongodb = {
|
|
|
|
'backend': os.environ.get('BIGCHAINDB_DATABASE_BACKEND', 'localmongodb'),
|
|
|
|
'connection_timeout': 5000,
|
|
|
|
'max_tries': 3,
|
|
|
|
'ssl': bool(os.environ.get('BIGCHAINDB_DATABASE_SSL', False)),
|
|
|
|
'ca_cert': os.environ.get('BIGCHAINDB_DATABASE_CA_CERT'),
|
|
|
|
'certfile': os.environ.get('BIGCHAINDB_DATABASE_CERTFILE'),
|
|
|
|
'keyfile': os.environ.get('BIGCHAINDB_DATABASE_KEYFILE'),
|
|
|
|
'keyfile_passphrase': os.environ.get('BIGCHAINDB_DATABASE_KEYFILE_PASSPHRASE'),
|
|
|
|
'crlfile': os.environ.get('BIGCHAINDB_DATABASE_CRLFILE')
|
|
|
|
}
|
|
|
|
_database_localmongodb.update(_base_database_localmongodb)
|
|
|
|
|
2017-01-31 10:34:45 +01:00
|
|
|
_database_map = {
|
2017-11-10 17:53:57 +01:00
|
|
|
'localmongodb': _database_localmongodb,
|
2017-01-31 10:34:45 +01:00
|
|
|
'mongodb': _database_mongodb,
|
|
|
|
'rethinkdb': _database_rethinkdb
|
|
|
|
}
|
|
|
|
|
2016-02-10 19:55:33 +01:00
|
|
|
config = {
|
2016-03-22 18:42:50 +01:00
|
|
|
'server': {
|
2016-04-07 14:15:29 +02:00
|
|
|
# Note: this section supports all the Gunicorn settings:
|
|
|
|
# - http://docs.gunicorn.org/en/stable/settings.html
|
2016-10-05 11:25:45 +02:00
|
|
|
'bind': os.environ.get('BIGCHAINDB_SERVER_BIND') or 'localhost:9984',
|
2017-04-18 14:57:11 +02:00
|
|
|
'loglevel': logging.getLevelName(
|
|
|
|
log_config['handlers']['console']['level']).lower(),
|
2016-10-18 17:38:44 +02:00
|
|
|
'workers': None, # if none, the value will be cpu_count * 2 + 1
|
2016-03-22 18:42:50 +01:00
|
|
|
},
|
2017-04-07 10:51:00 +02:00
|
|
|
'wsserver': {
|
2017-06-14 13:49:47 +02:00
|
|
|
'scheme': os.environ.get('BIGCHAINDB_WSSERVER_SCHEME') or 'ws',
|
2017-04-07 10:51:00 +02:00
|
|
|
'host': os.environ.get('BIGCHAINDB_WSSERVER_HOST') or 'localhost',
|
|
|
|
'port': int(os.environ.get('BIGCHAINDB_WSSERVER_PORT', 9985)),
|
2017-08-08 12:04:58 +02:00
|
|
|
'advertised_scheme': os.environ.get('BIGCHAINDB_WSSERVER_ADVERTISED_SCHEME') or 'ws',
|
|
|
|
'advertised_host': os.environ.get('BIGCHAINDB_WSSERVER_ADVERTISED_HOST') or 'localhost',
|
|
|
|
'advertised_port': int(os.environ.get('BIGCHAINDB_WSSERVER_ADVERTISED_PORT', 9985)),
|
2017-04-07 10:51:00 +02:00
|
|
|
},
|
2017-01-31 10:34:45 +01:00
|
|
|
'database': _database_map[
|
|
|
|
os.environ.get('BIGCHAINDB_DATABASE_BACKEND', 'rethinkdb')
|
|
|
|
],
|
2016-02-10 19:55:33 +01:00
|
|
|
'keypair': {
|
2016-03-24 01:41:00 +01:00
|
|
|
'public': None,
|
|
|
|
'private': None,
|
2016-02-10 19:55:33 +01:00
|
|
|
},
|
2016-03-24 01:41:00 +01:00
|
|
|
'keyring': [],
|
2017-03-13 17:55:11 +01:00
|
|
|
'backlog_reassign_delay': 120,
|
|
|
|
'log': {
|
2017-04-18 14:51:12 +02:00
|
|
|
'file': log_config['handlers']['file']['filename'],
|
|
|
|
'error_file': log_config['handlers']['errors']['filename'],
|
|
|
|
'level_console': logging.getLevelName(
|
2017-04-18 15:58:14 +02:00
|
|
|
log_config['handlers']['console']['level']).lower(),
|
2017-04-18 14:51:12 +02:00
|
|
|
'level_logfile': logging.getLevelName(
|
2017-04-18 15:58:14 +02:00
|
|
|
log_config['handlers']['file']['level']).lower(),
|
2017-04-18 14:51:12 +02:00
|
|
|
'datefmt_console': log_config['formatters']['console']['datefmt'],
|
|
|
|
'datefmt_logfile': log_config['formatters']['file']['datefmt'],
|
|
|
|
'fmt_console': log_config['formatters']['console']['format'],
|
|
|
|
'fmt_logfile': log_config['formatters']['file']['format'],
|
2017-04-18 14:57:11 +02:00
|
|
|
'granular_levels': {},
|
2017-10-23 05:47:58 +02:00
|
|
|
'port': log_config['root']['port']
|
2017-03-13 17:55:11 +01:00
|
|
|
},
|
2016-02-10 19:55:33 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
# We need to maintain a backup copy of the original config dict in case
|
|
|
|
# the user wants to reconfigure the node. Check ``bigchaindb.config_utils``
|
|
|
|
# for more info.
|
|
|
|
_config = copy.deepcopy(config)
|
2016-02-22 10:17:16 +01:00
|
|
|
from bigchaindb.core import Bigchain # noqa
|
2016-04-21 14:40:51 +02:00
|
|
|
from bigchaindb.version import __version__ # noqa
|