Add non_unique parameter for group module (#53085)

This commit is contained in:
Gabriel do Nascimento Ribeiro 2019-03-13 16:40:07 -03:00 committed by Sam Doran
parent 0e77eeb205
commit f97a593da5
3 changed files with 48 additions and 1 deletions

View file

@ -53,6 +53,12 @@ options:
type: bool
default: no
version_added: "2.6"
non_unique:
description:
- This option allows to change the group ID to a non-unique value. Requires C(gid).
type: bool
default: no
version_added: "2.8"
seealso:
- module: user
- module: win_group
@ -99,6 +105,7 @@ class Group(object):
self.gid = module.params['gid']
self.system = module.params['system']
self.local = module.params['local']
self.non_unique = module.params['non_unique']
def execute_command(self, cmd):
return self.module.run_command(cmd)
@ -121,6 +128,8 @@ class Group(object):
if key == 'gid' and kwargs[key] is not None:
cmd.append('-g')
cmd.append(str(kwargs[key]))
if self.non_unique:
cmd.append('-o')
elif key == 'system' and kwargs[key] is True:
cmd.append('-r')
cmd.append(self.name)
@ -138,6 +147,8 @@ class Group(object):
if kwargs[key] is not None and info[2] != int(kwargs[key]):
cmd.append('-g')
cmd.append(str(kwargs[key]))
if self.non_unique:
cmd.append('-o')
if len(cmd) == 1:
return (None, '', '')
if self.module.check_mode:
@ -183,6 +194,8 @@ class SunOS(Group):
if key == 'gid' and kwargs[key] is not None:
cmd.append('-g')
cmd.append(str(kwargs[key]))
if self.non_unique:
cmd.append('-o')
cmd.append(self.name)
return self.execute_command(cmd)
@ -257,6 +270,8 @@ class FreeBsdGroup(Group):
if self.gid is not None:
cmd.append('-g')
cmd.append(str(self.gid))
if self.non_unique:
cmd.append('-o')
return self.execute_command(cmd)
def group_mod(self, **kwargs):
@ -266,6 +281,8 @@ class FreeBsdGroup(Group):
if self.gid is not None and int(self.gid) != info[2]:
cmd.append('-g')
cmd.append(str(self.gid))
if self.non_unique:
cmd.append('-o')
# modify the group if cmd will do anything
if cmd_len != len(cmd):
if self.module.check_mode:
@ -377,6 +394,8 @@ class OpenBsdGroup(Group):
if self.gid is not None:
cmd.append('-g')
cmd.append(str(self.gid))
if self.non_unique:
cmd.append('-o')
cmd.append(self.name)
return self.execute_command(cmd)
@ -386,6 +405,8 @@ class OpenBsdGroup(Group):
if self.gid is not None and int(self.gid) != info[2]:
cmd.append('-g')
cmd.append(str(self.gid))
if self.non_unique:
cmd.append('-o')
if len(cmd) == 1:
return (None, '', '')
if self.module.check_mode:
@ -419,6 +440,8 @@ class NetBsdGroup(Group):
if self.gid is not None:
cmd.append('-g')
cmd.append(str(self.gid))
if self.non_unique:
cmd.append('-o')
cmd.append(self.name)
return self.execute_command(cmd)
@ -428,6 +451,8 @@ class NetBsdGroup(Group):
if self.gid is not None and int(self.gid) != info[2]:
cmd.append('-g')
cmd.append(str(self.gid))
if self.non_unique:
cmd.append('-o')
if len(cmd) == 1:
return (None, '', '')
if self.module.check_mode:
@ -445,9 +470,13 @@ def main():
name=dict(type='str', required=True),
gid=dict(type='int'),
system=dict(type='bool', default=False),
local=dict(type='bool', default=False)
local=dict(type='bool', default=False),
non_unique=dict(type='bool', default=False),
),
supports_check_mode=True,
required_if=[
['non_unique', True, ['gid']],
],
)
group = Group(module)

View file

@ -23,6 +23,7 @@
loop:
- ansibullgroup
- ansibullgroup2
- ansibullgroup3
- block:
- name: run tests
@ -36,3 +37,4 @@
loop:
- ansibullgroup
- ansibullgroup2
- ansibullgroup3

View file

@ -129,6 +129,22 @@
- not create_group_gid_again is changed
- create_group_gid_again.gid | int == gid.stdout_lines[0] | int
- block:
- name: create a group with a non-unique gid
group:
name: ansibullgroup3
gid: '{{ gid.stdout_lines[0] }}'
non_unique: true
state: present
register: create_group_gid_non_unique
- name: assert create group with a non unique gid
assert:
that:
- create_group_gid_non_unique is changed
- create_group_gid_non_unique.gid | int == gid.stdout_lines[0] | int
when: ansible_facts.system != 'Darwin'
##
## group remove
##