diff --git a/plugins/modules/iparole.py b/plugins/modules/iparole.py index ad54ca099450c3aeaa703a3a51925bc657f6ef56..0f3643edd18d8a6826b11502075d7b5f1ef3fe87 100644 --- a/plugins/modules/iparole.py +++ b/plugins/modules/iparole.py @@ -170,6 +170,17 @@ def check_parameters(module): module.params_fail_used_invalid(invalid, state, action) +def get_member_host_with_fqdn_lowercase(module, mod_member): + """Retrieve host members from module, as FQDN, lowercase.""" + default_domain = module.ipa_get_domain() + hosts = module.params_get(mod_member) + return ( + [ensure_fqdn(host, default_domain).lower() for host in hosts] + if hosts + else hosts + ) + + def ensure_absent_state(module, name, action, res_find): """Define commands to ensure absent state.""" commands = [] @@ -188,7 +199,7 @@ def ensure_absent_state(module, name, action, res_find): {"privilege": members}]) member_args = {} - for key in ['user', 'group', 'host', 'hostgroup']: + for key in ['user', 'group', 'hostgroup']: items = gen_intersection_list( module.params_get(key), res_find.get("member_%s" % key) @@ -196,6 +207,14 @@ def ensure_absent_state(module, name, action, res_find): if items: member_args[key] = items + # ensure hosts are FQDN. + _members = get_member_host_with_fqdn_lowercase(module, "host") + if _members: + del_list = gen_intersection_list( + _members, res_find.get('member_host')) + if del_list: + member_args["host"] = del_list + _services = get_service_param(module, "service") if _services: _existing = get_lowercase(res_find, "member_service") @@ -280,7 +299,7 @@ def ensure_role_with_members_is_present(module, name, res_find, action): add_members = {} del_members = {} - for key in ["user", "group", "host", "hostgroup"]: + for key in ["user", "group", "hostgroup"]: add_list, del_list = gen_add_del_lists( module.params_get(key), res_find.get('member_%s' % key, []) @@ -290,6 +309,16 @@ def ensure_role_with_members_is_present(module, name, res_find, action): if del_list: del_members[key] = [to_text(item) for item in del_list] + # ensure hosts are FQDN. + _members = get_member_host_with_fqdn_lowercase(module, "host") + if _members: + add_list, del_list = gen_add_del_lists( + _members, res_find.get('member_host')) + if add_list: + add_members["host"] = add_list + if del_list: + del_members["host"] = del_list + (add_services, del_services) = gen_services_add_del_lists( module, "service", res_find, "member_service") if add_services: