summaryrefslogtreecommitdiff
path: root/cloudinit/tests
diff options
context:
space:
mode:
authorChad Smith <chad.smith@canonical.com>2018-07-20 11:50:42 +0000
committerServer Team CI Bot <josh.powers+server-team-bot@canonical.com>2018-07-20 11:50:42 +0000
commitd41cc82d11076a4f447ee13837ef2b0f7591642f (patch)
tree72440bc7698e9a5f8a55f787887f363b7f463ee1 /cloudinit/tests
parentb07e491d2b69a25ab6dc5e56f6ba8b84d54867a9 (diff)
downloadvyos-cloud-init-d41cc82d11076a4f447ee13837ef2b0f7591642f.tar.gz
vyos-cloud-init-d41cc82d11076a4f447ee13837ef2b0f7591642f.zip
get_linux_distro: add support for centos6 and rawhide flavors of redhat
An empty /etc/os-release exists on some redhat images, most notably the COPR build images of centos6 and rawhide. On platforms missing /etc/os-release or having an empty /etc/os-release file, use _parse_redhat_release on rhel-based images to obtain distribution and release codename information. LP: #1781229
Diffstat (limited to 'cloudinit/tests')
-rw-r--r--cloudinit/tests/test_util.py29
1 files changed, 27 insertions, 2 deletions
diff --git a/cloudinit/tests/test_util.py b/cloudinit/tests/test_util.py
index 6a31e505..387d8943 100644
--- a/cloudinit/tests/test_util.py
+++ b/cloudinit/tests/test_util.py
@@ -57,6 +57,9 @@ OS_RELEASE_CENTOS = dedent("""\
REDHAT_SUPPORT_PRODUCT_VERSION="7"
""")
+REDHAT_RELEASE_CENTOS_6 = "CentOS release 6.10 (Final)"
+REDHAT_RELEASE_CENTOS_7 = "CentOS Linux release 7.5.1804 (Core)"
+
OS_RELEASE_DEBIAN = dedent("""\
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
@@ -337,6 +340,12 @@ class TestGetLinuxDistro(CiTestCase):
if path == '/etc/os-release':
return 1
+ @classmethod
+ def redhat_release_exists(self, path):
+ """Side effect function """
+ if path == '/etc/redhat-release':
+ return 1
+
@mock.patch('cloudinit.util.load_file')
def test_get_linux_distro_quoted_name(self, m_os_release, m_path_exists):
"""Verify we get the correct name if the os-release file has
@@ -356,8 +365,24 @@ class TestGetLinuxDistro(CiTestCase):
self.assertEqual(('ubuntu', '16.04', 'xenial'), dist)
@mock.patch('cloudinit.util.load_file')
- def test_get_linux_centos(self, m_os_release, m_path_exists):
- """Verify we get the correct name and release name on CentOS."""
+ def test_get_linux_centos6(self, m_os_release, m_path_exists):
+ """Verify we get the correct name and release name on CentOS 6."""
+ m_os_release.return_value = REDHAT_RELEASE_CENTOS_6
+ m_path_exists.side_effect = TestGetLinuxDistro.redhat_release_exists
+ dist = util.get_linux_distro()
+ self.assertEqual(('centos', '6.10', 'Final'), dist)
+
+ @mock.patch('cloudinit.util.load_file')
+ def test_get_linux_centos7_redhat_release(self, m_os_release, m_exists):
+ """Verify the correct release info on CentOS 7 without os-release."""
+ m_os_release.return_value = REDHAT_RELEASE_CENTOS_7
+ m_exists.side_effect = TestGetLinuxDistro.redhat_release_exists
+ dist = util.get_linux_distro()
+ self.assertEqual(('centos', '7.5.1804', 'Core'), dist)
+
+ @mock.patch('cloudinit.util.load_file')
+ def test_get_linux_copr_centos(self, m_os_release, m_path_exists):
+ """Verify we get the correct name and release name on COPR CentOS."""
m_os_release.return_value = OS_RELEASE_CENTOS
m_path_exists.side_effect = TestGetLinuxDistro.os_release_exists
dist = util.get_linux_distro()