From 7892486ba5c9ffcd0f51167df995af84f9b2c3d9 Mon Sep 17 00:00:00 2001 From: Stanislav Laznicka Date: Jul 16 2018 18:57:50 +0000 Subject: Issue 49844 - lib389: don't set up logging at module scope Bug description: lib389 was calling `logging.basicConfig()` at several places at module scope level. This was causing imports from these modules to add an unwanted handler to the root logger of the python's standard logging module. Fix description: Set up logging only in the scripts that are using lib389. ALso, remove unused imports in __init__.py https://pagure.io/389-ds-base/issue/49844 Reviewed by: spichugi, mreynolds (Thanks!) Signed-off-by: Simon Pichugin --- diff --git a/dirsrvtests/conftest.py b/dirsrvtests/conftest.py index 8442e5e..6dcf405 100644 --- a/dirsrvtests/conftest.py +++ b/dirsrvtests/conftest.py @@ -1,5 +1,6 @@ -import pytest import subprocess +import logging +import pytest pkgs = ['389-ds-base', 'nss', 'nspr', 'openldap', 'cyrus-sasl'] @@ -28,6 +29,10 @@ def _environment(request): request.config._metadata['FIPS'] = is_fips() +def pytest_cmdline_main(config): + logging.basicConfig(level=logging.DEBUG) + + def pytest_report_header(config): header = "" for pkg in pkgs: diff --git a/src/lib389/cli/dsconf b/src/lib389/cli/dsconf index eb06fe0..5b56b7a 100755 --- a/src/lib389/cli/dsconf +++ b/src/lib389/cli/dsconf @@ -38,7 +38,7 @@ from lib389.cli_base import disconnect_instance, connect_instance from lib389.cli_base.dsrc import dsrc_to_ldap, dsrc_arg_concat -from lib389.cli_base import reset_get_logger +from lib389.cli_base import setup_script_logger parser = argparse.ArgumentParser(allow_abbrev=True) parser.add_argument('instance', @@ -93,7 +93,7 @@ if __name__ == '__main__': defbase = ldap.get_option(ldap.OPT_DEFBASE) args = parser.parse_args() - log = reset_get_logger('dsconf', args.verbose) + log = setup_script_logger('dsconf', args.verbose) log.debug("The 389 Directory Server Configuration Tool") # Leave this comment here: UofA let me take this code with me provided diff --git a/src/lib389/cli/dscreate b/src/lib389/cli/dscreate index aa0d2b3..17708d0 100755 --- a/src/lib389/cli/dscreate +++ b/src/lib389/cli/dscreate @@ -17,7 +17,7 @@ import signal from lib389 import DirSrv from lib389.cli_ctl import instance as cli_instance -from lib389.cli_base import reset_get_logger +from lib389.cli_base import setup_script_logger parser = argparse.ArgumentParser() parser.add_argument('-v', '--verbose', @@ -49,7 +49,7 @@ signal.signal(signal.SIGINT, signal_handler) if __name__ == '__main__': args = parser.parse_args() - log = reset_get_logger("dscreate", args.verbose) + log = setup_script_logger("dscreate", args.verbose) log.debug("The 389 Directory Server Creation Tool") # Leave this comment here: UofA let me take this code with me provided diff --git a/src/lib389/cli/dsctl b/src/lib389/cli/dsctl index 1149da8..f5e8943 100755 --- a/src/lib389/cli/dsctl +++ b/src/lib389/cli/dsctl @@ -22,7 +22,7 @@ from lib389.cli_base import _get_arg from lib389 import DirSrv from lib389.cli_ctl import instance as cli_instance from lib389.cli_ctl import dbtasks as cli_dbtasks -from lib389.cli_base import disconnect_instance, reset_get_logger +from lib389.cli_base import disconnect_instance, setup_script_logger parser = argparse.ArgumentParser() parser.add_argument('-v', '--verbose', @@ -54,7 +54,7 @@ signal.signal(signal.SIGINT, signal_handler) if __name__ == '__main__': args = parser.parse_args() - log = reset_get_logger('dsctl', args.verbose) + log = setup_script_logger('dsctl', args.verbose) log.debug("The 389 Directory Server Administration Tool") # Leave this comment here: UofA let me take this code with me provided diff --git a/src/lib389/cli/dsidm b/src/lib389/cli/dsidm index ee23e83..a856a76 100755 --- a/src/lib389/cli/dsidm +++ b/src/lib389/cli/dsidm @@ -27,7 +27,7 @@ from lib389.cli_idm import group as cli_group from lib389.cli_idm import posixgroup as cli_posixgroup from lib389.cli_idm import user as cli_user -from lib389.cli_base import connect_instance, disconnect_instance, reset_get_logger +from lib389.cli_base import connect_instance, disconnect_instance, setup_script_logger from lib389.cli_base.dsrc import dsrc_to_ldap, dsrc_arg_concat @@ -78,12 +78,9 @@ signal.signal(signal.SIGINT, signal_handler) if __name__ == '__main__': defbase = ldap.get_option(ldap.OPT_DEFBASE) - - - args = parser.parse_args() - log = reset_get_logger('dsidm', args.verbose) + log = setup_script_logger('dsidm', args.verbose) log.debug("The 389 Directory Server Identity Manager") # Leave this comment here: UofA let me take this code with me provided diff --git a/src/lib389/lib389/__init__.py b/src/lib389/lib389/__init__.py index 5ed9ed5..78dae7f 100644 --- a/src/lib389/lib389/__init__.py +++ b/src/lib389/lib389/__init__.py @@ -55,15 +55,8 @@ import grp import uuid import json from shutil import copy2 -try: - # There are too many issues with this on EL7 - # Out of the box, it's just outright broken ... - import six.moves.urllib.request - import six.moves.urllib.parse - import six.moves.urllib.error - import six -except ImportError: - pass +import six + from ldap.ldapobject import SimpleLDAPObject from ldap.cidict import cidict from ldap import LDAPError diff --git a/src/lib389/lib389/_entry.py b/src/lib389/lib389/_entry.py index 8a9e36b..fb72fca 100644 --- a/src/lib389/lib389/_entry.py +++ b/src/lib389/lib389/_entry.py @@ -21,10 +21,8 @@ from lib389.utils import ensure_str, ensure_bytes, ensure_list_bytes MAJOR, MINOR, _, _, _ = sys.version_info -logging.basicConfig(level=logging.DEBUG) log = logging.getLogger(__name__) - class FormatDict(cidict): def __getitem__(self, name): if name in self: diff --git a/src/lib389/lib389/cli_base/__init__.py b/src/lib389/lib389/cli_base/__init__.py index d2222d3..06224a0 100644 --- a/src/lib389/lib389/cli_base/__init__.py +++ b/src/lib389/lib389/cli_base/__init__.py @@ -289,18 +289,8 @@ class FakeArgs(object): def __len__(self): return len(self.__dict__.keys()) -log_simple_handler = logging.StreamHandler() -log_simple_handler.setFormatter( - logging.Formatter('%(message)s') -) -log_verbose_handler = logging.StreamHandler() -log_verbose_handler.setFormatter( - logging.Formatter('%(levelname)s: %(message)s') -) - - -def reset_get_logger(name, verbose=False): +def setup_script_logger(name, verbose=False): """Reset the python logging system for STDOUT, and attach a new console logger with cli expected formatting. @@ -311,21 +301,18 @@ def reset_get_logger(name, verbose=False): :return: logging.logger """ root = logging.getLogger() - if root.handlers: - for handler in root.handlers: - root.removeHandler(handler) - - if verbose: - root.addHandler(log_verbose_handler) - else: - root.addHandler(log_simple_handler) - log = logging.getLogger(name) + log_handler = logging.StreamHandler() if verbose: log.setLevel(logging.DEBUG) + log_format = '%(levelname)s: %(message)s' else: log.setLevel(logging.INFO) + log_format = '%(message)s' + + log_handler.setFormatter(logging.Formatter(log_format)) + root.addHandler(log_handler) return log diff --git a/src/lib389/lib389/replica.py b/src/lib389/lib389/replica.py index bf09c3d..cde3109 100644 --- a/src/lib389/lib389/replica.py +++ b/src/lib389/lib389/replica.py @@ -502,7 +502,8 @@ class ReplicaLegacy(object): # # First role and replicaID - if (role != ReplicaRole.MASTER and + if ( + role != ReplicaRole.MASTER and role != ReplicaRole.HUB and role != ReplicaRole.CONSUMER ): diff --git a/src/lib389/lib389/tests/config.py b/src/lib389/lib389/tests/config.py index 3b9a472..860fcb4 100644 --- a/src/lib389/lib389/tests/config.py +++ b/src/lib389/lib389/tests/config.py @@ -1,7 +1,7 @@ import logging import six + logging.basicConfig(level=logging.DEBUG) -log = logging.getLogger(__name__) DN_RMANAGER = 'uid=rmanager,cn=config' diff --git a/src/lib389/lib389/tools.py b/src/lib389/lib389/tools.py index f0f4b1c..cabdb0f 100644 --- a/src/lib389/lib389/tools.py +++ b/src/lib389/lib389/tools.py @@ -85,7 +85,6 @@ except ImportError: _ds_paths = Paths() -logging.basicConfig(level=logging.DEBUG) log = logging.getLogger(__name__) # Private constants diff --git a/src/lib389/lib389/utils.py b/src/lib389/lib389/utils.py index 94fa93d..1fb2ee6 100644 --- a/src/lib389/lib389/utils.py +++ b/src/lib389/lib389/utils.py @@ -53,7 +53,6 @@ from lib389.properties import ( MAJOR, MINOR, _, _, _ = sys.version_info -logging.basicConfig(level=logging.DEBUG) log = logging.getLogger(__name__) # # Decorator