From a962779b153314df75e3418022caf8d7eb4f7ca1 Mon Sep 17 00:00:00 2001 From: Zack Cerza Date: Mon, 29 Sep 2014 07:54:34 -0600 Subject: [PATCH] Add OS.__repr__() and OS.to_dict() Signed-off-by: Zack Cerza --- teuthology/orchestra/opsys.py | 32 +++++++++++++++++-------- teuthology/orchestra/test/test_opsys.py | 8 +++++++ 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/teuthology/orchestra/opsys.py b/teuthology/orchestra/opsys.py index a9629d7e35..c459f15306 100644 --- a/teuthology/orchestra/opsys.py +++ b/teuthology/orchestra/opsys.py @@ -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) diff --git a/teuthology/orchestra/test/test_opsys.py b/teuthology/orchestra/test/test_opsys.py index ac9c4766ca..bbe80982b3 100644 --- a/teuthology/orchestra/test/test_opsys.py +++ b/teuthology/orchestra/test/test_opsys.py @@ -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') -- 2.39.5