From 5f1b3898e8f3d6f7c235796432e2e0d08bce2512 Mon Sep 17 00:00:00 2001 From: Matt Clay Date: Tue, 16 Jan 2024 14:57:34 -0800 Subject: [PATCH] Avoid delattr in test callback plugin (#82550) This prevents the test plugin from tampering with the base callback plugin, which causes issues with all other callback plugins running in the test. --- .../callback_plugins/callback_debug.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/test/integration/targets/support-callback_plugins/callback_plugins/callback_debug.py b/test/integration/targets/support-callback_plugins/callback_plugins/callback_debug.py index b1c0a623e94..7d7df62b2e9 100644 --- a/test/integration/targets/support-callback_plugins/callback_plugins/callback_debug.py +++ b/test/integration/targets/support-callback_plugins/callback_plugins/callback_debug.py @@ -3,6 +3,8 @@ from __future__ import annotations +import functools + from ansible.plugins.callback import CallbackBase @@ -15,9 +17,8 @@ class CallbackModule(CallbackBase): super(CallbackModule, self).__init__(*args, **kwargs) self._display.display('__init__') - for cb in [x for x in dir(CallbackBase) if x.startswith('v2_')]: - delattr(CallbackBase, cb) + for name in (cb for cb in dir(self) if cb.startswith('v2_')): + setattr(self, name, functools.partial(self.handle_v2, name)) - def __getattr__(self, name): - if name.startswith('v2_'): - return lambda *args, **kwargs: self._display.display(name) + def handle_v2(self, name, *args, **kwargs): + self._display.display(name)