group - fix explicit git scenario (#52769)

* group - fix explicit git scenario

* Use str for simplicity and remove changelog

* dynamically get gid and remove Jinja2 check
This commit is contained in:
Jordan Borean
2019-02-22 12:40:42 +10:00
committed by GitHub
parent 63c22f6eb0
commit aab1f30906
4 changed files with 220 additions and 99 deletions

View File

@@ -0,0 +1,12 @@
#!/usr/bin/env python
import grp
gids = [g.gr_gid for g in grp.getgrall()]
i = 0
while True:
if i not in gids:
print(i)
break
i += 1

View File

@@ -16,92 +16,23 @@
# You should have received a copy of the GNU General Public License
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
- name: get the jinja2 version
shell: python -c 'import jinja2; print(jinja2.__version__)'
register: jinja2_version
delegate_to: localhost
- debug: var=jinja2_version
##
## group add
##
- name: try to create group
- name: ensure test groups are deleted before the test
group:
name: ansibullgroup
state: present
register: group_test0
name: '{{ item }}'
state: absent
loop:
- ansibullgroup
- ansibullgroup2
- name: make a list of groups
script: grouplist.sh "{{ ansible_distribution }}"
register: group_names
- block:
- name: run tests
include_tasks: tests.yml
- name: show group names
debug: var=group_names
- name: validate results for testcase 0
assert:
that:
- '"ansibullgroup" in group_names.stdout_lines'
##
## group check
##
- name: run existing group check tests
group:
name: "{{ group_names.stdout_lines|random }}"
state: present
with_sequence: start=1 end=5
register: group_test1
- debug: var=group_test1
- name: validate results for testcase 1
assert:
that:
- 'group_test1.results is defined'
- 'group_test1.results|length == 5'
- name: validate change results for testcase 1 (jinja2 >= 2.6)
assert:
that:
- "group_test1.results|map(attribute='changed')|unique|list == [False]"
- "group_test1.results|map(attribute='state')|unique|list == ['present']"
when: "jinja2_version.stdout is version('2.6', '>=')"
- name: validate change results for testcase 1 (jinja2 < 2.6)
assert:
that:
- "not group_test1.results[0]['changed']"
- "not group_test1.results[1]['changed']"
- "not group_test1.results[2]['changed']"
- "not group_test1.results[3]['changed']"
- "not group_test1.results[4]['changed']"
when: "jinja2_version.stdout is version('2.6', '<')"
##
## group remove
##
- name: try to delete the group
group:
name: ansibullgroup
always:
- name: remove test groups after test
group:
name: '{{ item }}'
state: absent
register: group_test2
- name: make a new list of groups
shell: |
cat /etc/group | cut -d: -f1
register: group_names2
when: 'ansible_distribution != "MacOSX"'
- name: make a list of groups
script: grouplist.sh "{{ ansible_distribution }}"
register: group_names2
- debug: var=group_names2
- name: validate results for testcase 2
assert:
that:
- '"ansibullgroup" not in group_names2.stdout_lines'
loop:
- ansibullgroup
- ansibullgroup2

View File

@@ -0,0 +1,178 @@
---
##
## group add
##
- name: create group (check mode)
group:
name: ansibullgroup
state: present
register: create_group_check
check_mode: True
- name: get result of create group (check mode)
script: grouplist.sh "{{ ansible_distribution }}"
register: create_group_actual_check
- name: assert create group (check mode)
assert:
that:
- create_group_check is changed
- '"ansibullgroup" not in create_group_actual_check.stdout_lines'
- name: create group
group:
name: ansibullgroup
state: present
register: create_group
- name: get result of create group
script: grouplist.sh "{{ ansible_distribution }}"
register: create_group_actual
- name: assert create group
assert:
that:
- create_group is changed
- create_group.gid is defined
- '"ansibullgroup" in create_group_actual.stdout_lines'
- name: create group (idempotent)
group:
name: ansibullgroup
state: present
register: create_group_again
- name: assert create group (idempotent)
assert:
that:
- not create_group_again is changed
##
## group check
##
- name: run existing group check tests
group:
name: "{{ create_group_actual.stdout_lines|random }}"
state: present
with_sequence: start=1 end=5
register: group_test1
- name: validate results for testcase 1
assert:
that:
- group_test1.results is defined
- group_test1.results|length == 5
- name: validate change results for testcase 1
assert:
that:
- not group_test1 is changed
##
## group add with gid
##
- name: get the next available gid
script: gidget.py
args:
executable: '{{ ansible_python_interpreter }}'
register: gid
- name: create a group with a gid (check mode)
group:
name: ansibullgroup2
gid: '{{ gid.stdout_lines[0] }}'
state: present
register: create_group_gid_check
check_mode: True
- name: get result of create a group with a gid (check mode)
script: grouplist.sh "{{ ansible_distribution }}"
register: create_group_gid_actual_check
- name: assert create group with a gid (check mode)
assert:
that:
- create_group_gid_check is changed
- '"ansibullgroup2" not in create_group_gid_actual_check.stdout_lines'
- name: create a group with a gid
group:
name: ansibullgroup2
gid: '{{ gid.stdout_lines[0] }}'
state: present
register: create_group_gid
- name: get gid of created group
command: "{{ ansible_python_interpreter | quote }} -c \"import grp; print(grp.getgrnam('ansibullgroup2').gr_gid)\""
register: create_group_gid_actual
- name: assert create group with a gid
assert:
that:
- create_group_gid is changed
- create_group_gid.gid | int == gid.stdout_lines[0] | int
- create_group_gid_actual.stdout | trim | int == gid.stdout_lines[0] | int
- name: create a group with a gid (idempotent)
group:
name: ansibullgroup2
gid: '{{ gid.stdout_lines[0] }}'
state: present
register: create_group_gid_again
- name: assert create group with a gid (idempotent)
assert:
that:
- not create_group_gid_again is changed
- create_group_gid_again.gid | int == gid.stdout_lines[0] | int
##
## group remove
##
- name: delete group (check mode)
group:
name: ansibullgroup
state: absent
register: delete_group_check
check_mode: True
- name: get result of delete group (check mode)
script: grouplist.sh "{{ ansible_distribution }}"
register: delete_group_actual_check
- name: assert delete group (check mode)
assert:
that:
- delete_group_check is changed
- '"ansibullgroup" in delete_group_actual_check.stdout_lines'
- name: delete group
group:
name: ansibullgroup
state: absent
register: delete_group
- name: get result of delete group
script: grouplist.sh "{{ ansible_distribution }}"
register: delete_group_actual
- name: assert delete group
assert:
that:
- delete_group is changed
- '"ansibullgroup" not in delete_group_actual.stdout_lines'
- name: delete group (idempotent)
group:
name: ansibullgroup
state: absent
register: delete_group_again
- name: assert delete group (idempotent)
assert:
that:
- not delete_group_again is changed