Skip to content

Commit

Permalink
module helper: delegate debug() to AnsibleModule (#9577)
Browse files Browse the repository at this point in the history
* module helper: delegate debug() to AnsibleModule

* add changelog frag

* add comments for future

* use deprecate()

* fix errors
  • Loading branch information
russoz authored Jan 20, 2025
1 parent bcc92e8 commit 7fa859a
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 0 deletions.
6 changes: 6 additions & 0 deletions changelogs/fragments/9577-mh-delegate-debug.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
minor_changes:
- MH module utils - delegate ``debug`` to the underlying ``AnsibleModule`` instance or issues a warning if an attribute already exists with that name (https://github.com/ansible-collections/community.general/pull/9577).
deprecated_features:
- >
MH module utils - attribute ``debug`` definition in subclasses of MH is now deprecated, as that name will become a delegation to ``AnsibleModule`` in
community.general 12.0.0, and any such attribute will be overridden by that delegation in that version (https://github.com/ansible-collections/community.general/pull/9577).
5 changes: 5 additions & 0 deletions docs/docsite/rst/guide_modulehelper.rst
Original file line number Diff line number Diff line change
Expand Up @@ -468,6 +468,11 @@ Additionally, MH will also delegate:
- ``diff_mode`` to ``self.module._diff``
- ``verbosity`` to ``self.module._verbosity``

Starting in community.general 10.3.0, MH will also delegate the method ``debug`` to ``self.module``.
If any existing module already has a ``debug`` attribute defined, a warning message will be generated,
requesting it to be renamed. Upon the release of community.general 12.0.0, the delegation will be
preemptive and will override any existing method or property in the subclasses.

Decorators
""""""""""

Expand Down
13 changes: 13 additions & 0 deletions plugins/module_utils/mh/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
class ModuleHelperBase(object):
module = None
ModuleHelperException = _MHE
# in 12.0.0 add 'debug' to the tuple
_delegated_to_module = (
'check_mode', 'get_bin_path', 'warn', 'deprecate',
)
Expand All @@ -28,6 +29,18 @@ def __init__(self, module=None):
if not isinstance(self.module, AnsibleModule):
self.module = AnsibleModule(**self.module)

# in 12.0.0 remove this if statement entirely
if hasattr(self, 'debug'):
msg = (
"This class ({cls}) has an attribute 'debug' defined and that is deprecated. "
"Method 'debug' will be an integral part of ModuleHelper in community.general "
"12.0.0, delegated to the underlying AnsibleModule object. "
"Please rename the existing attribute to prevent this message from showing.".format(cls=self.__class__.__name__)
)
self.deprecate(msg, version="12.0.0", collection_name="community.general")
else:
self._delegated_to_module = self._delegated_to_module + ('debug',)

@property
def diff_mode(self):
return self.module._diff
Expand Down

0 comments on commit 7fa859a

Please sign in to comment.