Skip to content

Commit 0a9c3da

Browse files
committed
use_netgroups and ldap_group_membership compatibility
1 parent f5fad6d commit 0a9c3da

1 file changed

Lines changed: 17 additions & 2 deletions

File tree

plugins/modules/auth_source_ldap.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,12 @@
101101
description: Base DN where groups reside.
102102
required: false
103103
type: str
104+
use_netgroups:
105+
description:
106+
- Whether to use NIS netgroups instead of posix groups, not valid for I(server_type=active_directory)
107+
- "Deprecated: The use_netgroups parameter is deprecated with Foreman 3.16 in favor of I(ldap_group_membership) and will be removed in a future release."
108+
required: false
109+
type: bool
104110
ldap_group_membership:
105111
description: Which group membership method to use, not valid for I(server_type=active_directory). Option I(rfc4519) is valid only for I(server_type=posix).
106112
required: false
@@ -215,17 +221,26 @@ def main():
215221
groups_base=dict(),
216222
server_type=dict(choices=["free_ipa", "active_directory", "posix"]),
217223
ldap_filter=dict(),
224+
use_netgroups=dict(type='bool'),
218225
ldap_group_membership=dict(choices=["posix", "nis_netgroups", "rfc4519"]),
219226
),
220227
required_if=[['onthefly_register', True, ['attr_login', 'attr_firstname', 'attr_lastname', 'attr_mail']]],
221228
)
222229

223230
# additional parameter checks
224-
server_type = module.foreman_params['server_type']
231+
use_netgroups = module.foreman_params.get('use_netgroups')
232+
ldap_group_membership = module.foreman_params.get('ldap_group_membership')
233+
if use_netgroups is not None:
234+
expected_ldap_group_membership = ['nis_netgroups'] if use_netgroups == True else ['posix', 'rfc4519']
235+
if ldap_group_membership is None:
236+
module.foreman_params['ldap_group_membership'] = expected_ldap_group_membership[0]
237+
elif ldap_group_membership not in expected_ldap_group_membership:
238+
module.fail_json(msg=f'ldap_group_membership={{ ldap_group_membership }} cannot be used when use_netgroups={{ use_netgroups }}')
239+
240+
server_type = module.foreman_params.get('server_type', 'posix')
225241
if 'ldap_group_membership' in module.foreman_params and server_type == 'active_directory'
226242
module.fail_json(msg='ldap_group_membership cannot be used when server_type=active_directory')
227243

228-
229244
if 'ldap_group_membership' in module.foreman_params and module.foreman_params['ldap_group_membership'] == 'rfc4519' and server_type != 'posix':
230245
module.fail_json(msg=f'ldap_group_membership=rfc4519 cannot be used when server_type={{ server_type }}')
231246

0 commit comments

Comments
 (0)