mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
added handling of zypper exitcode 102: ZYPPER_EXIT_INF_REBOOT_NEEDED (#6534)
* added handling of zypper exitcode 102: ZYPPER_EXIT_INF_REBOOT_NEEDED - Returned after a successful installation of a patch which requires reboot of computer. The exitcode 102 will be treated exactly like 0 by the module internally now, and the changed status will be reported correctly. However, since I preserve the rc 102 in the retvals to allow the playbook to react to the requested reboot, the task must still include a "failed_when: zypper_cmd.rc not in [0, 102]" to not fail in this case. * removed trailing whitespaces * added changelogs fragment * Fix typo. Co-authored-by: Alex <alexgubin@gmx.de> * Add URL. --------- Co-authored-by: Felix Fontein <felix@fontein.de> Co-authored-by: Alex <alexgubin@gmx.de>
This commit is contained in:
parent
5f968fb075
commit
a9fd9f8982
2 changed files with 6 additions and 3 deletions
|
@ -0,0 +1,2 @@
|
||||||
|
bugfixes:
|
||||||
|
- zypper - added handling of zypper exitcode 102. Changed state is set correctly now and rc 102 is still preserved to be evaluated by the playbook (https://github.com/ansible-collections/community.general/pull/6534).
|
|
@ -324,10 +324,11 @@ def parse_zypper_xml(m, cmd, fail_not_found=True, packages=None):
|
||||||
m.fail_json(msg=errmsg, rc=rc, stdout=stdout, stderr=stderr, cmd=cmd)
|
m.fail_json(msg=errmsg, rc=rc, stdout=stdout, stderr=stderr, cmd=cmd)
|
||||||
else:
|
else:
|
||||||
return {}, rc, stdout, stderr
|
return {}, rc, stdout, stderr
|
||||||
elif rc in [0, 106, 103]:
|
elif rc in [0, 102, 103, 106]:
|
||||||
# zypper exit codes
|
# zypper exit codes
|
||||||
# 0: success
|
# 0: success
|
||||||
# 106: signature verification failed
|
# 106: signature verification failed
|
||||||
|
# 102: ZYPPER_EXIT_INF_REBOOT_NEEDED - Returned after a successful installation of a patch which requires reboot of computer.
|
||||||
# 103: zypper was upgraded, run same command again
|
# 103: zypper was upgraded, run same command again
|
||||||
if packages is None:
|
if packages is None:
|
||||||
firstrun = True
|
firstrun = True
|
||||||
|
@ -587,12 +588,12 @@ def main():
|
||||||
elif state in ['installed', 'present', 'latest']:
|
elif state in ['installed', 'present', 'latest']:
|
||||||
packages_changed, retvals = package_present(module, name, state == 'latest')
|
packages_changed, retvals = package_present(module, name, state == 'latest')
|
||||||
|
|
||||||
retvals['changed'] = retvals['rc'] == 0 and bool(packages_changed)
|
retvals['changed'] = retvals['rc'] in [0, 102] and bool(packages_changed)
|
||||||
|
|
||||||
if module._diff:
|
if module._diff:
|
||||||
set_diff(module, retvals, packages_changed)
|
set_diff(module, retvals, packages_changed)
|
||||||
|
|
||||||
if retvals['rc'] != 0:
|
if retvals['rc'] not in [0, 102]:
|
||||||
module.fail_json(msg="Zypper run failed.", **retvals)
|
module.fail_json(msg="Zypper run failed.", **retvals)
|
||||||
|
|
||||||
if not retvals['changed']:
|
if not retvals['changed']:
|
||||||
|
|
Loading…
Reference in a new issue