diff --git a/changelogs/fragments/deprecate_default_call_fragmentless.yml b/changelogs/fragments/deprecate_default_call_fragmentless.yml new file mode 100644 index 00000000000..0f051b12667 --- /dev/null +++ b/changelogs/fragments/deprecate_default_call_fragmentless.yml @@ -0,0 +1,4 @@ +deprecated_features: + - Using the DefaultCallback without the correspodning doc_fragment or copying the documentation. +bugfixes: + - added new option for default callback to compat variable to avoid old 3rd party plugins from erroring out. diff --git a/lib/ansible/plugins/callback/default.py b/lib/ansible/plugins/callback/default.py index 8147cb6aa21..fae958bb102 100644 --- a/lib/ansible/plugins/callback/default.py +++ b/lib/ansible/plugins/callback/default.py @@ -43,7 +43,6 @@ from ansible.playbook.task_include import TaskInclude from ansible.plugins.callback import CallbackBase from ansible.utils.color import colorize, hostcolor - # These values use ansible.constants for historical reasons, mostly to allow # unmodified derivative plugins to work. However, newer options added to the # plugin are not also added to ansible.constants, so authors of derivative @@ -57,7 +56,8 @@ COMPAT_OPTIONS = (('display_skipped_hosts', C.DISPLAY_SKIPPED_HOSTS), ('display_ok_hosts', True), ('show_custom_stats', C.SHOW_CUSTOM_STATS), ('display_failed_stderr', False), - ('check_mode_markers', False),) + ('check_mode_markers', False), + ('show_per_host_start', False)) class CallbackModule(CallbackBase): @@ -88,6 +88,8 @@ class CallbackModule(CallbackBase): try: value = self.get_option(option) except (AttributeError, KeyError): + self._display.deprecated("'%s' is subclassing DefaultCallback without the corresponding doc_fragment." % self._load_name, + version='2.14') value = constant setattr(self, option, value)