diff --git a/.pylintrc b/.pylintrc index e6aa62bcc5..fa647fe56a 100644 --- a/.pylintrc +++ b/.pylintrc @@ -54,8 +54,7 @@ disable= too-many-statements, multiple-statements, duplicate-except, - keyword-arg-before-vararg, - deprecated-method + keyword-arg-before-vararg [BASIC] # Variable names can be 1 to 31 characters long, with lowercase and underscores diff --git a/lower-constraints.txt b/lower-constraints.txt index c2038dc9ec..4f1604454d 100644 --- a/lower-constraints.txt +++ b/lower-constraints.txt @@ -25,6 +25,7 @@ debtcollector==1.19.0 decorator==4.2.1 deprecation==2.0 diskimage-builder==1.1.2 +distro===1.2.0 doc8==0.6.0 docutils==0.14 dogpile.cache==0.6.5 diff --git a/octavia/amphorae/backends/agent/api_server/osutils.py b/octavia/amphorae/backends/agent/api_server/osutils.py index daf10ac913..b2190aea94 100644 --- a/octavia/amphorae/backends/agent/api_server/osutils.py +++ b/octavia/amphorae/backends/agent/api_server/osutils.py @@ -14,11 +14,11 @@ import ipaddress import os -import platform import shutil import stat import subprocess +import distro import jinja2 from oslo_config import cfg from oslo_log import log as logging @@ -45,7 +45,7 @@ class BaseOS(object): @classmethod def get_os_util(cls): - os_name = platform.linux_distribution(full_distribution_name=False)[0] + os_name = distro.id() for subclass in BaseOS.__subclasses__(): if subclass.is_os_name(os_name): return subclass(os_name) @@ -219,7 +219,7 @@ class Ubuntu(BaseOS): @classmethod def is_os_name(cls, os_name): - return os_name in ['Ubuntu'] + return os_name in ['ubuntu'] def cmd_get_version_of_installed_package(self, package_name): return "dpkg --status {name}".format(name=package_name) @@ -303,7 +303,7 @@ class RH(BaseOS): @classmethod def is_os_name(cls, os_name): - return os_name in ['fedora', 'redhat', 'centos'] + return os_name in ['fedora', 'rhel', 'centos'] def cmd_get_version_of_installed_package(self, package_name): return "rpm -qi {name}".format(name=package_name) diff --git a/octavia/tests/functional/amphorae/backend/agent/api_server/test_server.py b/octavia/tests/functional/amphorae/backend/agent/api_server/test_server.py index 94f6cb57be..861d5727a3 100644 --- a/octavia/tests/functional/amphorae/backend/agent/api_server/test_server.py +++ b/octavia/tests/functional/amphorae/backend/agent/api_server/test_server.py @@ -45,13 +45,13 @@ class TestServerTestCase(base.TestCase): def setUp(self): super(TestServerTestCase, self).setUp() - with mock.patch('platform.linux_distribution', - return_value=['Ubuntu', 'Foo', 'Bar']): + with mock.patch('distro.id', + return_value='ubuntu'): self.ubuntu_test_server = server.Server() self.ubuntu_app = self.ubuntu_test_server.app.test_client() - with mock.patch('platform.linux_distribution', - return_value=['centos', 'Foo', 'Bar']): + with mock.patch('distro.id', + return_value='centos'): self.centos_test_server = server.Server() self.centos_app = self.centos_test_server.app.test_client() diff --git a/octavia/tests/unit/amphorae/backends/agent/api_server/test_listener.py b/octavia/tests/unit/amphorae/backends/agent/api_server/test_listener.py index 4d482ec7a7..32927221cc 100644 --- a/octavia/tests/unit/amphorae/backends/agent/api_server/test_listener.py +++ b/octavia/tests/unit/amphorae/backends/agent/api_server/test_listener.py @@ -34,8 +34,8 @@ class ListenerTestCase(base.TestCase): self.jinja_cfg = jinja_cfg.JinjaTemplater( base_amp_path=BASE_AMP_PATH, base_crt_dir=BASE_CRT_PATH) - self.mock_platform = mock.patch("platform.linux_distribution").start() - self.mock_platform.return_value = ("Ubuntu",) + self.mock_platform = mock.patch("distro.id").start() + self.mock_platform.return_value = "ubuntu" self.test_listener = listener.Listener() def test_parse_haproxy_config(self): diff --git a/octavia/tests/unit/amphorae/backends/agent/api_server/test_osutils.py b/octavia/tests/unit/amphorae/backends/agent/api_server/test_osutils.py index 762c695e4b..f71e612f3e 100644 --- a/octavia/tests/unit/amphorae/backends/agent/api_server/test_osutils.py +++ b/octavia/tests/unit/amphorae/backends/agent/api_server/test_osutils.py @@ -32,33 +32,33 @@ class TestOSUtils(base.TestCase): self.base_os_util = osutils.BaseOS('unknown') - with mock.patch('platform.linux_distribution', - return_value=['Ubuntu', 'Foo', 'Bar']): + with mock.patch('distro.id', + return_value='ubuntu'): self.ubuntu_os_util = osutils.BaseOS.get_os_util() - with mock.patch('platform.linux_distribution', - return_value=['centos', 'Foo', 'Bar']): + with mock.patch('distro.id', + return_value='centos'): self.rh_os_util = osutils.BaseOS.get_os_util() def test_get_os_util(self): - with mock.patch('platform.linux_distribution', - return_value=['Ubuntu', 'Foo', 'Bar']): + with mock.patch('distro.id', + return_value='ubuntu'): returned_cls = osutils.BaseOS.get_os_util() self.assertIsInstance(returned_cls, osutils.Ubuntu) - with mock.patch('platform.linux_distribution', - return_value=['fedora', 'Foo', 'Bar']): + with mock.patch('distro.id', + return_value='fedora'): returned_cls = osutils.BaseOS.get_os_util() self.assertIsInstance(returned_cls, osutils.RH) - with mock.patch('platform.linux_distribution', - return_value=['redhat', 'Foo', 'Bar']): + with mock.patch('distro.id', + return_value='rhel'): returned_cls = osutils.BaseOS.get_os_util() self.assertIsInstance(returned_cls, osutils.RH) - with mock.patch('platform.linux_distribution', - return_value=['centos', 'Foo', 'Bar']): + with mock.patch('distro.id', + return_value='centos'): returned_cls = osutils.BaseOS.get_os_util() self.assertIsInstance(returned_cls, osutils.RH) - with mock.patch('platform.linux_distribution', - return_value=['FakeOS', 'Foo', 'Bar']): + with mock.patch('distro.id', + return_value='FakeOS'): self.assertRaises( octavia_exceptions.InvalidAmphoraOperatingSystem, osutils.BaseOS.get_os_util) diff --git a/octavia/tests/unit/amphorae/backends/agent/api_server/test_plug.py b/octavia/tests/unit/amphorae/backends/agent/api_server/test_plug.py index 1be7f8052a..648de7fd8e 100644 --- a/octavia/tests/unit/amphorae/backends/agent/api_server/test_plug.py +++ b/octavia/tests/unit/amphorae/backends/agent/api_server/test_plug.py @@ -37,8 +37,8 @@ class TestPlug(base.TestCase): def setUp(self): super(TestPlug, self).setUp() self.mock_netifaces = mock.patch.object(plug, "netifaces").start() - self.mock_platform = mock.patch("platform.linux_distribution").start() - self.mock_platform.return_value = ("Ubuntu",) + self.mock_platform = mock.patch("distro.id").start() + self.mock_platform.return_value = "ubuntu" self.osutil = osutils.BaseOS.get_os_util() self.test_plug = plug.Plug(self.osutil) self.addCleanup(self.mock_netifaces.stop) @@ -57,8 +57,7 @@ class TestPlug(base.TestCase): self.assertEqual(FAKE_INTERFACE, interface) def test__interface_by_mac_case_insensitive_rh(self): - with mock.patch('platform.linux_distribution', - return_value=['centos', 'Foo']): + with mock.patch('distro.id', return_value='centos'): osutil = osutils.BaseOS.get_os_util() self.test_plug = plug.Plug(osutil) interface = self.test_plug._interface_by_mac( @@ -160,8 +159,8 @@ class TestPlug(base.TestCase): class TestPlugNetwork(base.TestCase): def setUp(self): super(TestPlugNetwork, self).setUp() - self.mock_platform = mock.patch("platform.linux_distribution").start() - self.mock_platform.return_value = ("Ubuntu",) + self.mock_platform = mock.patch("distro.id").start() + self.mock_platform.return_value = "ubuntu" self.osutil = osutils.BaseOS.get_os_util() self.test_plug = plug.Plug(self.osutil) diff --git a/requirements.txt b/requirements.txt index 3e718e7ad0..a067bd05e5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -40,6 +40,7 @@ diskimage-builder!=1.6.0,!=1.7.0,!=1.7.1,>=1.1.2 # Apache-2.0 futures>=3.0.0;python_version=='2.7' or python_version=='2.6' # BSD castellan>=0.16.0 # Apache-2.0 tenacity>=4.9.0 # Apache-2.0 +distro>=1.2.0 # Apache-2.0 #for the amphora api Flask!=0.11,>=0.10 # BSD