From 303caec7a6687d3bb6b6f7b6c3e00a3dcec365cc Mon Sep 17 00:00:00 2001 From: Jan Sobczak <9196392+jansobczak@users.noreply.github.com> Date: Sat, 22 Apr 2023 22:55:36 +0200 Subject: [PATCH] Add append option to ipa_hostgroup module (#6203) * Add append option to ipa_hostgroup module Signed-off-by: Jan Sobczak * Update plugins/modules/ipa_hostgroup.py Co-authored-by: Felix Fontein * Update plugins/modules/ipa_hostgroup.py Co-authored-by: Felix Fontein * Add changelog fragment Signed-off-by: Jan Sobczak * Move choices argument to previous line Signed-off-by: Jan Sobczak * Update plugins/modules/ipa_hostgroup.py Co-authored-by: Felix Fontein * Update changelogs/fragments/6203-add-append-option-to-ipa-hostgroup.yml Co-authored-by: Felix Fontein --------- Signed-off-by: Jan Sobczak Co-authored-by: Jan Sobczak Co-authored-by: Felix Fontein (cherry picked from commit f4dd4d5ace6b3e7cc58ceffdf403b971db16a7f5) --- ...203-add-append-option-to-ipa-hostgroup.yml | 2 ++ plugins/modules/ipa_hostgroup.py | 21 +++++++++++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) create mode 100644 changelogs/fragments/6203-add-append-option-to-ipa-hostgroup.yml diff --git a/changelogs/fragments/6203-add-append-option-to-ipa-hostgroup.yml b/changelogs/fragments/6203-add-append-option-to-ipa-hostgroup.yml new file mode 100644 index 00000000000..1de6853efce --- /dev/null +++ b/changelogs/fragments/6203-add-append-option-to-ipa-hostgroup.yml @@ -0,0 +1,2 @@ +minor_changes: + - ipa_hostgroup - add ``append`` parameter for adding a new hosts to existing hostgroups without changing existing hostgroup members (https://github.com/ansible-collections/community.general/pull/6203). diff --git a/plugins/modules/ipa_hostgroup.py b/plugins/modules/ipa_hostgroup.py index dcada0380c5..12232de89cf 100644 --- a/plugins/modules/ipa_hostgroup.py +++ b/plugins/modules/ipa_hostgroup.py @@ -20,6 +20,13 @@ diff_mode: support: none options: + append: + description: + - If C(true), add the listed I(host) to the I(hostgroup). + - If C(false), only the listed I(host) will be in I(hostgroup), removing any other hosts. + default: false + type: bool + version_added: 6.6.0 cn: description: - Name of host-group. @@ -147,6 +154,7 @@ def ensure(module, client): state = module.params['state'] host = module.params['host'] hostgroup = module.params['hostgroup'] + append = module.params['append'] ipa_hostgroup = client.hostgroup_find(name=name) module_hostgroup = get_hostgroup_dict(description=module.params['description']) @@ -168,14 +176,18 @@ def ensure(module, client): client.hostgroup_mod(name=name, item=data) if host is not None: - changed = client.modify_if_diff(name, ipa_hostgroup.get('member_host', []), [item.lower() for item in host], - client.hostgroup_add_host, client.hostgroup_remove_host) or changed + changed = client.modify_if_diff(name, ipa_hostgroup.get('member_host', []), + [item.lower() for item in host], + client.hostgroup_add_host, + client.hostgroup_remove_host, + append=append) or changed if hostgroup is not None: changed = client.modify_if_diff(name, ipa_hostgroup.get('member_hostgroup', []), [item.lower() for item in hostgroup], client.hostgroup_add_hostgroup, - client.hostgroup_remove_hostgroup) or changed + client.hostgroup_remove_hostgroup, + append=append) or changed else: if ipa_hostgroup: @@ -192,7 +204,8 @@ def main(): description=dict(type='str'), host=dict(type='list', elements='str'), hostgroup=dict(type='list', elements='str'), - state=dict(type='str', default='present', choices=['present', 'absent', 'enabled', 'disabled'])) + state=dict(type='str', default='present', choices=['present', 'absent', 'enabled', 'disabled']), + append=dict(type='bool', default=False)) module = AnsibleModule(argument_spec=argument_spec, supports_check_mode=True)