]> git.apps.os.sepia.ceph.com Git - teuthology.git/commitdiff
Add OS.__repr__() and OS.to_dict()
authorZack Cerza <zack.cerza@inktank.com>
Mon, 29 Sep 2014 13:54:34 +0000 (07:54 -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
teuthology/orchestra/test/test_opsys.py

index a9629d7e35e6a34e0d2501fd66fe7daf5c98c7b7..c459f15306b0fedeec171cd6a4e49a68742d99b5 100644 (file)
@@ -14,8 +14,10 @@ class OS(object):
     _deb_distros = ('debian', 'ubuntu')
     _rpm_distros = ('fedora', 'rhel', 'centos', 'suse')
 
-    def __init__(self):
-        pass
+    def __init__(self, name=None, version=None):
+        self.name = name
+        self.version = version
+        self._set_package_type()
 
     @classmethod
     def from_lsb_release(cls, lsb_release_str):
@@ -43,10 +45,7 @@ class OS(object):
 
         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"
+        obj._set_package_type()
 
         return obj
 
@@ -74,10 +73,7 @@ class OS(object):
         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"
+        obj._set_package_type()
 
         return obj
 
@@ -89,5 +85,21 @@ class OS(object):
             return match.groups()[0].strip(' \t"\'')
         return ''
 
+    def _set_package_type(self):
+        if self.name in self._deb_distros:
+            self.package_type = "deb"
+        elif self.name in self._rpm_distros:
+            self.package_type = "rpm"
+
+    def to_dict(self):
+        return dict(
+            name=self.name,
+            version=self.version,
+        )
+
     def __str__(self):
         return " ".join([self.name, self.version]).strip()
+
+    def __repr__(self):
+        return "OS(name='{name}', version='{version}')".format(
+            name=self.name, version=self.version)
index ac9c4766ca09be8438edb13dd0088ec91e82978a..bbe80982b3a084aa4098644ad1ba8667391354d2 100644 (file)
@@ -132,3 +132,11 @@ class TestOS(object):
         assert os.name == 'rhel'
         assert os.version == '7.0'
         assert os.package_type == 'rpm'
+
+    def test_repr(self):
+        os = OS(name='NAME', version='0.1.2')
+        assert repr(os) == "OS(name='NAME', version='0.1.2')"
+
+    def test_to_dict(self):
+        os = OS(name='NAME', version='0.1.2')
+        assert os.to_dict() == dict(name='NAME', version='0.1.2')