Fix ansible_pkg_mgr is unknown in Kylin Linux (#81314)

Signed-off-by: bo.jiang <bo.jiang@daocloud.io>
pull/81351/head
ERIK 11 months ago committed by GitHub
parent 6a8c51bb9c
commit a5ccc0124f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -0,0 +1,2 @@
bugfixes:
- pkg_mgr.py - Fix `ansible_pkg_mgr` is unknown in Kylin Linux (https://github.com/ansible/ansible/issues/81332)

@ -85,13 +85,17 @@ class PkgMgrFactCollector(BaseFactCollector):
break
try:
distro_major_ver = int(collected_facts['ansible_distribution_major_version'])
major_version = collected_facts['ansible_distribution_major_version']
if collected_facts['ansible_distribution'] == 'Kylin Linux Advanced Server':
major_version = major_version.lstrip('V')
distro_major_ver = int(major_version)
except ValueError:
# a non integer magical future version
return self._default_unknown_pkg_mgr
if (
(collected_facts['ansible_distribution'] == 'Fedora' and distro_major_ver < 23)
or (collected_facts['ansible_distribution'] == 'Kylin Linux Advanced Server' and distro_major_ver < 10)
or (collected_facts['ansible_distribution'] == 'Amazon' and distro_major_ver < 2022)
or (collected_facts['ansible_distribution'] == 'TencentOS' and distro_major_ver < 3)
or distro_major_ver < 8 # assume RHEL or a clone

@ -14,9 +14,21 @@ _FEDORA_FACTS = {
"ansible_os_family": "RedHat"
}
_KYLIN_FACTS = {
"ansible_distribution": "Kylin Linux Advanced Server",
"ansible_distribution_major_version": "V10",
"ansible_os_family": "RedHat"
}
# NOTE pkg_mgr == "dnf" means the dnf module for the dnf 4 or below
def test_default_dnf_version_detection_kylin_dnf4(mocker):
mocker.patch("os.path.exists", lambda p: p in ("/usr/bin/dnf", "/usr/bin/dnf-3"))
mocker.patch("os.path.realpath", lambda p: {"/usr/bin/dnf": "/usr/bin/dnf-3"}.get(p, p))
assert PkgMgrFactCollector().collect(collected_facts=_KYLIN_FACTS).get("pkg_mgr") == "dnf"
def test_default_dnf_version_detection_fedora_dnf4(mocker):
mocker.patch("os.path.exists", lambda p: p in ("/usr/bin/dnf", "/usr/bin/dnf-3"))
mocker.patch("os.path.realpath", lambda p: {"/usr/bin/dnf": "/usr/bin/dnf-3"}.get(p, p))

Loading…
Cancel
Save