Use a common decorator to log 'take_action' activation

Instead of duplicating the same log statement throughout
the code, the same logic can be provided by a shared decorator
that abstracts away the logging capability and unifies it behind
a common function instead.

Change-Id: Icc63bced7347c8bbf0299a4c5821425a10892a79
This commit is contained in:
Joshua Harlow 2015-09-01 16:43:07 -07:00
parent de7a86f7da
commit d7af4e554c

View File

@ -26,6 +26,29 @@ from oslo_utils import importutils
from openstackclient.common import exceptions from openstackclient.common import exceptions
def log_method(log, level=logging.DEBUG):
"""Logs a method and its arguments when entered."""
def decorator(func):
func_name = func.__name__
@six.wraps(func)
def wrapper(self, *args, **kwargs):
if log.isEnabledFor(level):
pretty_args = []
if args:
pretty_args.extend(str(a) for a in args)
if kwargs:
pretty_args.extend(
"%s=%s" % (k, v) for k, v in six.iteritems(kwargs))
log.log(level, "%s(%s)", func_name, ", ".join(pretty_args))
return func(self, *args, **kwargs)
return wrapper
return decorator
def find_resource(manager, name_or_id, **kwargs): def find_resource(manager, name_or_id, **kwargs):
"""Helper for the _find_* methods. """Helper for the _find_* methods.