mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
yum: allow for downgrade using rpm file (#31647)
This commit is contained in:
parent
1d86205933
commit
ee6ba5d590
2 changed files with 40 additions and 3 deletions
|
@ -747,16 +747,20 @@ def install(module, items, repoq, yum_basecmd, conf_file, en_repos, dis_repos, i
|
||||||
(name, ver, rel, epoch, arch) = splitFilename(envra)
|
(name, ver, rel, epoch, arch) = splitFilename(envra)
|
||||||
installed_pkgs = is_installed(module, repoq, name, conf_file, en_repos=en_repos, dis_repos=dis_repos, installroot=installroot)
|
installed_pkgs = is_installed(module, repoq, name, conf_file, en_repos=en_repos, dis_repos=dis_repos, installroot=installroot)
|
||||||
|
|
||||||
# TODO support downgrade for rpm files
|
|
||||||
if len(installed_pkgs) == 1:
|
if len(installed_pkgs) == 1:
|
||||||
installed_pkg = installed_pkgs[0]
|
installed_pkg = installed_pkgs[0]
|
||||||
(cur_name, cur_ver, cur_rel, cur_epoch, cur_arch) = splitFilename(installed_pkg)
|
(cur_name, cur_ver, cur_rel, cur_epoch, cur_arch) = splitFilename(installed_pkg)
|
||||||
cur_epoch = cur_epoch or '0'
|
cur_epoch = cur_epoch or '0'
|
||||||
compare = compareEVR((cur_epoch, cur_ver, cur_rel), (epoch, ver, rel))
|
compare = compareEVR((cur_epoch, cur_ver, cur_rel), (epoch, ver, rel))
|
||||||
|
|
||||||
# compare > 0 (higher version is installed) or compare == 0 (exact version is installed)
|
# compare > 0 -> higher version is installed
|
||||||
if compare >= 0:
|
# compare == 0 -> exact version is installed
|
||||||
|
# compare < 0 -> lower version is installed
|
||||||
|
if compare > 0 and allow_downgrade:
|
||||||
|
downgrade_candidate = True
|
||||||
|
elif compare >= 0:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# else: if there are more installed packages with the same name, that would mean
|
# else: if there are more installed packages with the same name, that would mean
|
||||||
# kernel, gpg-pubkey or like, so just let yum deal with it and try to install it
|
# kernel, gpg-pubkey or like, so just let yum deal with it and try to install it
|
||||||
|
|
||||||
|
|
|
@ -499,3 +499,36 @@
|
||||||
- "'rc' in yum_result"
|
- "'rc' in yum_result"
|
||||||
- "'results' in yum_result"
|
- "'results' in yum_result"
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
|
- name: Make sure latest foo is installed
|
||||||
|
yum:
|
||||||
|
name: foo
|
||||||
|
state: latest
|
||||||
|
|
||||||
|
- name: Downgrade foo using rpm file
|
||||||
|
yum:
|
||||||
|
name: "{{ repodir }}/foo-1.0-1.{{ ansible_architecture }}.rpm"
|
||||||
|
state: present
|
||||||
|
allow_downgrade: yes
|
||||||
|
register: yum_result
|
||||||
|
|
||||||
|
- name: Check foo with rpm
|
||||||
|
shell: rpm -q foo
|
||||||
|
register: rpm_result
|
||||||
|
|
||||||
|
- name: Verify installation
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- "rpm_result.rc == 0"
|
||||||
|
- "yum_result.rc == 0"
|
||||||
|
- "yum_result.changed"
|
||||||
|
- "not yum_result|failed"
|
||||||
|
- "rpm_result.stdout.startswith('foo-1.0-1')"
|
||||||
|
|
||||||
|
- name: Verify yum module outputs
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- "'changed' in yum_result"
|
||||||
|
- "'msg' in yum_result"
|
||||||
|
- "'rc' in yum_result"
|
||||||
|
- "'results' in yum_result"
|
||||||
|
# ============================================================================
|
||||||
|
|
Loading…
Reference in a new issue