-
Notifications
You must be signed in to change notification settings - Fork 5.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[BUG] Changing OS grains after installing/removing lsb-release #61618
Labels
Milestone
Comments
While looking at the test cases, I found another one that has discrepancies when removing the lsb-release data: Astra Linux |
bdrung
added a commit
to bdrung/salt
that referenced
this issue
Sep 30, 2022
Most Linux distributions ship an os-release file by default. Some do not ship lsb-release information, but they can be installed afterwards. Installing/Removing lsb-release can lead to different OS grain values. | OS | grain | without lsb-release | with lsb-release | |------------------|------------|----------------------------------|------------------| | AlmaLinux 8 | oscodename | AlmaLinux 8.5 (Arctic Sphynx) | ArcticSphynx | | Astra CE | os | Astra (Orel) | AstraLinuxCE | | Astra CE | os_family | Astra (Orel) | Debian | | Astra CE | osfullname | Astra Linux (Orel) | AstraLinuxCE | | Astra CE 2.12.40 | osfinger | Astra Linux (Orel)-2 | AstraLinuxCE-2 | | Debian | osfullname | Debian GNU/Linux | Debian | | Mendel | osfullname | Mendel GNU/Linux | Mendel | | Mendel 10 | osfinger | Mendel GNU/Linux-10 | Mendel-10 | | Mint | osfullname | Linux Mint | Linuxmint | | Mint 20.3 | osfinger | Linuxmint-20 | Linux Mint-20 | | Pop | osfullname | Pop!_OS | Pop | | Pop 20.04 | osfinger | Pop!_OS-20 | Pop-20 | | Rocky | osfullname | Rocky Linux | Rocky | | Rocky 8 | osfinger | Rocky Linux-8 | Rocky-8 | | Rocky 8 | oscodename | Rocky Linux 8.5 (Green Obsidian) | GreenObsidian | The current code that determines the OS grains on Linux is a mess: First lsb-release is queried. If that fails, fall back to read os-release and parse some `/etc/*-release` files. Then query `_linux_distribution` and use a mixtures of those for the OS grains. `_linux_distribution` queries the Python `distro` library. `distro` queries the os-release file, lsb-release, and then `/etc/*-release`. Rewrite the code that determines the OS grains on Linux. Solely rely on the data provided by the os-release file. To not cause regressions, only switch the distribution that has been tested. All other distributions will use the legacy code (which was moved to `_legacy_linux_distribution_data`). The new code derives the `os_family` grain from the `ID_LIKE` field from os-release (see saltstack#59061 for this feature request). To enable this feature, the new code needs to be used by default (and not just for selected distributions). This commit introduces a few changes to the OS grains: * AlmaLinux and Rocky Linux extract the codename from the `VERSION` field now instead of using the full `PRETTY_NAME`. * Mendel uses now `Mendel GNU/Linux` as `osfullname` and correctly extracts the `osrelease` from `PRETTY_NAME`. * Pop!_OS changes the `osfullname` from `Pop` to `Pop!_OS`. * Astra Linux changes the `osfullname` from `AstraLinuxCE` to `Astra Linux (Orel)` and `AstraLinuxSE` to `Astra Linux (Smolensk)` respectively. Fixes saltstack#61618 Signed-off-by: Benjamin Drung <benjamin.drung@ionos.com>
garethgreenaway
added
Sulfur v3006.0
release code name and version
and removed
needs-triage
labels
Nov 1, 2022
bdrung
added a commit
to bdrung/salt
that referenced
this issue
Nov 20, 2022
Most Linux distributions ship an os-release file by default. Some do not ship lsb-release information, but they can be installed afterwards. Installing/Removing lsb-release can lead to different OS grain values. | OS | grain | without lsb-release | with lsb-release | |------------------|------------|----------------------------------|------------------| | AlmaLinux 8 | oscodename | AlmaLinux 8.5 (Arctic Sphynx) | ArcticSphynx | | Astra CE | os | Astra (Orel) | AstraLinuxCE | | Astra CE | os_family | Astra (Orel) | Debian | | Astra CE | osfullname | Astra Linux (Orel) | AstraLinuxCE | | Astra CE 2.12.40 | osfinger | Astra Linux (Orel)-2 | AstraLinuxCE-2 | | Debian | osfullname | Debian GNU/Linux | Debian | | Mendel | osfullname | Mendel GNU/Linux | Mendel | | Mendel 10 | osfinger | Mendel GNU/Linux-10 | Mendel-10 | | Mint | osfullname | Linux Mint | Linuxmint | | Mint 20.3 | osfinger | Linuxmint-20 | Linux Mint-20 | | Pop | osfullname | Pop!_OS | Pop | | Pop 20.04 | osfinger | Pop!_OS-20 | Pop-20 | | Rocky | osfullname | Rocky Linux | Rocky | | Rocky 8 | osfinger | Rocky Linux-8 | Rocky-8 | | Rocky 8 | oscodename | Rocky Linux 8.5 (Green Obsidian) | GreenObsidian | The current code that determines the OS grains on Linux is a mess: First lsb-release is queried. If that fails, fall back to read os-release and parse some `/etc/*-release` files. Then query `_linux_distribution` and use a mixtures of those for the OS grains. `_linux_distribution` queries the Python `distro` library. `distro` queries the os-release file, lsb-release, and then `/etc/*-release`. Rewrite the code that determines the OS grains on Linux. Solely rely on the data provided by the os-release file. To not cause regressions, only switch the distribution that has been tested. All other distributions will use the legacy code (which was moved to `_legacy_linux_distribution_data`). The new code derives the `os_family` grain from the `ID_LIKE` field from os-release (see saltstack#59061 for this feature request). To enable this feature, the new code needs to be used by default (and not just for selected distributions). This commit introduces a few changes to the OS grains: * AlmaLinux and Rocky Linux extract the codename from the `VERSION` field now instead of using the full `PRETTY_NAME`. * Mendel uses now `Mendel GNU/Linux` as `osfullname` and correctly extracts the `osrelease` from `PRETTY_NAME`. * Pop!_OS changes the `osfullname` from `Pop` to `Pop!_OS`. * Astra Linux changes the `osfullname` from `AstraLinuxCE` to `Astra Linux (Orel)` and `AstraLinuxSE` to `Astra Linux (Smolensk)` respectively. Fixes saltstack#61618 Signed-off-by: Benjamin Drung <benjamin.drung@ionos.com>
Ch3LL
pushed a commit
that referenced
this issue
Nov 30, 2022
Most Linux distributions ship an os-release file by default. Some do not ship lsb-release information, but they can be installed afterwards. Installing/Removing lsb-release can lead to different OS grain values. | OS | grain | without lsb-release | with lsb-release | |------------------|------------|----------------------------------|------------------| | AlmaLinux 8 | oscodename | AlmaLinux 8.5 (Arctic Sphynx) | ArcticSphynx | | Astra CE | os | Astra (Orel) | AstraLinuxCE | | Astra CE | os_family | Astra (Orel) | Debian | | Astra CE | osfullname | Astra Linux (Orel) | AstraLinuxCE | | Astra CE 2.12.40 | osfinger | Astra Linux (Orel)-2 | AstraLinuxCE-2 | | Debian | osfullname | Debian GNU/Linux | Debian | | Mendel | osfullname | Mendel GNU/Linux | Mendel | | Mendel 10 | osfinger | Mendel GNU/Linux-10 | Mendel-10 | | Mint | osfullname | Linux Mint | Linuxmint | | Mint 20.3 | osfinger | Linuxmint-20 | Linux Mint-20 | | Pop | osfullname | Pop!_OS | Pop | | Pop 20.04 | osfinger | Pop!_OS-20 | Pop-20 | | Rocky | osfullname | Rocky Linux | Rocky | | Rocky 8 | osfinger | Rocky Linux-8 | Rocky-8 | | Rocky 8 | oscodename | Rocky Linux 8.5 (Green Obsidian) | GreenObsidian | The current code that determines the OS grains on Linux is a mess: First lsb-release is queried. If that fails, fall back to read os-release and parse some `/etc/*-release` files. Then query `_linux_distribution` and use a mixtures of those for the OS grains. `_linux_distribution` queries the Python `distro` library. `distro` queries the os-release file, lsb-release, and then `/etc/*-release`. Rewrite the code that determines the OS grains on Linux. Solely rely on the data provided by the os-release file. To not cause regressions, only switch the distribution that has been tested. All other distributions will use the legacy code (which was moved to `_legacy_linux_distribution_data`). The new code derives the `os_family` grain from the `ID_LIKE` field from os-release (see #59061 for this feature request). To enable this feature, the new code needs to be used by default (and not just for selected distributions). This commit introduces a few changes to the OS grains: * AlmaLinux and Rocky Linux extract the codename from the `VERSION` field now instead of using the full `PRETTY_NAME`. * Mendel uses now `Mendel GNU/Linux` as `osfullname` and correctly extracts the `osrelease` from `PRETTY_NAME`. * Pop!_OS changes the `osfullname` from `Pop` to `Pop!_OS`. * Astra Linux changes the `osfullname` from `AstraLinuxCE` to `Astra Linux (Orel)` and `AstraLinuxSE` to `Astra Linux (Smolensk)` respectively. Fixes #61618 Signed-off-by: Benjamin Drung <benjamin.drung@ionos.com>
19 tasks
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
Description
Most Linux distributions ship an os-release file by default. Some do not ship lsb-release information, but they can be installed afterwards. Installing/Removing lsb-release can lead to different OS grain values:
Setup
On an affected Linux distribution (mentioned above), install or uninstall lsb-release. E.g. on Rocky Linux:
Steps to Reproduce the behavior
On an affected Linux distribution, compare the OS grains:
One time with lsb-release package installed and once with it removed.
Expected behavior
The OS grains should be identical whether lsb-release is installed or not.
Versions Report
salt 3004 and master branch as of 2022-02-10.
The text was updated successfully, but these errors were encountered: