Skip to content

Commit

Permalink
IPAAnsibleModule: Provide base configuration for delete_continue.
Browse files Browse the repository at this point in the history
Allows the creation of IPAAnsibleModule objects with specific
`ipa_arguments` which are defined in a dictionary of argumets in
the base class.

Every module using `delete_continue` should provide the proper behavior
and the module must be instantiated with:

  ansible_module = IPAAnsibleModule(
      ...,
      ipa_arguments=["delete_continue"]
  )

The plugin documentation must be extended with
'ipamodule_arguments.delete_continue'.
  • Loading branch information
rjeffman committed Feb 15, 2022
1 parent e681f25 commit 42ddf17
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 0 deletions.
38 changes: 38 additions & 0 deletions plugins/doc_fragments/ipamodule_arguments.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# -*- coding: utf-8 -*-

# Authors:
# Rafael Jeffman <[email protected]>
#
# Copyright (C) 2022 Red Hat
# see file 'COPYING' for use and warranty information
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.

from __future__ import (absolute_import, division, print_function)

__metaclass__ = type


class ModuleDocFragment(object): # pylint: disable=R0205,R0903
DOCUMENTATION = r""

DELETE_CONTINUE = r"""
options:
delete_continue:
description: |
Continuous mode. Don't stop on errors. Valid only if `state` is `absent`.
aliases: ["continue"]
type: bool
default: True
"""
16 changes: 16 additions & 0 deletions plugins/module_utils/ansible_freeipa_module.py
Original file line number Diff line number Diff line change
Expand Up @@ -826,13 +826,29 @@ def main():
ipaapi_ldap_cache=dict(type="bool", default="True"),
)

ipa_argument_spec = dict(
delete_continue=dict(
type="bool", default=True, aliases=["continue"]
)
)

def __init__(self, *args, **kwargs):
# Extend argument_spec with ipa_module_base_spec
if "argument_spec" in kwargs:
_spec = kwargs["argument_spec"]
_spec.update(self.ipa_module_base_spec)
kwargs["argument_spec"] = _spec

if "ipa_arguments" in kwargs:
_update = {
k: self.ipa_argument_spec[k]
for k in kwargs["ipa_arguments"]
}
_spec = kwargs.get("argument_spec", {})
_spec.update(_update)
kwargs["argument_spec"] = _spec
del kwargs["ipa_arguments"]

# pylint: disable=super-with-arguments
super(IPAAnsibleModule, self).__init__(*args, **kwargs)

Expand Down

0 comments on commit 42ddf17

Please sign in to comment.