Fix compatibility issue in tripleo callback
The default callback sets some compatibility options but does not properly do it in both the ways that are used. The show_per_host_start is a compatibility option but the default callback uses get_option(...) which checks for the existance in _plugin_options. Since it is not defined there, the callback fails hard and the function no longer works. This change adds our own compatibility layer to ensure the compatibility options are set in _plugin_options until we can get a fix upstream. Change-Id: I476aee9863ad63ce6d7ccf9350dae8540a37f017 Closes-Bug: #1895571
This commit is contained in:
parent
64fdb4e8c9
commit
7eca0c70e3
@ -16,9 +16,25 @@ __metaclass__ = type
|
||||
|
||||
from ansible import constants as C
|
||||
from ansible.plugins.callback.default import CallbackModule as BASE
|
||||
from ansible.plugins.callback.default import COMPAT_OPTIONS
|
||||
|
||||
|
||||
class CallbackModule(BASE):
|
||||
def set_options(self, task_keys=None, var_options=None, direct=None):
|
||||
super(CallbackModule, self).set_options(task_keys=task_keys,
|
||||
var_options=var_options,
|
||||
direct=direct)
|
||||
# NOTE(mwhahaha): work around for bug in ansible's default callback
|
||||
# where it sets the attr on the object but not in the plugin options
|
||||
# for the compatibility options. Need to submit this upstream.
|
||||
for option, constant in COMPAT_OPTIONS:
|
||||
try:
|
||||
value = self.get_option(option)
|
||||
except (AttributeError, KeyError):
|
||||
value = constant
|
||||
if option not in self._plugin_options:
|
||||
self._plugin_options[option] = value
|
||||
|
||||
def v2_runner_retry(self, result):
|
||||
task_name = result.task_name or result._task
|
||||
retry_count = result._result['retries'] - result._result['attempts']
|
||||
|
Loading…
Reference in New Issue
Block a user