Improve a few random docstrings (H405)
This is primarily in support of H405, but I took the opportunity to clean up a few spelling and grammar issues along the way. Change-Id: If3e81caca46a2c3d1b76af58d67ba9f9a9172aff Partial-Bug: 1482773
This commit is contained in:
parent
304c21fe4e
commit
bf1e9e3995
|
@ -312,9 +312,7 @@ class ProjectApi(common_ldap.ProjectLdapStructureMixin,
|
|||
or self.DEFAULT_MEMBER_ATTRIBUTE)
|
||||
|
||||
def get_user_projects(self, user_dn, associations):
|
||||
"""Returns list of tenants a user has access to
|
||||
"""
|
||||
|
||||
"""Returns the list of tenants to which a user has access."""
|
||||
project_ids = set()
|
||||
for assoc in associations:
|
||||
project_ids.add(self._dn_to_id(assoc.project_dn))
|
||||
|
@ -496,9 +494,7 @@ class RoleApi(ldap_role.RoleLdapStructureMixin, common_ldap.BaseLdap):
|
|||
self.id_attr: role_id})
|
||||
|
||||
def list_role_assignments(self, project_tree_dn):
|
||||
"""Returns a list of all the role assignments linked to project_tree_dn
|
||||
attribute.
|
||||
"""
|
||||
"""List the role assignments linked to project_tree_dn attribute."""
|
||||
try:
|
||||
roles = self._ldap_get_list(project_tree_dn, ldap.SCOPE_SUBTREE,
|
||||
attrlist=[self.member_attribute])
|
||||
|
|
|
@ -483,13 +483,13 @@ class LDAPHandler(object):
|
|||
|
||||
|
||||
class PythonLDAPHandler(LDAPHandler):
|
||||
'''Implementation of the LDAPHandler interface which calls the
|
||||
python-ldap API.
|
||||
"""LDAPHandler implementation which calls the python-ldap API.
|
||||
|
||||
Note, the python-ldap API requires all string values to be UTF-8
|
||||
encoded. The KeystoneLDAPHandler enforces this prior to invoking
|
||||
the methods in this class.
|
||||
'''
|
||||
Note, the python-ldap API requires all string values to be UTF-8 encoded.
|
||||
The KeystoneLDAPHandler enforces this prior to invoking the methods in this
|
||||
class.
|
||||
|
||||
"""
|
||||
|
||||
def __init__(self, conn=None):
|
||||
super(PythonLDAPHandler, self).__init__(conn=conn)
|
||||
|
@ -571,10 +571,7 @@ class PythonLDAPHandler(LDAPHandler):
|
|||
def _common_ldap_initialization(url, use_tls=False, tls_cacertfile=None,
|
||||
tls_cacertdir=None, tls_req_cert=None,
|
||||
debug_level=None):
|
||||
'''Method for common ldap initialization between PythonLDAPHandler and
|
||||
PooledLDAPHandler.
|
||||
'''
|
||||
|
||||
"""LDAP initialization for PythonLDAPHandler and PooledLDAPHandler."""
|
||||
LOG.debug("LDAP init: url=%s", url)
|
||||
LOG.debug('LDAP init: use_tls=%s tls_cacertfile=%s tls_cacertdir=%s '
|
||||
'tls_req_cert=%s tls_avail=%s',
|
||||
|
@ -644,8 +641,7 @@ def use_conn_pool(func):
|
|||
|
||||
|
||||
class PooledLDAPHandler(LDAPHandler):
|
||||
'''Implementation of the LDAPHandler interface which uses pooled
|
||||
connection manager.
|
||||
"""LDAPHandler implementation which uses pooled connection manager.
|
||||
|
||||
Pool specific configuration is defined in [ldap] section.
|
||||
All other LDAP configuration is still used from [ldap] section
|
||||
|
@ -665,8 +661,8 @@ class PooledLDAPHandler(LDAPHandler):
|
|||
Note, the python-ldap API requires all string values to be UTF-8
|
||||
encoded. The KeystoneLDAPHandler enforces this prior to invoking
|
||||
the methods in this class.
|
||||
'''
|
||||
|
||||
"""
|
||||
# Added here to allow override for testing
|
||||
Connector = ldappool.StateConnector
|
||||
auth_pool_prefix = 'auth_pool_'
|
||||
|
@ -747,9 +743,8 @@ class PooledLDAPHandler(LDAPHandler):
|
|||
|
||||
def simple_bind_s(self, who='', cred='',
|
||||
serverctrls=None, clientctrls=None):
|
||||
'''Not using use_conn_pool decorator here as this API takes cred as
|
||||
input.
|
||||
'''
|
||||
# Not using use_conn_pool decorator here as this API takes cred as
|
||||
# input.
|
||||
self.who = who
|
||||
self.cred = cred
|
||||
with self._get_pool_connection() as conn:
|
||||
|
@ -775,16 +770,17 @@ class PooledLDAPHandler(LDAPHandler):
|
|||
filterstr='(objectClass=*)', attrlist=None, attrsonly=0,
|
||||
serverctrls=None, clientctrls=None,
|
||||
timeout=-1, sizelimit=0):
|
||||
'''This API is asynchoronus API which returns MsgId instance to be used
|
||||
in result3 call.
|
||||
"""Asynchronous API to return a ``MsgId`` instance.
|
||||
|
||||
To work with result3 API in predicatable manner, same LDAP connection
|
||||
is needed which provided msgid. So wrapping used connection and msgid
|
||||
in MsgId class. The connection associated with search_ext is released
|
||||
once last hard reference to MsgId object is freed. This will happen
|
||||
when the method is done with returned MsgId usage.
|
||||
'''
|
||||
The ``MsgId`` instance can be safely used in a call to ``result3()``.
|
||||
|
||||
To work with ``result3()`` API in predictable manner, the same LDAP
|
||||
connection is needed which originally provided the ``msgid``. So, this
|
||||
method wraps the existing connection and ``msgid`` in a new ``MsgId``
|
||||
instance. The connection associated with ``search_ext`` is released
|
||||
once last hard reference to the ``MsgId`` instance is freed.
|
||||
|
||||
"""
|
||||
conn_ctxt = self._get_pool_connection()
|
||||
conn = conn_ctxt.__enter__()
|
||||
try:
|
||||
|
|
|
@ -146,8 +146,9 @@ def remove_generated_paste_config(extension_name):
|
|||
|
||||
|
||||
def skip_if_cache_disabled(*sections):
|
||||
"""This decorator is used to skip a test if caching is disabled either
|
||||
globally or for the specific section.
|
||||
"""This decorator is used to skip a test if caching is disabled.
|
||||
|
||||
Caching can be disabled either globally or for a specific section.
|
||||
|
||||
In the code fragment::
|
||||
|
||||
|
@ -164,6 +165,7 @@ def skip_if_cache_disabled(*sections):
|
|||
If a specified configuration section does not define the `caching` option,
|
||||
this decorator makes the same assumption as the `should_cache_fn` in
|
||||
keystone.common.cache that caching should be enabled.
|
||||
|
||||
"""
|
||||
def wrapper(f):
|
||||
@functools.wraps(f)
|
||||
|
@ -181,9 +183,7 @@ def skip_if_cache_disabled(*sections):
|
|||
|
||||
|
||||
def skip_if_no_multiple_domains_support(f):
|
||||
"""This decorator is used to skip a test if an identity driver
|
||||
does not support multiple domains.
|
||||
"""
|
||||
"""Decorator to skip tests for identity drivers limited to one domain."""
|
||||
@functools.wraps(f)
|
||||
def wrapper(*args, **kwargs):
|
||||
test_obj = args[0]
|
||||
|
@ -527,8 +527,7 @@ class TestCase(BaseTestCase):
|
|||
|
||||
def assertRaisesRegexp(self, expected_exception, expected_regexp,
|
||||
callable_obj, *args, **kwargs):
|
||||
"""Asserts that the message in a raised exception matches a regexp.
|
||||
"""
|
||||
"""Asserts that the message in a raised exception matches a regexp."""
|
||||
try:
|
||||
callable_obj(*args, **kwargs)
|
||||
except expected_exception as exc_value:
|
||||
|
|
|
@ -548,11 +548,11 @@ class FakeLdap(core.LDAPHandler):
|
|||
|
||||
|
||||
class FakeLdapPool(FakeLdap):
|
||||
'''Emulate the python-ldap API with pooled connections using existing
|
||||
FakeLdap logic.
|
||||
"""Emulate the python-ldap API with pooled connections.
|
||||
|
||||
This class is used as connector class in PooledLDAPHandler.
|
||||
'''
|
||||
|
||||
"""
|
||||
|
||||
def __init__(self, uri, retry_max=None, retry_delay=None, conn=None):
|
||||
super(FakeLdapPool, self).__init__(conn=conn)
|
||||
|
|
|
@ -210,9 +210,7 @@ class LdapPoolCommonTestMixin(object):
|
|||
class LdapIdentitySqlAssignment(LdapPoolCommonTestMixin,
|
||||
test_backend_ldap.LdapIdentitySqlAssignment,
|
||||
tests.TestCase):
|
||||
'''Executes existing base class 150+ tests with pooled LDAP handler to make
|
||||
sure it works without any error.
|
||||
'''
|
||||
"""Executes tests in existing base class with pooled LDAP handler."""
|
||||
def setUp(self):
|
||||
self.useFixture(mockpatch.PatchObject(
|
||||
ldap_core.PooledLDAPHandler, 'Connector', fakeldap.FakeLdapPool))
|
||||
|
|
|
@ -47,10 +47,12 @@ def _copy_value(value):
|
|||
# backend unless you are running tests or expecting odd/strange results.
|
||||
class CacheIsolatingProxy(proxy.ProxyBackend):
|
||||
"""Proxy that forces a memory copy of stored values.
|
||||
The default in-memory cache-region does not perform a copy on values it
|
||||
is meant to cache. Therefore if the value is modified after set or after
|
||||
get, the cached value also is modified. This proxy does a copy as the last
|
||||
|
||||
The default in-memory cache-region does not perform a copy on values it is
|
||||
meant to cache. Therefore if the value is modified after set or after get,
|
||||
the cached value also is modified. This proxy does a copy as the last
|
||||
thing before storing data.
|
||||
|
||||
"""
|
||||
def get(self, key):
|
||||
return _copy_value(self.proxied.get(key))
|
||||
|
|
|
@ -127,7 +127,7 @@ class V2CatalogTestCase(rest.RestfulTestCase):
|
|||
self._endpoint_create(expected_status=400, service_id='')
|
||||
|
||||
def test_endpoint_create_with_valid_url(self):
|
||||
"""Create endpoint with valid url should be tested,too."""
|
||||
"""Create endpoint with valid URL should be tested, too."""
|
||||
# list one valid url is enough, no need to list too much
|
||||
valid_url = 'http://127.0.0.1:8774/v1.1/$(tenant_id)s'
|
||||
|
||||
|
@ -138,8 +138,7 @@ class V2CatalogTestCase(rest.RestfulTestCase):
|
|||
adminurl=valid_url)
|
||||
|
||||
def test_endpoint_create_with_invalid_url(self):
|
||||
"""Test the invalid cases: substitutions is not exactly right.
|
||||
"""
|
||||
"""Test the invalid cases: substitutions is not exactly right."""
|
||||
invalid_urls = [
|
||||
# using a substitution that is not whitelisted - KeyError
|
||||
'http://127.0.0.1:8774/v1.1/$(nonexistent)s',
|
||||
|
|
|
@ -30,10 +30,10 @@ CONF = cfg.CONF
|
|||
|
||||
class LiveLDAPPoolIdentity(test_backend_ldap_pool.LdapPoolCommonTestMixin,
|
||||
test_ldap_livetest.LiveLDAPIdentity):
|
||||
"""Executes existing LDAP live test with pooled LDAP handler to make
|
||||
sure it works without any error.
|
||||
"""Executes existing LDAP live test with pooled LDAP handler.
|
||||
|
||||
Also executes common pool specific tests via Mixin class.
|
||||
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
|
|
Loading…
Reference in New Issue