Add OS.__repr__() and OS.to_dict()

Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
This commit is contained in:
Zack Cerza 2014-09-29 07:54:34 -06:00
parent a5917b4be9
commit a962779b15
2 changed files with 30 additions and 10 deletions

View 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)

View 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')