Fix distro fact handling for Flatcar (#77635)

* Fix distro fact handling for Flatcar

The existence of the file /etc/flatcar/update.conf depends on
bootstrap configuration typically provided by the user. For that
reason this file is unsuitable for determining distro facts for
Flatcar Container Linux.

The distribution_release fact is meaningless in the case of Flatcar
since Flatcar doesn't have named releases. The distribution_version
fact, however, IS meaningful and should contain a number such as
"3139.2.0".

- Use /etc/os-release instead of /etc/flatcar/update.conf.
- Drop the distribution_release fact.
- Set the distribution_version fact.
- Update distro test fixture for Flatcar
- Generate the fixture using gen_distribution_version_testcase.py.
- Override result.distribution and result.os_family manually as the
  generator script gives wrong values.
- Use a recent Flatcar version.

Signed-off-by: Johanan Liebermann <jliebermann@microsoft.com>
pull/78727/head
Johanan Liebermann 2 years ago committed by GitHub
parent 77ba025a13
commit fbd828673d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -41,7 +41,6 @@ filelist = [
'/etc/altlinux-release',
'/etc/os-release',
'/etc/coreos/update.conf',
'/etc/flatcar/update.conf',
'/usr/lib/os-release',
]

@ -75,7 +75,7 @@ class DistributionFiles:
{'path': '/etc/sourcemage-release', 'name': 'SMGL'},
{'path': '/usr/lib/os-release', 'name': 'ClearLinux'},
{'path': '/etc/coreos/update.conf', 'name': 'Coreos'},
{'path': '/etc/flatcar/update.conf', 'name': 'Flatcar'},
{'path': '/etc/os-release', 'name': 'Flatcar'},
{'path': '/etc/os-release', 'name': 'NA'},
)
@ -453,15 +453,17 @@ class DistributionFiles:
flatcar_facts = {}
distro = get_distribution()
if distro.lower() == 'flatcar':
if not data:
return False, flatcar_facts
release = re.search("^GROUP=(.*)", data)
if release:
flatcar_facts['distribution_release'] = release.group(1).strip('"')
else:
if distro.lower() != 'flatcar':
return False, flatcar_facts
if not data:
return False, flatcar_facts
version = re.search("VERSION=(.*)", data)
if version:
flatcar_facts['distribution_major_version'] = version.group(1).strip('"').split('.')[0]
flatcar_facts['distribution_version'] = version.group(1).strip('"')
return True, flatcar_facts
def parse_distribution_file_ClearLinux(self, name, data, path, collected_facts):

@ -1,24 +0,0 @@
{
"name": "Flatcar Container Linux",
"input": {
"/usr/lib/os-release": "NAME=\"Flatcar Container Linux by Kinvolk\"\nID=flatcar\nID_LIKE=coreos\nVERSION=2492.0.0\nVERSION_ID=2492.0.0\nBUILD_ID=2020-04-28-2210\nPRETTY_NAME=\"Flatcar Container Linux by Kinvolk 2492.0.0 (Rhyolite)\"\nANSI_COLOR=\"38;5;75\"\nHOME_URL=\"https://flatcar-linux.org/\"\nBUG_REPORT_URL=\"https://issues.flatcar-linux.org\"",
"/etc/lsb-release": "DISTRIB_ID=\"Flatcar Container Linux by Kinvolk\"\nDISTRIB_RELEASE=2492.0.0\nDISTRIB_CODENAME=\"Rhyolite\"\nDISTRIB_DESCRIPTION=\"Flatcar Container Linux by Kinvolk 2492.0.0 (Rhyolite)\""
},
"platform.dist": ["", "", ""],
"distro": {
"codename": "Rhyolite",
"id": "flatcar",
"id_like": "coreos",
"name": "Flatcar",
"version": "2492.0.0",
"version_best": "2492.0.0",
"os_release_info": {},
"lsb_release_info": {}
},
"platform.release": "",
"result": {
"distribution": "Flatcar",
"distribution_major_version": "2492",
"distribution_version": "2492.0.0"
}
}

@ -0,0 +1,43 @@
{
"name": "Flatcar Container Linux by Kinvolk 3139.2.0",
"distro": {
"codename": "",
"id": "flatcar",
"name": "Flatcar Container Linux by Kinvolk",
"version": "3139.2.0",
"version_best": "3139.2.0",
"lsb_release_info": {},
"os_release_info": {
"name": "Flatcar Container Linux by Kinvolk",
"id": "flatcar",
"id_like": "coreos",
"version": "3139.2.0",
"version_id": "3139.2.0",
"build_id": "2022-04-05-1803",
"pretty_name": "Flatcar Container Linux by Kinvolk 3139.2.0 (Oklo)",
"ansi_color": "38;5;75",
"home_url": "https://flatcar-linux.org/",
"bug_report_url": "https://issues.flatcar-linux.org",
"flatcar_board": "amd64-usr",
"cpe_name": "cpe:2.3:o:flatcar-linux:flatcar_linux:3139.2.0:*:*:*:*:*:*:*"
}
},
"input": {
"/etc/os-release": "NAME=\"Flatcar Container Linux by Kinvolk\"\nID=flatcar\nID_LIKE=coreos\nVERSION=3139.2.0\nVERSION_ID=3139.2.0\nBUILD_ID=2022-04-05-1803\nPRETTY_NAME=\"Flatcar Container Linux by Kinvolk 3139.2.0 (Oklo)\"\nANSI_COLOR=\"38;5;75\"\nHOME_URL=\"https://flatcar-linux.org/\"\nBUG_REPORT_URL=\"https://issues.flatcar-linux.org\"\nFLATCAR_BOARD=\"amd64-usr\"\nCPE_NAME=\"cpe:2.3:o:flatcar-linux:flatcar_linux:3139.2.0:*:*:*:*:*:*:*\"\n",
"/etc/lsb-release": "DISTRIB_ID=\"Flatcar Container Linux by Kinvolk\"\nDISTRIB_RELEASE=3139.2.0\nDISTRIB_CODENAME=\"Oklo\"\nDISTRIB_DESCRIPTION=\"Flatcar Container Linux by Kinvolk 3139.2.0 (Oklo)\"\n",
"/usr/lib/os-release": "NAME=\"Flatcar Container Linux by Kinvolk\"\nID=flatcar\nID_LIKE=coreos\nVERSION=3139.2.0\nVERSION_ID=3139.2.0\nBUILD_ID=2022-04-05-1803\nPRETTY_NAME=\"Flatcar Container Linux by Kinvolk 3139.2.0 (Oklo)\"\nANSI_COLOR=\"38;5;75\"\nHOME_URL=\"https://flatcar-linux.org/\"\nBUG_REPORT_URL=\"https://issues.flatcar-linux.org\"\nFLATCAR_BOARD=\"amd64-usr\"\nCPE_NAME=\"cpe:2.3:o:flatcar-linux:flatcar_linux:3139.2.0:*:*:*:*:*:*:*\"\n"
},
"platform.dist": [
"flatcar",
"3139.2.0",
""
],
"result": {
"distribution": "Flatcar",
"distribution_version": "3139.2.0",
"distribution_release": "NA",
"distribution_major_version": "3139",
"os_family": "Flatcar"
},
"platform.release": "5.15.32-flatcar"
}
Loading…
Cancel
Save