def connect(backend=None, host=None, port=None, name=None, max_tries=None,
            connection_timeout=None, replicaset=None, ssl=None, login=None, password=None,
            ca_cert=None, certfile=None, keyfile=None, keyfile_passphrase=None,
            crlfile=None):
    """Create a new connection to the database backend.

    All arguments default to the current configuration's values if not
    given.

    Args:
        backend (str): the name of the backend to use.
        host (str): the host to connect to.
        port (int): the port to connect to.
        name (str): the name of the database to use.
        replicaset (str): the name of the replica set (only relevant for
                          MongoDB connections).

    Returns:
        An instance of :class:`~bigchaindb.backend.connection.Connection`
        based on the given (or defaulted) :attr:`backend`.

    Raises:
        :exc:`~ConnectionError`: If the connection to the database fails.
        :exc:`~ConfigurationError`: If the given (or defaulted) :attr:`backend`
            is not supported or could not be loaded.
        :exc:`~AuthenticationError`: If there is a OperationFailure due to
            Authentication failure after connecting to the database.
    """

    backend = backend or bigchaindb.config['database']['backend']
    host = host or bigchaindb.config['database']['host']
    port = port or bigchaindb.config['database']['port']
    dbname = name or bigchaindb.config['database']['name']
    # Not sure how to handle this here. This setting is only relevant for
    # mongodb.
    # I added **kwargs for both RethinkDBConnection and MongoDBConnection
    # to handle these these additional args. In case of RethinkDBConnection
    # it just does not do anything with it.
    #
    # UPD: RethinkDBConnection is not here anymore cause we no longer support RethinkDB.
    # The problem described above might be reconsidered next time we introduce a backend,
    # if it ever happens.
    replicaset = replicaset or bigchaindb.config['database'].get('replicaset')
    ssl = ssl if ssl is not None else bigchaindb.config['database'].get('ssl', False)
    login = login or bigchaindb.config['database'].get('login')
    password = password or bigchaindb.config['database'].get('password')
    ca_cert = ca_cert or bigchaindb.config['database'].get('ca_cert', None)
    certfile = certfile or bigchaindb.config['database'].get('certfile', None)
    keyfile = keyfile or bigchaindb.config['database'].get('keyfile', None)
    keyfile_passphrase = keyfile_passphrase or bigchaindb.config['database'].get('keyfile_passphrase', None)
    crlfile = crlfile or bigchaindb.config['database'].get('crlfile', None)

    try:
        module_name, _, class_name = BACKENDS[backend].rpartition('.')
        Class = getattr(import_module(module_name), class_name)
    except KeyError:
        raise ConfigurationError('Backend `{}` is not supported. '
                                 'BigchainDB currently supports {}'.format(backend, BACKENDS.keys()))
    except (ImportError, AttributeError) as exc:
        raise ConfigurationError('Error loading backend `{}`'.format(backend)) from exc

    logger.debug('Connection: {}'.format(Class))
    return Class(host=host, port=port, dbname=dbname,
                 max_tries=max_tries, connection_timeout=connection_timeout,
                 replicaset=replicaset, ssl=ssl, login=login, password=password,
                 ca_cert=ca_cert, certfile=certfile, keyfile=keyfile,
                 keyfile_passphrase=keyfile_passphrase, crlfile=crlfile)
def connect ( backend = None , host = None , port = None , name = None , max_tries = None , connection_timeout = None , replicaset = None , ssl = None , login = None , password = None , ca_cert = None , certfile = None , keyfile = None , keyfile_passphrase = None , crlfile = None ) : backend = backend or bigchaindb . config [ 'database' ] [ 'backend' ] host = host or bigchaindb . config [ 'database' ] [ 'host' ] port = port or bigchaindb . config [ 'database' ] [ 'port' ] dbname = name or bigchaindb . config [ 'database' ] [ 'name' ] replicaset = replicaset or bigchaindb . config [ 'database' ] . get ( 'replicaset' ) ssl = ssl if ssl is not None else bigchaindb . config [ 'database' ] . get ( 'ssl' , False ) login = login or bigchaindb . config [ 'database' ] . get ( 'login' ) password = password or bigchaindb . config [ 'database' ] . get ( 'password' ) ca_cert = ca_cert or bigchaindb . config [ 'database' ] . get ( 'ca_cert' , None ) certfile = certfile or bigchaindb . config [ 'database' ] . get ( 'certfile' , None ) keyfile = keyfile or bigchaindb . config [ 'database' ] . get ( 'keyfile' , None ) keyfile_passphrase = keyfile_passphrase or bigchaindb . config [ 'database' ] . get ( 'keyfile_passphrase' , None ) crlfile = crlfile or bigchaindb . config [ 'database' ] . get ( 'crlfile' , None ) try : module_name , _ , class_name = BACKENDS [ backend ] . rpartition ( '.' ) Class = getattr ( import_module ( module_name ) , class_name ) except KeyError : raise ConfigurationError ( 'Backend `{}` is not supported. ' 'BigchainDB currently supports {}' . format ( backend , BACKENDS . keys ( ) ) ) except ( ImportError , AttributeError ) as exc : raise ConfigurationError ( 'Error loading backend `{}`' . format ( backend ) ) from exc logger . debug ( 'Connection: {}' . format ( Class ) ) return Class ( host = host , port = port , dbname = dbname , max_tries = max_tries , connection_timeout = connection_timeout , replicaset = replicaset , ssl = ssl , login = login , password = password , ca_cert = ca_cert , certfile = certfile , keyfile = keyfile , keyfile_passphrase = keyfile_passphrase , crlfile = crlfile )
Create a new connection to the database backend.

    All arguments default to the current configuration's values if not
    given.

    Args:
        backend (str): the name of the backend to use.
        host (str): the host to connect to.
        port (int): the port to connect to.
        name (str): the name of the database to use.
        replicaset (str): the name of the replica set (only relevant for
                          MongoDB connections).

    Returns:
        An instance of :class:`~bigchaindb.backend.connection.Connection`
        based on the given (or defaulted) :attr:`backend`.

    Raises:
        :exc:`~ConnectionError`: If the connection to the database fails.
        :exc:`~ConfigurationError`: If the given (or defaulted) :attr:`backend`
            is not supported or could not be loaded.
        :exc:`~AuthenticationError`: If there is a OperationFailure due to
            Authentication failure after connecting to the database.