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. (cherry picked from commitea119d3089
)
This commit is contained in:
parent
d53d247c84
commit
505df0d564
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:
|
else:
|
||||||
release = "0" # no minor number, so it is the first release
|
release = "0" # no minor number, so it is the first release
|
||||||
suse_facts['distribution_release'] = 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':
|
elif path == '/etc/SuSE-release':
|
||||||
if 'open' in data.lower():
|
if 'open' in data.lower():
|
||||||
data = data.splitlines()
|
data = data.splitlines()
|
||||||
|
@ -297,6 +293,10 @@ class DistributionFiles:
|
||||||
suse_facts['distribution_release'] = release.group(1)
|
suse_facts['distribution_release'] = release.group(1)
|
||||||
suse_facts['distribution_version'] = collected_facts['distribution_version'] + '.' + 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
|
return True, suse_facts
|
||||||
|
|
||||||
def parse_distribution_file_Debian(self, name, data, path, collected_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