diff --git a/lib/ansible/module_utils/common/sys_info.py b/lib/ansible/module_utils/common/sys_info.py index 0e4dd3c8799..d762410a7f6 100644 --- a/lib/ansible/module_utils/common/sys_info.py +++ b/lib/ansible/module_utils/common/sys_info.py @@ -29,12 +29,12 @@ def get_distribution(): distribution = None if platform.system() == 'Linux': - distribution = distro.name().capitalize() + distribution = distro.id().capitalize() - # FIXME: Would we need to normalize these if we used: id() instead of name()? - distribution_words = distribution.split() - if 'Amazon' in distribution_words: + if distribution == 'Amzn': distribution = 'Amazon' + elif distribution == 'Rhel': + distribution = 'Redhat' elif not distribution: distribution = 'OtherLinux' diff --git a/lib/ansible/modules/system/hostname.py b/lib/ansible/modules/system/hostname.py index 89560a103e1..9a92bfd7302 100644 --- a/lib/ansible/modules/system/hostname.py +++ b/lib/ansible/modules/system/hostname.py @@ -579,13 +579,7 @@ class SLESHostname(Hostname): class OpenSUSEHostname(Hostname): platform = 'Linux' - distribution = 'Opensuse leap' - strategy_class = SystemdStrategy - - -class TumbleweedHostname(Hostname): - platform = 'Linux' - distribution = 'Opensuse tumbleweed' + distribution = 'Opensuse' strategy_class = SystemdStrategy @@ -595,33 +589,9 @@ class ArchHostname(Hostname): strategy_class = SystemdStrategy -class RedHat5Hostname(Hostname): - platform = 'Linux' - distribution = 'Redhat' - strategy_class = RedHatStrategy - - class RHELHostname(Hostname): platform = 'Linux' - distribution = 'Red hat enterprise linux' - strategy_class = RedHatStrategy - - -class RedHatServerHostname(Hostname): - platform = 'Linux' - distribution = 'Red hat enterprise linux server' - strategy_class = RedHatStrategy - - -class RedHatWorkstationHostname(Hostname): - platform = 'Linux' - distribution = 'Red hat enterprise linux workstation' - strategy_class = RedHatStrategy - - -class RedHatAtomicHostname(Hostname): - platform = 'Linux' - distribution = 'Red hat enterprise linux atomic host' + distribution = 'Redhat' strategy_class = RedHatStrategy @@ -631,51 +601,27 @@ class CentOSHostname(Hostname): strategy_class = RedHatStrategy -class CentOSLinuxHostname(Hostname): - platform = 'Linux' - distribution = 'Centos linux' - strategy_class = RedHatStrategy - - class CloudlinuxHostname(Hostname): platform = 'Linux' distribution = 'Cloudlinux' strategy_class = RedHatStrategy -class CloudlinuxServerHostname(Hostname): - platform = 'Linux' - distribution = 'Cloudlinux server' - strategy_class = RedHatStrategy - - class ScientificHostname(Hostname): platform = 'Linux' distribution = 'Scientific' strategy_class = RedHatStrategy -class ScientificLinuxHostname(Hostname): - platform = 'Linux' - distribution = 'Scientific linux' - strategy_class = RedHatStrategy - - -class ScientificLinuxCERNHostname(Hostname): - platform = 'Linux' - distribution = 'Scientific linux cern slc' - strategy_class = RedHatStrategy - - class OracleLinuxHostname(Hostname): platform = 'Linux' - distribution = 'Oracle linux server' + distribution = 'Oracle' strategy_class = RedHatStrategy class VirtuozzoLinuxHostname(Hostname): platform = 'Linux' - distribution = 'Virtuozzo linux' + distribution = 'Virtuozzo' strategy_class = RedHatStrategy @@ -685,12 +631,6 @@ class AmazonLinuxHostname(Hostname): strategy_class = RedHatStrategy -class SangomaLinuxHostname(Hostname): - platform = 'Linux' - distribution = 'Derived from red hat enterprise linux ' - strategy_class = RedHatStrategy - - class DebianHostname(Hostname): platform = 'Linux' distribution = 'Debian' @@ -729,13 +669,13 @@ class DevuanHostname(Hostname): class RaspbianHostname(Hostname): platform = 'Linux' - distribution = 'Raspbian gnu/linux' + distribution = 'Raspbian' strategy_class = DebianStrategy class GentooHostname(Hostname): platform = 'Linux' - distribution = 'Gentoo base system' + distribution = 'Gentoo' strategy_class = OpenRCStrategy diff --git a/test/units/module_utils/basic/test_platform_distribution.py b/test/units/module_utils/basic/test_platform_distribution.py index e62f33f4562..5a80fa71470 100644 --- a/test/units/module_utils/basic/test_platform_distribution.py +++ b/test/units/module_utils/basic/test_platform_distribution.py @@ -52,21 +52,60 @@ def test_get_distribution_not_linux(): @pytest.mark.usefixtures("platform_linux") class TestGetDistribution: - """ Tests for get_distribution that have to find somethine""" + """Tests for get_distribution that have to find something""" def test_distro_known(self): - with patch('ansible.module_utils.distro.name', return_value="foo"): + with patch('ansible.module_utils.distro.id', return_value="alpine"): + assert get_distribution() == "Alpine" + + with patch('ansible.module_utils.distro.id', return_value="arch"): + assert get_distribution() == "Arch" + + with patch('ansible.module_utils.distro.id', return_value="centos"): + assert get_distribution() == "Centos" + + with patch('ansible.module_utils.distro.id', return_value="clear-linux-os"): + assert get_distribution() == "Clear-linux-os" + + with patch('ansible.module_utils.distro.id', return_value="coreos"): + assert get_distribution() == "Coreos" + + with patch('ansible.module_utils.distro.id', return_value="debian"): + assert get_distribution() == "Debian" + + with patch('ansible.module_utils.distro.id', return_value="linuxmint"): + assert get_distribution() == "Linuxmint" + + with patch('ansible.module_utils.distro.id', return_value="opensuse"): + assert get_distribution() == "Opensuse" + + with patch('ansible.module_utils.distro.id', return_value="oracle"): + assert get_distribution() == "Oracle" + + with patch('ansible.module_utils.distro.id', return_value="raspian"): + assert get_distribution() == "Raspian" + + with patch('ansible.module_utils.distro.id', return_value="rhel"): + assert get_distribution() == "Redhat" + + with patch('ansible.module_utils.distro.id', return_value="ubuntu"): + assert get_distribution() == "Ubuntu" + + with patch('ansible.module_utils.distro.id', return_value="virtuozzo"): + assert get_distribution() == "Virtuozzo" + + with patch('ansible.module_utils.distro.id', return_value="foo"): assert get_distribution() == "Foo" def test_distro_unknown(self): - with patch('ansible.module_utils.distro.name', return_value=""): + with patch('ansible.module_utils.distro.id', return_value=""): assert get_distribution() == "OtherLinux" - def test_distro_amazon_part_of_another_name(self): - with patch('ansible.module_utils.distro.name', return_value="AmazonFooBar"): - assert get_distribution() == "Amazonfoobar" + def test_distro_amazon_linux_short(self): + with patch('ansible.module_utils.distro.id', return_value="amzn"): + assert get_distribution() == "Amazon" - def test_distro_amazon_linux(self): - with patch('ansible.module_utils.distro.name', return_value="Amazon Linux AMI"): + def test_distro_amazon_linux_long(self): + with patch('ansible.module_utils.distro.id', return_value="amazon"): assert get_distribution() == "Amazon" diff --git a/test/units/module_utils/common/test_sys_info.py b/test/units/module_utils/common/test_sys_info.py index ba2d7e92dcb..1fd31bac967 100644 --- a/test/units/module_utils/common/test_sys_info.py +++ b/test/units/module_utils/common/test_sys_info.py @@ -39,21 +39,60 @@ def test_get_distribution_not_linux(): @pytest.mark.usefixtures("platform_linux") class TestGetDistribution: - """ Tests for get_distribution that have to find somethine""" + """Tests for get_distribution that have to find something""" def test_distro_known(self): - with patch('ansible.module_utils.distro.name', return_value="foo"): + with patch('ansible.module_utils.distro.id', return_value="alpine"): + assert get_distribution() == "Alpine" + + with patch('ansible.module_utils.distro.id', return_value="arch"): + assert get_distribution() == "Arch" + + with patch('ansible.module_utils.distro.id', return_value="centos"): + assert get_distribution() == "Centos" + + with patch('ansible.module_utils.distro.id', return_value="clear-linux-os"): + assert get_distribution() == "Clear-linux-os" + + with patch('ansible.module_utils.distro.id', return_value="coreos"): + assert get_distribution() == "Coreos" + + with patch('ansible.module_utils.distro.id', return_value="debian"): + assert get_distribution() == "Debian" + + with patch('ansible.module_utils.distro.id', return_value="linuxmint"): + assert get_distribution() == "Linuxmint" + + with patch('ansible.module_utils.distro.id', return_value="opensuse"): + assert get_distribution() == "Opensuse" + + with patch('ansible.module_utils.distro.id', return_value="oracle"): + assert get_distribution() == "Oracle" + + with patch('ansible.module_utils.distro.id', return_value="raspian"): + assert get_distribution() == "Raspian" + + with patch('ansible.module_utils.distro.id', return_value="rhel"): + assert get_distribution() == "Redhat" + + with patch('ansible.module_utils.distro.id', return_value="ubuntu"): + assert get_distribution() == "Ubuntu" + + with patch('ansible.module_utils.distro.id', return_value="virtuozzo"): + assert get_distribution() == "Virtuozzo" + + with patch('ansible.module_utils.distro.id', return_value="foo"): assert get_distribution() == "Foo" def test_distro_unknown(self): - with patch('ansible.module_utils.distro.name', return_value=""): + with patch('ansible.module_utils.distro.id', return_value=""): assert get_distribution() == "OtherLinux" - def test_distro_amazon_part_of_another_name(self): - with patch('ansible.module_utils.distro.name', return_value="AmazonFooBar"): - assert get_distribution() == "Amazonfoobar" + def test_distro_amazon_linux_short(self): + with patch('ansible.module_utils.distro.id', return_value="amzn"): + assert get_distribution() == "Amazon" - def test_distro_amazon_linux(self): - with patch('ansible.module_utils.distro.name', return_value="Amazon Linux AMI"): + def test_distro_amazon_linux_long(self): + with patch('ansible.module_utils.distro.id', return_value="amazon"): assert get_distribution() == "Amazon"