Skip to content
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

add linux_distribution to utils #63921

Merged
merged 1 commit into from
Mar 21, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog/63904.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
add linux_distribution to util to stop dep warning
12 changes: 1 addition & 11 deletions salt/grains/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,6 @@
import uuid
from errno import EACCES, EPERM

import distro

import salt.exceptions

# Solve the Chicken and egg problem where grains need to run before any
Expand All @@ -41,6 +39,7 @@
import salt.utils.platform
import salt.utils.stringutils
from salt.utils.network import _clear_interfaces, _get_interfaces
from salt.utils.platform import linux_distribution as _linux_distribution

try:
# pylint: disable=no-name-in-module
Expand Down Expand Up @@ -90,15 +89,6 @@ def _freedesktop_os_release():
return _parse_os_release("/etc/os-release", "/usr/lib/os-release")


# rewrite distro.linux_distribution to allow best=True kwarg in version(), needed to get the minor version numbers in CentOS
def _linux_distribution():
return (
distro.id(),
distro.version(best=True),
distro.codename(),
)


def __init__(opts):
_clear_interfaces()

Expand Down
11 changes: 10 additions & 1 deletion salt/utils/platform.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,20 @@
import subprocess
import sys

from distro import linux_distribution
import distro

from salt.utils.decorators import memoize as real_memoize


def linux_distribution(full_distribution_name=True):
"""
Simple function to return information about the OS distribution (id_name, version, codename).
"""
if full_distribution_name:
return distro.name(), distro.version(best=True), distro.codename()
return distro.id(), distro.version(best=True), distro.codename()


@real_memoize
def is_windows():
"""
Expand Down
2 changes: 1 addition & 1 deletion salt/version.py
Original file line number Diff line number Diff line change
Expand Up @@ -755,7 +755,7 @@ def system_information():
Report system versions.
"""
# Late import so that when getting called from setup.py does not break
from distro import linux_distribution
from salt.utils.platform import linux_distribution

def system_version():
"""
Expand Down
12 changes: 6 additions & 6 deletions tests/pytests/unit/test_version.py
Original file line number Diff line number Diff line change
Expand Up @@ -433,47 +433,47 @@ def test_system_version_linux():
"""

with patch(
"distro.linux_distribution",
"salt.utils.platform.linux_distribution",
MagicMock(return_value=("Manjaro Linux", "20.0.2", "Lysia")),
):
versions = [item for item in system_information()]
version = ("version", "Manjaro Linux 20.0.2 Lysia")
assert version in versions

with patch(
"distro.linux_distribution",
"salt.utils.platform.linux_distribution",
MagicMock(return_value=("Debian GNU/Linux", "9", "stretch")),
):
versions = [item for item in system_information()]
version = ("version", "Debian GNU/Linux 9 stretch")
assert version in versions

with patch(
"distro.linux_distribution",
"salt.utils.platform.linux_distribution",
MagicMock(return_value=("Debian GNU/Linux", "10", "buster")),
):
versions = [item for item in system_information()]
version = ("version", "Debian GNU/Linux 10 buster")
assert version in versions

with patch(
"distro.linux_distribution",
"salt.utils.platform.linux_distribution",
MagicMock(return_value=("CentOS Linux", "7", "Core")),
):
versions = [item for item in system_information()]
version = ("version", "CentOS Linux 7 Core")
assert version in versions

with patch(
"distro.linux_distribution",
"salt.utils.platform.linux_distribution",
MagicMock(return_value=("CentOS Linux", "8", "Core")),
):
versions = [item for item in system_information()]
version = ("version", "CentOS Linux 8 Core")
assert version in versions

with patch(
"distro.linux_distribution",
"salt.utils.platform.linux_distribution",
MagicMock(return_value=("OpenSUSE Leap", "15.1", "")),
):
versions = [item for item in system_information()]
Expand Down