mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
yum always return changes dict, not only in check mode (#51987)
Previously the yum module would provide a `changes` dict when executed in check mode but omit it when not in check mode in favor of the `results` data which is raw output from the yum command. This pull request makes that output uniform. Fixes #51724 Signed-off-by: Adam Miller <admiller@redhat.com>
This commit is contained in:
parent
9e71ec71a3
commit
ea0e2bf2b3
4 changed files with 97 additions and 29 deletions
|
@ -0,0 +1,2 @@
|
||||||
|
minor_changes:
|
||||||
|
- yum - provide consistent return data structure when run in check mode and not in check mode
|
|
@ -808,6 +808,8 @@ class YumModule(YumDnf):
|
||||||
|
|
||||||
if self.module.check_mode:
|
if self.module.check_mode:
|
||||||
self.module.exit_json(changed=True, results=res['results'], changes=dict(installed=pkgs))
|
self.module.exit_json(changed=True, results=res['results'], changes=dict(installed=pkgs))
|
||||||
|
else:
|
||||||
|
res['changes'] = dict(installed=pkgs)
|
||||||
|
|
||||||
lang_env = dict(LANG='C', LC_ALL='C', LC_MESSAGES='C')
|
lang_env = dict(LANG='C', LC_ALL='C', LC_MESSAGES='C')
|
||||||
rc, out, err = self.module.run_command(cmd, environ_update=lang_env)
|
rc, out, err = self.module.run_command(cmd, environ_update=lang_env)
|
||||||
|
@ -1043,6 +1045,8 @@ class YumModule(YumDnf):
|
||||||
if pkgs:
|
if pkgs:
|
||||||
if self.module.check_mode:
|
if self.module.check_mode:
|
||||||
self.module.exit_json(changed=True, results=res['results'], changes=dict(removed=pkgs))
|
self.module.exit_json(changed=True, results=res['results'], changes=dict(removed=pkgs))
|
||||||
|
else:
|
||||||
|
res['changes'] = dict(removed=pkgs)
|
||||||
|
|
||||||
# run an actual yum transaction
|
# run an actual yum transaction
|
||||||
if self.autoremove:
|
if self.autoremove:
|
||||||
|
@ -1273,7 +1277,6 @@ class YumModule(YumDnf):
|
||||||
self.module.fail_json(**res)
|
self.module.fail_json(**res)
|
||||||
|
|
||||||
# check_mode output
|
# check_mode output
|
||||||
if self.module.check_mode:
|
|
||||||
to_update = []
|
to_update = []
|
||||||
for w in will_update:
|
for w in will_update:
|
||||||
if w.startswith('@'):
|
if w.startswith('@'):
|
||||||
|
@ -1299,12 +1302,13 @@ class YumModule(YumDnf):
|
||||||
else:
|
else:
|
||||||
res['changes'] = dict(installed=pkgs['install'], updated=to_update)
|
res['changes'] = dict(installed=pkgs['install'], updated=to_update)
|
||||||
|
|
||||||
if will_update or pkgs['install']:
|
|
||||||
res['changed'] = True
|
|
||||||
|
|
||||||
if obsoletes:
|
if obsoletes:
|
||||||
res['obsoletes'] = obsoletes
|
res['obsoletes'] = obsoletes
|
||||||
|
|
||||||
|
# return results before we actually execute stuff
|
||||||
|
if self.module.check_mode:
|
||||||
|
if will_update or pkgs['install']:
|
||||||
|
res['changed'] = True
|
||||||
return res
|
return res
|
||||||
|
|
||||||
# run commands
|
# run commands
|
||||||
|
@ -1340,9 +1344,6 @@ class YumModule(YumDnf):
|
||||||
if rc:
|
if rc:
|
||||||
res['failed'] = True
|
res['failed'] = True
|
||||||
|
|
||||||
if obsoletes:
|
|
||||||
res['obsoletes'] = obsoletes
|
|
||||||
|
|
||||||
return res
|
return res
|
||||||
|
|
||||||
def ensure(self, repoq):
|
def ensure(self, repoq):
|
||||||
|
|
|
@ -0,0 +1,61 @@
|
||||||
|
- name: install htop in check mode to verify changes dict returned
|
||||||
|
yum:
|
||||||
|
name: htop
|
||||||
|
state: present
|
||||||
|
check_mode: yes
|
||||||
|
register: yum_changes_check_mode_result
|
||||||
|
|
||||||
|
- name: install verify changes dict returned in check mode
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- "yum_changes_check_mode_result is success"
|
||||||
|
- "yum_changes_check_mode_result is changed"
|
||||||
|
- "'changes' in yum_changes_check_mode_result"
|
||||||
|
- "'installed' in yum_changes_check_mode_result['changes']"
|
||||||
|
- "'htop' in yum_changes_check_mode_result['changes']['installed']"
|
||||||
|
|
||||||
|
- name: install htop to verify changes dict returned
|
||||||
|
yum:
|
||||||
|
name: htop
|
||||||
|
state: present
|
||||||
|
register: yum_changes_result
|
||||||
|
|
||||||
|
- name: install verify changes dict returned
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- "yum_changes_result is success"
|
||||||
|
- "yum_changes_result is changed"
|
||||||
|
- "'changes' in yum_changes_result"
|
||||||
|
- "'installed' in yum_changes_result['changes']"
|
||||||
|
- "'htop' in yum_changes_result['changes']['installed']"
|
||||||
|
|
||||||
|
- name: remove htop in check mode to verify changes dict returned
|
||||||
|
yum:
|
||||||
|
name: htop
|
||||||
|
state: absent
|
||||||
|
check_mode: yes
|
||||||
|
register: yum_changes_check_mode_result
|
||||||
|
|
||||||
|
- name: remove verify changes dict returned in check mode
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- "yum_changes_check_mode_result is success"
|
||||||
|
- "yum_changes_check_mode_result is changed"
|
||||||
|
- "'changes' in yum_changes_check_mode_result"
|
||||||
|
- "'removed' in yum_changes_check_mode_result['changes']"
|
||||||
|
- "'htop' in yum_changes_check_mode_result['changes']['removed']"
|
||||||
|
|
||||||
|
- name: remove htop to verify changes dict returned
|
||||||
|
yum:
|
||||||
|
name: htop
|
||||||
|
state: absent
|
||||||
|
register: yum_changes_result
|
||||||
|
|
||||||
|
- name: remove verify changes dict returned
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- "yum_changes_result is success"
|
||||||
|
- "yum_changes_result is changed"
|
||||||
|
- "'changes' in yum_changes_result"
|
||||||
|
- "'removed' in yum_changes_result['changes']"
|
||||||
|
- "'htop' in yum_changes_result['changes']['removed']"
|
|
@ -71,3 +71,7 @@
|
||||||
- (ansible_distribution in ['RedHat', 'CentOS', 'ScientificLinux'] and ansible_distribution_major_version|int > 6)
|
- (ansible_distribution in ['RedHat', 'CentOS', 'ScientificLinux'] and ansible_distribution_major_version|int > 6)
|
||||||
|
|
||||||
- include: 'proxy.yml'
|
- include: 'proxy.yml'
|
||||||
|
|
||||||
|
- include: 'check_mode_consistency.yml'
|
||||||
|
when:
|
||||||
|
- (ansible_distribution in ['RedHat', 'CentOS', 'ScientificLinux'] and ansible_distribution_major_version|int == 7)
|
||||||
|
|
Loading…
Reference in a new issue