]> git.apps.os.sepia.ceph.com Git - teuthology.git/commitdiff
Move OS class to its own files
authorZack Cerza <zack.cerza@inktank.com>
Mon, 29 Sep 2014 13:39:49 +0000 (07:39 -0600)
committerZack Cerza <zack.cerza@inktank.com>
Tue, 30 Sep 2014 16:41:29 +0000 (10:41 -0600)
Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
teuthology/orchestra/opsys.py [new file with mode: 0644]
teuthology/orchestra/remote.py
teuthology/orchestra/test/test_opsys.py [new file with mode: 0644]
teuthology/orchestra/test/test_remote.py

diff --git a/teuthology/orchestra/opsys.py b/teuthology/orchestra/opsys.py
new file mode 100644 (file)
index 0000000..a9629d7
--- /dev/null
@@ -0,0 +1,93 @@
+import re
+
+
+class OS(object):
+    """
+    Class that parses either /etc/os-release or the output of 'lsb_release -a'
+    and provides OS name and version information.
+
+    Must be initialized with OS.from_lsb_release or OS.from_os_release
+    """
+
+    __slots__ = ['name', 'version', 'package_type']
+
+    _deb_distros = ('debian', 'ubuntu')
+    _rpm_distros = ('fedora', 'rhel', 'centos', 'suse')
+
+    def __init__(self):
+        pass
+
+    @classmethod
+    def from_lsb_release(cls, lsb_release_str):
+        """
+        Parse /etc/os-release and populate attributes
+
+        Given output like:
+            Distributor ID: Ubuntu
+            Description:    Ubuntu 12.04.4 LTS
+            Release:        12.04
+            Codename:       precise
+
+        Attributes will be:
+            name = 'ubuntu'
+            version = '12.04'
+        Additionally, we set the package type:
+            package_type = 'deb'
+        """
+        obj = cls()
+        str_ = lsb_release_str.strip()
+        name = obj._get_value(str_, 'Distributor ID')
+        if name == 'RedHatEnterpriseServer':
+            name = 'rhel'
+        obj.name = name.lower()
+
+        obj.version = obj._get_value(str_, 'Release')
+
+        if obj.name in cls._deb_distros:
+            obj.package_type = "deb"
+        elif obj.name in cls._rpm_distros:
+            obj.package_type = "rpm"
+
+        return obj
+
+    @classmethod
+    def from_os_release(cls, os_release_str):
+        """
+        Parse /etc/os-release and populate attributes
+
+        Given output like:
+            NAME="Ubuntu"
+            VERSION="12.04.4 LTS, Precise Pangolin"
+            ID=ubuntu
+            ID_LIKE=debian
+            PRETTY_NAME="Ubuntu precise (12.04.4 LTS)"
+            VERSION_ID="12.04"
+
+        Attributes will be:
+            name = 'ubuntu'
+            version = '12.04'
+        Additionally, we set the package type:
+            package_type = 'deb'
+        """
+        obj = cls()
+        str_ = os_release_str.strip()
+        obj.name = cls._get_value(str_, 'ID').lower()
+        obj.version = cls._get_value(str_, 'VERSION_ID')
+
+        if obj.name in cls._deb_distros:
+            obj.package_type = "deb"
+        elif obj.name in cls._rpm_distros:
+            obj.package_type = "rpm"
+
+        return obj
+
+    @staticmethod
+    def _get_value(str_, name):
+        regex = '^%s[:=](.+)' % name
+        match = re.search(regex, str_, flags=re.M)
+        if match:
+            return match.groups()[0].strip(' \t"\'')
+        return ''
+
+    def __str__(self):
+        return " ".join([self.name, self.version]).strip()
index 06336726d4164f00eac8c07c03d77d41ca5aba47..f7bd6ec5278cbba13fe6048772be16c1709030d6 100644 (file)
@@ -2,6 +2,7 @@
 Support for paramiko remote objects.
 """
 from . import run
+from .opsys import OS
 import connection
 from teuthology import misc
 import time
@@ -289,98 +290,6 @@ class Remote(object):
         return node
 
 
-class OS(object):
-    """
-    Class that parses either /etc/os-release or the output of 'lsb_release -a'
-    and provides OS name and version information.
-
-    Must be initialized with OS.from_lsb_release or OS.from_os_release
-    """
-
-    __slots__ = ['name', 'version', 'package_type']
-
-    _deb_distros = ('debian', 'ubuntu')
-    _rpm_distros = ('fedora', 'rhel', 'centos', 'suse')
-
-    def __init__(self):
-        pass
-
-    @classmethod
-    def from_lsb_release(cls, lsb_release_str):
-        """
-        Parse /etc/os-release and populate attributes
-
-        Given output like:
-            Distributor ID: Ubuntu
-            Description:    Ubuntu 12.04.4 LTS
-            Release:        12.04
-            Codename:       precise
-
-        Attributes will be:
-            name = 'ubuntu'
-            version = '12.04'
-        Additionally, we set the package type:
-            package_type = 'deb'
-        """
-        obj = cls()
-        str_ = lsb_release_str.strip()
-        name = obj._get_value(str_, 'Distributor ID')
-        if name == 'RedHatEnterpriseServer':
-            name = 'rhel'
-        obj.name = name.lower()
-
-        obj.version = obj._get_value(str_, 'Release')
-
-        if obj.name in cls._deb_distros:
-            obj.package_type = "deb"
-        elif obj.name in cls._rpm_distros:
-            obj.package_type = "rpm"
-
-        return obj
-
-    @classmethod
-    def from_os_release(cls, os_release_str):
-        """
-        Parse /etc/os-release and populate attributes
-
-        Given output like:
-            NAME="Ubuntu"
-            VERSION="12.04.4 LTS, Precise Pangolin"
-            ID=ubuntu
-            ID_LIKE=debian
-            PRETTY_NAME="Ubuntu precise (12.04.4 LTS)"
-            VERSION_ID="12.04"
-
-        Attributes will be:
-            name = 'ubuntu'
-            version = '12.04'
-        Additionally, we set the package type:
-            package_type = 'deb'
-        """
-        obj = cls()
-        str_ = os_release_str.strip()
-        obj.name = cls._get_value(str_, 'ID').lower()
-        obj.version = cls._get_value(str_, 'VERSION_ID')
-
-        if obj.name in cls._deb_distros:
-            obj.package_type = "deb"
-        elif obj.name in cls._rpm_distros:
-            obj.package_type = "rpm"
-
-        return obj
-
-    @staticmethod
-    def _get_value(str_, name):
-        regex = '^%s[:=](.+)' % name
-        match = re.search(regex, str_, flags=re.M)
-        if match:
-            return match.groups()[0].strip(' \t"\'')
-        return ''
-
-    def __str__(self):
-        return " ".join([self.name, self.version]).strip()
-
-
 def getShortName(name):
     """
     Extract the name portion from remote name strings.
diff --git a/teuthology/orchestra/test/test_opsys.py b/teuthology/orchestra/test/test_opsys.py
new file mode 100644 (file)
index 0000000..ac9c476
--- /dev/null
@@ -0,0 +1,134 @@
+from textwrap import dedent
+from ..opsys import OS
+
+
+class TestOS(object):
+    str_centos_7_os_release = dedent("""
+        NAME="CentOS Linux"
+        VERSION="7 (Core)"
+        ID="centos"
+        ID_LIKE="rhel fedora"
+        VERSION_ID="7"
+        PRETTY_NAME="CentOS Linux 7 (Core)"
+        ANSI_COLOR="0;31"
+        CPE_NAME="cpe:/o:centos:centos:7"
+        HOME_URL="https://www.centos.org/"
+        BUG_REPORT_URL="https://bugs.centos.org/"
+    """)
+
+    str_debian_7_lsb_release = dedent("""
+        Distributor ID: Debian
+        Description:    Debian GNU/Linux 7.1 (wheezy)
+        Release:        7.1
+        Codename:       wheezy
+    """)
+
+    str_debian_7_os_release = dedent("""
+        PRETTY_NAME="Debian GNU/Linux 7 (wheezy)"
+        NAME="Debian GNU/Linux"
+        VERSION_ID="7"
+        VERSION="7 (wheezy)"
+        ID=debian
+        ANSI_COLOR="1;31"
+        HOME_URL="http://www.debian.org/"
+        SUPPORT_URL="http://www.debian.org/support/"
+        BUG_REPORT_URL="http://bugs.debian.org/"
+    """)
+
+    str_ubuntu_12_04_lsb_release = dedent("""
+        Distributor ID: Ubuntu
+        Description:    Ubuntu 12.04.4 LTS
+        Release:        12.04
+        Codename:       precise
+    """)
+
+    str_ubuntu_12_04_os_release = dedent("""
+        NAME="Ubuntu"
+        VERSION="12.04.4 LTS, Precise Pangolin"
+        ID=ubuntu
+        ID_LIKE=debian
+        PRETTY_NAME="Ubuntu precise (12.04.4 LTS)"
+        VERSION_ID="12.04"
+    """)
+
+    str_rhel_6_4_lsb_release = dedent("""
+        LSB Version:    :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
+        Distributor ID: RedHatEnterpriseServer
+        Description:    Red Hat Enterprise Linux Server release 6.4 (Santiago)
+        Release:        6.4
+        Codename:       Santiago
+    """)
+
+    str_rhel_7_lsb_release = dedent("""
+        LSB Version:    :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
+        Distributor ID: RedHatEnterpriseServer
+        Description:    Red Hat Enterprise Linux Server release 7.0 (Maipo)
+        Release:        7.0
+        Codename:       Maipo
+    """)
+
+    str_rhel_7_os_release = dedent("""
+        NAME="Red Hat Enterprise Linux Server"
+        VERSION="7.0 (Maipo)"
+        ID="rhel"
+        ID_LIKE="fedora"
+        VERSION_ID="7.0"
+        PRETTY_NAME="Red Hat Enterprise Linux Server 7.0 (Maipo)"
+        ANSI_COLOR="0;31"
+        CPE_NAME="cpe:/o:redhat:enterprise_linux:7.0:GA:server"
+        HOME_URL="https://www.redhat.com/"
+        BUG_REPORT_URL="https://bugzilla.redhat.com/"
+
+        REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 7"
+        REDHAT_BUGZILLA_PRODUCT_VERSION=7.0
+        REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
+        REDHAT_SUPPORT_PRODUCT_VERSION=7.0
+    """)
+
+    def test_centos_7_os_release(self):
+        os = OS.from_os_release(self.str_centos_7_os_release)
+        assert os.name == 'centos'
+        assert os.version == '7'
+        assert os.package_type == 'rpm'
+
+    def test_debian_7_lsb_release(self):
+        os = OS.from_lsb_release(self.str_debian_7_lsb_release)
+        assert os.name == 'debian'
+        assert os.version == '7.1'
+        assert os.package_type == 'deb'
+
+    def test_debian_7_os_release(self):
+        os = OS.from_os_release(self.str_debian_7_os_release)
+        assert os.name == 'debian'
+        assert os.version == '7'
+        assert os.package_type == 'deb'
+
+    def test_ubuntu_12_04_lsb_release(self):
+        os = OS.from_lsb_release(self.str_ubuntu_12_04_lsb_release)
+        assert os.name == 'ubuntu'
+        assert os.version == '12.04'
+        assert os.package_type == 'deb'
+
+    def test_ubuntu_12_04_os_release(self):
+        os = OS.from_os_release(self.str_ubuntu_12_04_os_release)
+        assert os.name == 'ubuntu'
+        assert os.version == '12.04'
+        assert os.package_type == 'deb'
+
+    def test_rhel_6_4_lsb_release(self):
+        os = OS.from_lsb_release(self.str_rhel_6_4_lsb_release)
+        assert os.name == 'rhel'
+        assert os.version == '6.4'
+        assert os.package_type == 'rpm'
+
+    def test_rhel_7_lsb_release(self):
+        os = OS.from_lsb_release(self.str_rhel_7_lsb_release)
+        assert os.name == 'rhel'
+        assert os.version == '7.0'
+        assert os.package_type == 'rpm'
+
+    def test_rhel_7_os_release(self):
+        os = OS.from_os_release(self.str_rhel_7_os_release)
+        assert os.name == 'rhel'
+        assert os.version == '7.0'
+        assert os.package_type == 'rpm'
index 128b3f2a0d31f1d021b73d7a81a02618d8432a6b..c73bb6be7ddea62bcf7fe0a959337d3cc718e8e7 100644 (file)
@@ -3,7 +3,6 @@ import fudge.inspector
 from pytest import skip
 
 from cStringIO import StringIO, OutputType
-from textwrap import dedent
 
 from .. import remote
 from ..run import RemoteProcess
@@ -138,135 +137,3 @@ class TestRemote(object):
         key.expects('get_base64').returns('test ssh key')
         r = remote.Remote(name='jdoe@xyzzy.example.com', ssh=ssh)
         assert r.host_key == 'key_type test ssh key'
-
-
-class TestDistribution(object):
-    str_centos_7_os_release = dedent("""
-        NAME="CentOS Linux"
-        VERSION="7 (Core)"
-        ID="centos"
-        ID_LIKE="rhel fedora"
-        VERSION_ID="7"
-        PRETTY_NAME="CentOS Linux 7 (Core)"
-        ANSI_COLOR="0;31"
-        CPE_NAME="cpe:/o:centos:centos:7"
-        HOME_URL="https://www.centos.org/"
-        BUG_REPORT_URL="https://bugs.centos.org/"
-    """)
-
-    str_debian_7_lsb_release = dedent("""
-        Distributor ID: Debian
-        Description:    Debian GNU/Linux 7.1 (wheezy)
-        Release:        7.1
-        Codename:       wheezy
-    """)
-
-    str_debian_7_os_release = dedent("""
-        PRETTY_NAME="Debian GNU/Linux 7 (wheezy)"
-        NAME="Debian GNU/Linux"
-        VERSION_ID="7"
-        VERSION="7 (wheezy)"
-        ID=debian
-        ANSI_COLOR="1;31"
-        HOME_URL="http://www.debian.org/"
-        SUPPORT_URL="http://www.debian.org/support/"
-        BUG_REPORT_URL="http://bugs.debian.org/"
-    """)
-
-    str_ubuntu_12_04_lsb_release = dedent("""
-        Distributor ID: Ubuntu
-        Description:    Ubuntu 12.04.4 LTS
-        Release:        12.04
-        Codename:       precise
-    """)
-
-    str_ubuntu_12_04_os_release = dedent("""
-        NAME="Ubuntu"
-        VERSION="12.04.4 LTS, Precise Pangolin"
-        ID=ubuntu
-        ID_LIKE=debian
-        PRETTY_NAME="Ubuntu precise (12.04.4 LTS)"
-        VERSION_ID="12.04"
-    """)
-
-    str_rhel_6_4_lsb_release = dedent("""
-        LSB Version:    :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
-        Distributor ID: RedHatEnterpriseServer
-        Description:    Red Hat Enterprise Linux Server release 6.4 (Santiago)
-        Release:        6.4
-        Codename:       Santiago
-    """)
-
-    str_rhel_7_lsb_release = dedent("""
-        LSB Version:    :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
-        Distributor ID: RedHatEnterpriseServer
-        Description:    Red Hat Enterprise Linux Server release 7.0 (Maipo)
-        Release:        7.0
-        Codename:       Maipo
-    """)
-
-    str_rhel_7_os_release = dedent("""
-        NAME="Red Hat Enterprise Linux Server"
-        VERSION="7.0 (Maipo)"
-        ID="rhel"
-        ID_LIKE="fedora"
-        VERSION_ID="7.0"
-        PRETTY_NAME="Red Hat Enterprise Linux Server 7.0 (Maipo)"
-        ANSI_COLOR="0;31"
-        CPE_NAME="cpe:/o:redhat:enterprise_linux:7.0:GA:server"
-        HOME_URL="https://www.redhat.com/"
-        BUG_REPORT_URL="https://bugzilla.redhat.com/"
-
-        REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 7"
-        REDHAT_BUGZILLA_PRODUCT_VERSION=7.0
-        REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
-        REDHAT_SUPPORT_PRODUCT_VERSION=7.0
-    """)
-
-    def test_centos_7_os_release(self):
-        os = remote.OS.from_os_release(self.str_centos_7_os_release)
-        assert os.name == 'centos'
-        assert os.version == '7'
-        assert os.package_type == 'rpm'
-
-    def test_debian_7_lsb_release(self):
-        os = remote.OS.from_lsb_release(self.str_debian_7_lsb_release)
-        assert os.name == 'debian'
-        assert os.version == '7.1'
-        assert os.package_type == 'deb'
-
-    def test_debian_7_os_release(self):
-        os = remote.OS.from_os_release(self.str_debian_7_os_release)
-        assert os.name == 'debian'
-        assert os.version == '7'
-        assert os.package_type == 'deb'
-
-    def test_ubuntu_12_04_lsb_release(self):
-        os = remote.OS.from_lsb_release(self.str_ubuntu_12_04_lsb_release)
-        assert os.name == 'ubuntu'
-        assert os.version == '12.04'
-        assert os.package_type == 'deb'
-
-    def test_ubuntu_12_04_os_release(self):
-        os = remote.OS.from_os_release(self.str_ubuntu_12_04_os_release)
-        assert os.name == 'ubuntu'
-        assert os.version == '12.04'
-        assert os.package_type == 'deb'
-
-    def test_rhel_6_4_lsb_release(self):
-        os = remote.OS.from_lsb_release(self.str_rhel_6_4_lsb_release)
-        assert os.name == 'rhel'
-        assert os.version == '6.4'
-        assert os.package_type == 'rpm'
-
-    def test_rhel_7_lsb_release(self):
-        os = remote.OS.from_lsb_release(self.str_rhel_7_lsb_release)
-        assert os.name == 'rhel'
-        assert os.version == '7.0'
-        assert os.package_type == 'rpm'
-
-    def test_rhel_7_os_release(self):
-        os = remote.OS.from_os_release(self.str_rhel_7_os_release)
-        assert os.name == 'rhel'
-        assert os.version == '7.0'
-        assert os.package_type == 'rpm'