Add non_unique parameter for group module (#53085)
parent
0e77eeb205
commit
f97a593da5
|
@ -53,6 +53,12 @@ options:
|
||||||
type: bool
|
type: bool
|
||||||
default: no
|
default: no
|
||||||
version_added: "2.6"
|
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:
|
seealso:
|
||||||
- module: user
|
- module: user
|
||||||
- module: win_group
|
- module: win_group
|
||||||
|
@ -99,6 +105,7 @@ class Group(object):
|
||||||
self.gid = module.params['gid']
|
self.gid = module.params['gid']
|
||||||
self.system = module.params['system']
|
self.system = module.params['system']
|
||||||
self.local = module.params['local']
|
self.local = module.params['local']
|
||||||
|
self.non_unique = module.params['non_unique']
|
||||||
|
|
||||||
def execute_command(self, cmd):
|
def execute_command(self, cmd):
|
||||||
return self.module.run_command(cmd)
|
return self.module.run_command(cmd)
|
||||||
|
@ -121,6 +128,8 @@ class Group(object):
|
||||||
if key == 'gid' and kwargs[key] is not None:
|
if key == 'gid' and kwargs[key] is not None:
|
||||||
cmd.append('-g')
|
cmd.append('-g')
|
||||||
cmd.append(str(kwargs[key]))
|
cmd.append(str(kwargs[key]))
|
||||||
|
if self.non_unique:
|
||||||
|
cmd.append('-o')
|
||||||
elif key == 'system' and kwargs[key] is True:
|
elif key == 'system' and kwargs[key] is True:
|
||||||
cmd.append('-r')
|
cmd.append('-r')
|
||||||
cmd.append(self.name)
|
cmd.append(self.name)
|
||||||
|
@ -138,6 +147,8 @@ class Group(object):
|
||||||
if kwargs[key] is not None and info[2] != int(kwargs[key]):
|
if kwargs[key] is not None and info[2] != int(kwargs[key]):
|
||||||
cmd.append('-g')
|
cmd.append('-g')
|
||||||
cmd.append(str(kwargs[key]))
|
cmd.append(str(kwargs[key]))
|
||||||
|
if self.non_unique:
|
||||||
|
cmd.append('-o')
|
||||||
if len(cmd) == 1:
|
if len(cmd) == 1:
|
||||||
return (None, '', '')
|
return (None, '', '')
|
||||||
if self.module.check_mode:
|
if self.module.check_mode:
|
||||||
|
@ -183,6 +194,8 @@ class SunOS(Group):
|
||||||
if key == 'gid' and kwargs[key] is not None:
|
if key == 'gid' and kwargs[key] is not None:
|
||||||
cmd.append('-g')
|
cmd.append('-g')
|
||||||
cmd.append(str(kwargs[key]))
|
cmd.append(str(kwargs[key]))
|
||||||
|
if self.non_unique:
|
||||||
|
cmd.append('-o')
|
||||||
cmd.append(self.name)
|
cmd.append(self.name)
|
||||||
return self.execute_command(cmd)
|
return self.execute_command(cmd)
|
||||||
|
|
||||||
|
@ -257,6 +270,8 @@ class FreeBsdGroup(Group):
|
||||||
if self.gid is not None:
|
if self.gid is not None:
|
||||||
cmd.append('-g')
|
cmd.append('-g')
|
||||||
cmd.append(str(self.gid))
|
cmd.append(str(self.gid))
|
||||||
|
if self.non_unique:
|
||||||
|
cmd.append('-o')
|
||||||
return self.execute_command(cmd)
|
return self.execute_command(cmd)
|
||||||
|
|
||||||
def group_mod(self, **kwargs):
|
def group_mod(self, **kwargs):
|
||||||
|
@ -266,6 +281,8 @@ class FreeBsdGroup(Group):
|
||||||
if self.gid is not None and int(self.gid) != info[2]:
|
if self.gid is not None and int(self.gid) != info[2]:
|
||||||
cmd.append('-g')
|
cmd.append('-g')
|
||||||
cmd.append(str(self.gid))
|
cmd.append(str(self.gid))
|
||||||
|
if self.non_unique:
|
||||||
|
cmd.append('-o')
|
||||||
# modify the group if cmd will do anything
|
# modify the group if cmd will do anything
|
||||||
if cmd_len != len(cmd):
|
if cmd_len != len(cmd):
|
||||||
if self.module.check_mode:
|
if self.module.check_mode:
|
||||||
|
@ -377,6 +394,8 @@ class OpenBsdGroup(Group):
|
||||||
if self.gid is not None:
|
if self.gid is not None:
|
||||||
cmd.append('-g')
|
cmd.append('-g')
|
||||||
cmd.append(str(self.gid))
|
cmd.append(str(self.gid))
|
||||||
|
if self.non_unique:
|
||||||
|
cmd.append('-o')
|
||||||
cmd.append(self.name)
|
cmd.append(self.name)
|
||||||
return self.execute_command(cmd)
|
return self.execute_command(cmd)
|
||||||
|
|
||||||
|
@ -386,6 +405,8 @@ class OpenBsdGroup(Group):
|
||||||
if self.gid is not None and int(self.gid) != info[2]:
|
if self.gid is not None and int(self.gid) != info[2]:
|
||||||
cmd.append('-g')
|
cmd.append('-g')
|
||||||
cmd.append(str(self.gid))
|
cmd.append(str(self.gid))
|
||||||
|
if self.non_unique:
|
||||||
|
cmd.append('-o')
|
||||||
if len(cmd) == 1:
|
if len(cmd) == 1:
|
||||||
return (None, '', '')
|
return (None, '', '')
|
||||||
if self.module.check_mode:
|
if self.module.check_mode:
|
||||||
|
@ -419,6 +440,8 @@ class NetBsdGroup(Group):
|
||||||
if self.gid is not None:
|
if self.gid is not None:
|
||||||
cmd.append('-g')
|
cmd.append('-g')
|
||||||
cmd.append(str(self.gid))
|
cmd.append(str(self.gid))
|
||||||
|
if self.non_unique:
|
||||||
|
cmd.append('-o')
|
||||||
cmd.append(self.name)
|
cmd.append(self.name)
|
||||||
return self.execute_command(cmd)
|
return self.execute_command(cmd)
|
||||||
|
|
||||||
|
@ -428,6 +451,8 @@ class NetBsdGroup(Group):
|
||||||
if self.gid is not None and int(self.gid) != info[2]:
|
if self.gid is not None and int(self.gid) != info[2]:
|
||||||
cmd.append('-g')
|
cmd.append('-g')
|
||||||
cmd.append(str(self.gid))
|
cmd.append(str(self.gid))
|
||||||
|
if self.non_unique:
|
||||||
|
cmd.append('-o')
|
||||||
if len(cmd) == 1:
|
if len(cmd) == 1:
|
||||||
return (None, '', '')
|
return (None, '', '')
|
||||||
if self.module.check_mode:
|
if self.module.check_mode:
|
||||||
|
@ -445,9 +470,13 @@ def main():
|
||||||
name=dict(type='str', required=True),
|
name=dict(type='str', required=True),
|
||||||
gid=dict(type='int'),
|
gid=dict(type='int'),
|
||||||
system=dict(type='bool', default=False),
|
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,
|
supports_check_mode=True,
|
||||||
|
required_if=[
|
||||||
|
['non_unique', True, ['gid']],
|
||||||
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
group = Group(module)
|
group = Group(module)
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
loop:
|
loop:
|
||||||
- ansibullgroup
|
- ansibullgroup
|
||||||
- ansibullgroup2
|
- ansibullgroup2
|
||||||
|
- ansibullgroup3
|
||||||
|
|
||||||
- block:
|
- block:
|
||||||
- name: run tests
|
- name: run tests
|
||||||
|
@ -36,3 +37,4 @@
|
||||||
loop:
|
loop:
|
||||||
- ansibullgroup
|
- ansibullgroup
|
||||||
- ansibullgroup2
|
- ansibullgroup2
|
||||||
|
- ansibullgroup3
|
|
@ -129,6 +129,22 @@
|
||||||
- not create_group_gid_again is changed
|
- not create_group_gid_again is changed
|
||||||
- create_group_gid_again.gid | int == gid.stdout_lines[0] | int
|
- 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
|
## group remove
|
||||||
##
|
##
|
||||||
|
|
Loading…
Reference in New Issue