fix distribution fact for SLES4SAP (#71559)
b6b238a
fixed the SLES4SAP detection, which was at this time ok.
Sadly Suse changed with SLES 15 the /etc/os-release file, so the above
change will no longer work.
This commit updates the SLES4SAP detection regarding
https://www.suse.com/support/kb/doc/?id=000019341.
The symlink realpath is matched with endswith, because in SLES 12+ the
link target is SLES_SAP.prod, but in SLES 11 the link target is
SUSE_SLES_SAP.prod.
This commit is contained in:
parent
6f4aed5377
commit
ea119d3089
5 changed files with 39 additions and 52 deletions
|
@ -0,0 +1,2 @@
|
|||
bugfixes:
|
||||
- facts - fix distribution fact for SLES4SAP (https://github.com/ansible/ansible/pull/71559).
|
|
@ -271,10 +271,6 @@ class DistributionFiles:
|
|||
else:
|
||||
release = "0" # no minor number, so it is the first release
|
||||
suse_facts['distribution_release'] = release
|
||||
# Starting with SLES4SAP12 SP3 NAME reports 'SLES' instead of 'SLES_SAP'
|
||||
# According to SuSe Support (SR101182877871) we should use the CPE_NAME to detect SLES4SAP
|
||||
if re.search("^CPE_NAME=.*sles_sap.*$", line):
|
||||
suse_facts['distribution'] = 'SLES_SAP'
|
||||
elif path == '/etc/SuSE-release':
|
||||
if 'open' in data.lower():
|
||||
data = data.splitlines()
|
||||
|
@ -297,6 +293,10 @@ class DistributionFiles:
|
|||
suse_facts['distribution_release'] = release.group(1)
|
||||
suse_facts['distribution_version'] = collected_facts['distribution_version'] + '.' + release.group(1)
|
||||
|
||||
# See https://www.suse.com/support/kb/doc/?id=000019341 for SLES for SAP
|
||||
if os.path.islink('/etc/products.d/baseproduct') and os.path.realpath('/etc/products.d/baseproduct').endswith('SLES_SAP.prod'):
|
||||
suse_facts['distribution'] = 'SLES_SAP'
|
||||
|
||||
return True, suse_facts
|
||||
|
||||
def parse_distribution_file_Debian(self, name, data, path, collected_facts):
|
||||
|
|
|
@ -1,24 +0,0 @@
|
|||
{
|
||||
"name": "SLES4SAP 12 SP2",
|
||||
"input": {
|
||||
"/etc/SuSE-release": "SUSE Linux Enterprise Server 12 (x86_64)\nVERSION = 12\nPATCHLEVEL = 2\n# This file is deprecated and will be removed in a future service pack or release.\n# Please check /etc/os-release for details about this release.",
|
||||
"/etc/os-release": "NAME=\"SLES_SAP\"\nVERSION=\"12-SP2\"\nVERSION_ID=\"12.2\"\nPRETTY_NAME=\"SUSE Linux Enterprise Server for SAP Applications 12 SP2\"\nID=\"sles_sap\"\nANSI_COLOR=\"0;32\"\nCPE_NAME=\"cpe:/o:suse:sles_sap:12:sp2\""
|
||||
},
|
||||
"platform.dist": ["SuSE", "12", "x86_64"],
|
||||
"distro": {
|
||||
"codename": "",
|
||||
"id": "sles",
|
||||
"name": "SUSE Linux Enterprise Server",
|
||||
"version": "12.2",
|
||||
"version_best": "12.2",
|
||||
"os_release_info": {},
|
||||
"lsb_release_info": {}
|
||||
},
|
||||
"result": {
|
||||
"distribution": "SLES_SAP",
|
||||
"distribution_major_version": "12",
|
||||
"distribution_release": "2",
|
||||
"os_family": "Suse",
|
||||
"distribution_version": "12.2"
|
||||
}
|
||||
}
|
|
@ -1,24 +0,0 @@
|
|||
{
|
||||
"name": "SLES4SAP 12 SP3",
|
||||
"input": {
|
||||
"/etc/SuSE-release": "SUSE Linux Enterprise Server 12 (x86_64)VERSION = 12PATCHLEVEL = 3\n# This file is deprecated and will be removed in a future service pack or release.\n# Please check /etc/os-release for details about this release.",
|
||||
"/etc/os-release": "NAME=\"SLES\"\nVERSION=\"12-SP3\"\nVERSION_ID=\"12.3\"\nPRETTY_NAME=\"SUSE Linux Enterprise Server 12 SP3\"\nID=\"sles\"\nANSI_COLOR=\"0;32\"\nCPE_NAME=\"cpe:/o:suse:sles_sap:12:sp3\""
|
||||
},
|
||||
"platform.dist": ["SuSE", "12", "x86_64"],
|
||||
"distro": {
|
||||
"codename": "",
|
||||
"id": "sles",
|
||||
"name": "SUSE Linux Enterprise Server",
|
||||
"version": "12.3",
|
||||
"version_best": "12.3",
|
||||
"os_release_info": {},
|
||||
"lsb_release_info": {}
|
||||
},
|
||||
"result": {
|
||||
"distribution": "SLES_SAP",
|
||||
"distribution_major_version": "12",
|
||||
"distribution_release": "3",
|
||||
"os_family": "Suse",
|
||||
"distribution_version": "12.3"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Copyright: (c) 2020 Ansible Project
|
||||
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
|
||||
from __future__ import absolute_import, division, print_function
|
||||
__metaclass__ = type
|
||||
|
||||
import pytest
|
||||
|
||||
from ansible.module_utils.facts.system.distribution import DistributionFiles
|
||||
|
||||
|
||||
@pytest.mark.parametrize('realpath', ('SUSE_SLES_SAP.prod', 'SLES_SAP.prod'))
|
||||
def test_distribution_sles4sap_suse_sles_sap(mock_module, mocker, realpath):
|
||||
mocker.patch('os.path.islink', return_value=True)
|
||||
mocker.patch('os.path.realpath', return_value='/etc/products.d/' + realpath)
|
||||
|
||||
test_input = {
|
||||
'name': 'SUSE',
|
||||
'path': '',
|
||||
'data': 'suse',
|
||||
'collected_facts': None,
|
||||
}
|
||||
|
||||
test_result = (
|
||||
True,
|
||||
{
|
||||
'distribution': 'SLES_SAP',
|
||||
}
|
||||
)
|
||||
|
||||
distribution = DistributionFiles(module=mock_module())
|
||||
assert test_result == distribution.parse_distribution_file_SUSE(**test_input)
|
Loading…
Reference in a new issue