Since v2.5, PyMongo has supported a "source" option, to specify a particular database to authenticate against. This adds support for that option, in the form of a "authentication_source" option to register_connection.
This commit is contained in:
parent
d4b3649640
commit
8bcbc6d545
@ -20,7 +20,8 @@ _dbs = {}
|
|||||||
|
|
||||||
def register_connection(alias, name, host=None, port=None,
|
def register_connection(alias, name, host=None, port=None,
|
||||||
is_slave=False, read_preference=False, slaves=None,
|
is_slave=False, read_preference=False, slaves=None,
|
||||||
username=None, password=None, **kwargs):
|
username=None, password=None, authentication_source=None,
|
||||||
|
**kwargs):
|
||||||
"""Add a connection.
|
"""Add a connection.
|
||||||
|
|
||||||
:param alias: the name that will be used to refer to this connection
|
:param alias: the name that will be used to refer to this connection
|
||||||
@ -36,6 +37,7 @@ def register_connection(alias, name, host=None, port=None,
|
|||||||
be a registered connection that has :attr:`is_slave` set to ``True``
|
be a registered connection that has :attr:`is_slave` set to ``True``
|
||||||
:param username: username to authenticate with
|
:param username: username to authenticate with
|
||||||
:param password: password to authenticate with
|
:param password: password to authenticate with
|
||||||
|
:param authentication_source: database to authenticate against
|
||||||
:param kwargs: allow ad-hoc parameters to be passed into the pymongo driver
|
:param kwargs: allow ad-hoc parameters to be passed into the pymongo driver
|
||||||
|
|
||||||
"""
|
"""
|
||||||
@ -46,10 +48,11 @@ def register_connection(alias, name, host=None, port=None,
|
|||||||
'host': host or 'localhost',
|
'host': host or 'localhost',
|
||||||
'port': port or 27017,
|
'port': port or 27017,
|
||||||
'is_slave': is_slave,
|
'is_slave': is_slave,
|
||||||
|
'read_preference': read_preference,
|
||||||
'slaves': slaves or [],
|
'slaves': slaves or [],
|
||||||
'username': username,
|
'username': username,
|
||||||
'password': password,
|
'password': password,
|
||||||
'read_preference': read_preference
|
'authentication_source': authentication_source
|
||||||
}
|
}
|
||||||
|
|
||||||
# Handle uri style connections
|
# Handle uri style connections
|
||||||
@ -99,6 +102,7 @@ def get_connection(alias=DEFAULT_CONNECTION_NAME, reconnect=False):
|
|||||||
conn_settings.pop('is_slave', None)
|
conn_settings.pop('is_slave', None)
|
||||||
conn_settings.pop('username', None)
|
conn_settings.pop('username', None)
|
||||||
conn_settings.pop('password', None)
|
conn_settings.pop('password', None)
|
||||||
|
conn_settings.pop('authentication_source', None)
|
||||||
else:
|
else:
|
||||||
# Get all the slave connections
|
# Get all the slave connections
|
||||||
if 'slaves' in conn_settings:
|
if 'slaves' in conn_settings:
|
||||||
@ -137,7 +141,8 @@ def get_db(alias=DEFAULT_CONNECTION_NAME, reconnect=False):
|
|||||||
# Authenticate if necessary
|
# Authenticate if necessary
|
||||||
if conn_settings['username'] and conn_settings['password']:
|
if conn_settings['username'] and conn_settings['password']:
|
||||||
db.authenticate(conn_settings['username'],
|
db.authenticate(conn_settings['username'],
|
||||||
conn_settings['password'])
|
conn_settings['password'],
|
||||||
|
source=conn_settings['authentication_source'])
|
||||||
_dbs[alias] = db
|
_dbs[alias] = db
|
||||||
return _dbs[alias]
|
return _dbs[alias]
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user