From b18793c6723909cb048869f6891ba34f705af7a2 Mon Sep 17 00:00:00 2001 From: poojajadhav Date: Thu, 9 Feb 2017 18:59:29 +0530 Subject: [PATCH] Return user-friendly error message when monkey_patch enabled MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If user has enabled “monkey_patch” config option and kept the default “monkey_patch_modules” config option as is, then service gives ValueError at the time of starting itself. The default value given to the “monkey_patch_modules” config option is not according to the format expected which results into ValueError at service starting. This patch fixes this issue by making monkey_patch_modules's correct default value and if user wants to apply monkey patching then syntax must be correct so handled that value error. Closes-Bug: #1660545 Change-Id: I637a36eacdabca8c4edbba201d491744690869ef --- masakarimonitors/conf/base.py | 2 +- masakarimonitors/utils.py | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/masakarimonitors/conf/base.py b/masakarimonitors/conf/base.py index 2ac827b..5d631ac 100644 --- a/masakarimonitors/conf/base.py +++ b/masakarimonitors/conf/base.py @@ -31,7 +31,7 @@ Related options: """), cfg.ListOpt( 'monkey_patch_modules', - default=['masakarimonitors.cmd'], + default=[], help=""" List of modules/decorators to monkey patch. diff --git a/masakarimonitors/utils.py b/masakarimonitors/utils.py index b37be7c..e9a8bdf 100644 --- a/masakarimonitors/utils.py +++ b/masakarimonitors/utils.py @@ -27,7 +27,7 @@ from oslo_utils import importutils import six import masakarimonitors.conf -from masakarimonitors.i18n import _LE +from masakarimonitors.i18n import _, _LE from masakarimonitors import privsep @@ -59,7 +59,12 @@ def monkey_patch(): return inspect.ismethod(obj) or inspect.isfunction(obj) # Get list of modules and decorators for module_and_decorator in CONF.monkey_patch_modules: - module, decorator_name = module_and_decorator.split(':') + md_value = module_and_decorator.split(':') + if len(md_value) != 2: + msg = _("'monkey_patch_modules' config option is not configured " + "correctly") + raise Exception(msg) + module, decorator_name = md_value # import decorator function decorator = importutils.import_class(decorator_name) __import__(module)