From 2896131ca787aa065cc89336cc816ad02600626b Mon Sep 17 00:00:00 2001 From: Alexei Znamensky <103110+russoz@users.noreply.github.com> Date: Tue, 30 Nov 2021 19:10:48 +1300 Subject: [PATCH] ModuleHelper - deprecate attribute VarDict (#3801) * ModuleHelper - deprecate attribute VarDict * added changelog fragment --- .../3801-mh-deprecate-vardict-attr.yaml | 2 ++ plugins/module_utils/mh/module_helper.py | 12 +++++++++++- .../module_helper/library/msimpleda.py | 2 +- .../targets/module_helper/library/mstate.py | 7 +++++++ .../targets/module_helper/tasks/mstate.yml | 19 +++++++++++++++++++ 5 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 changelogs/fragments/3801-mh-deprecate-vardict-attr.yaml diff --git a/changelogs/fragments/3801-mh-deprecate-vardict-attr.yaml b/changelogs/fragments/3801-mh-deprecate-vardict-attr.yaml new file mode 100644 index 0000000000..1bb30e7452 --- /dev/null +++ b/changelogs/fragments/3801-mh-deprecate-vardict-attr.yaml @@ -0,0 +1,2 @@ +deprecated_features: + - module_helper module utils - deprecated the attribute ``ModuleHelper.VarDict`` (https://github.com/ansible-collections/community.general/pull/3801). diff --git a/plugins/module_utils/mh/module_helper.py b/plugins/module_utils/mh/module_helper.py index b27b60df9a..65842fd74e 100644 --- a/plugins/module_utils/mh/module_helper.py +++ b/plugins/module_utils/mh/module_helper.py @@ -13,9 +13,10 @@ from ansible_collections.community.general.plugins.module_utils.mh.mixins.cmd im from ansible_collections.community.general.plugins.module_utils.mh.mixins.state import StateMixin from ansible_collections.community.general.plugins.module_utils.mh.mixins.deps import DependencyMixin from ansible_collections.community.general.plugins.module_utils.mh.mixins.vars import VarsMixin, VarDict as _VD +from ansible_collections.community.general.plugins.module_utils.mh.mixins.deprecate_attrs import DeprecateAttrsMixin -class ModuleHelper(VarsMixin, DependencyMixin, ModuleHelperBase): +class ModuleHelper(DeprecateAttrsMixin, VarsMixin, DependencyMixin, ModuleHelperBase): _output_conflict_list = ('msg', 'exception', 'output', 'vars', 'changed') facts_name = None output_params = () @@ -36,6 +37,15 @@ class ModuleHelper(VarsMixin, DependencyMixin, ModuleHelperBase): fact=name in self.facts_params, ) + self._deprecate_attr( + attr="VarDict", + msg="ModuleHelper.VarDict attribute is deprecated, use VarDict from " + "the ansible_collections.community.general.plugins.module_utils.mh.mixins.vars module instead", + version="6.0.0", + collection_name="community.general", + target=ModuleHelper, + module=self.module) + def update_output(self, **kwargs): self.update_vars(meta={"output": True}, **kwargs) diff --git a/tests/integration/targets/module_helper/library/msimpleda.py b/tests/integration/targets/module_helper/library/msimpleda.py index 117de079d5..fa7f5cf464 100644 --- a/tests/integration/targets/module_helper/library/msimpleda.py +++ b/tests/integration/targets/module_helper/library/msimpleda.py @@ -28,7 +28,7 @@ from ansible_collections.community.general.plugins.module_utils.module_helper im from ansible_collections.community.general.plugins.module_utils.mh.mixins.deprecate_attrs import DeprecateAttrsMixin -class MSimpleDA(DeprecateAttrsMixin, ModuleHelper): +class MSimpleDA(ModuleHelper): output_params = ('a',) module = dict( argument_spec=dict( diff --git a/tests/integration/targets/module_helper/library/mstate.py b/tests/integration/targets/module_helper/library/mstate.py index b8cf674505..4ae0c63a59 100644 --- a/tests/integration/targets/module_helper/library/mstate.py +++ b/tests/integration/targets/module_helper/library/mstate.py @@ -24,6 +24,10 @@ options: c: description: cccc type: str + trigger_depr_attr: + description: tries to access VarDict + type: bool + default: false state: description: test states type: str @@ -45,12 +49,15 @@ class MState(StateModuleHelper): a=dict(type='int', required=True), b=dict(type='str'), c=dict(type='str'), + trigger_depr_attr=dict(type='bool', default=False), state=dict(type='str', choices=['join', 'b_x_a', 'c_x_a', 'both_x_a', 'nop'], default='join'), ), ) def __init_module__(self): self.vars.set('result', "abc", diff=True) + if self.vars.trigger_depr_attr: + dummy = self.VarDict def state_join(self): self.vars['result'] = "".join([str(self.vars.a), str(self.vars.b), str(self.vars.c)]) diff --git a/tests/integration/targets/module_helper/tasks/mstate.yml b/tests/integration/targets/module_helper/tasks/mstate.yml index 6476f76429..581a8ba8a4 100644 --- a/tests/integration/targets/module_helper/tasks/mstate.yml +++ b/tests/integration/targets/module_helper/tasks/mstate.yml @@ -69,9 +69,25 @@ a: 5 b: foo c: bar + trigger_depr_attr: true state: both_x_a register: state5 +- ansible.builtin.set_fact: + vardict_gt29: + msg: >- + ModuleHelper.VarDict attribute is deprecated, use VarDict from the + ansible_collections.community.general.plugins.module_utils.mh.mixins.vars + module instead + version: 6.0.0 + collection_name: community.general + vardict_29: + msg: >- + ModuleHelper.VarDict attribute is deprecated, use VarDict from the + ansible_collections.community.general.plugins.module_utils.mh.mixins.vars + module instead + version: 6.0.0 + - name: assert state5 assert: that: @@ -80,3 +96,6 @@ - state5.c == "bar" - state5.result == "foobarfoobarfoobarfoobarfoobar" - state5 is changed + - vardict_depr in state5.deprecations + vars: + vardict_depr: '{{ (ansible_version.major == 2 and ansible_version.minor == 9) | ternary(vardict_29, vardict_gt29) }}'