Skip to content

Commit

Permalink
Add kernel info and timezone info (#127)
Browse files Browse the repository at this point in the history
* Add kernel info and timezone info

* added tests for new functionality

* Redundant negative tests removed
  • Loading branch information
vsibirsk authored May 6, 2020
1 parent 2914855 commit c43968b
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 0 deletions.
54 changes: 54 additions & 0 deletions rrmngmnt/operatingsystem.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ def __init__(self, host):
self._release_str = None
self._release_info = None
self._dist = None
self._kernel = None
self._timezone = None

def _exec_command(self, cmd, err_msg=None):
host_executor = self.host.executor()
Expand Down Expand Up @@ -114,6 +116,58 @@ def distribution(self):
self._dist = self.get_distribution()
return self._dist

def get_kernel_info(self):
"""
Get kernel info (release, version and type)
Returns:
namedtuple Kernel: Results tuple(release, version and type)
Examples:
kernel(
release='4.18.0-135.el8.x86_64',
version='#1 SMP Fri Aug 16 19:31:40 UTC 2019',
type'='x86_64'
)
"""
values = ["release", "version", "type"]
cmd = ["uname", "-r", ";", "uname", "-v", ";", "uname", "-m"]
out = self._exec_command(
cmd=cmd, err_msg="Failed to obta kernel info"
)
Kernel = namedtuple('Kernel', values)
return Kernel(*[i.strip() for i in out.strip().split("\n")])

@property
def kernel_info(self):
if not self._kernel:
self._kernel = self.get_kernel_info()
return self._kernel

def get_timezone(self):
"""
Get timezone (name and offset)
Returns:
namedtuple Timezone: Results tuple(name and offset)
Examples:
kernel(name='IDT', offset='+0300')
"""
values = ["name", "offset"]
cmd = ["date", "+%Z\\", "%z"]
out = self._exec_command(
cmd=cmd, err_msg="Failed to obtain timezone info"
)
Timezone = namedtuple('Timezone', values)
return Timezone(*[i.strip() for i in out.split()])

@property
def timezone(self):
if not self._timezone:
self._timezone = self.get_timezone()
return self._timezone

def stat(self, path):
"""
Get file or directory stats
Expand Down
15 changes: 15 additions & 0 deletions tests/test_os.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,10 @@ class TestOperatingSystem(object):
),
'python -c "import platform;print(\',\'.join('
'platform.linux_distribution()))"': (0, 'Fedora,23,Twenty Three', ''),
'uname -r ; uname -v ; uname -m': (
0, '4.18.0-135.el8\n#1 SMP Fri Aug 16 19:31:40 UTC\nx86_64\n', '',
),
'date +%Z\\ %z': (0, 'IDT +0300', ''),
}
files = {}

Expand Down Expand Up @@ -84,6 +88,17 @@ def test_old_distro(self):
assert result['ver'] == '23'
assert result['name'] == 'Twenty Three'

def test_get_kernel_info(self):
result = self.get_host().os.kernel_info
assert result.release == '4.18.0-135.el8'
assert result.version == '#1 SMP Fri Aug 16 19:31:40 UTC'
assert result.type == 'x86_64'

def test_get_timezone(self):
result = self.get_host().os.timezone
assert result.name == 'IDT'
assert result.offset == '+0300'


class TestOperatingSystemNegative(object):
data = {
Expand Down

0 comments on commit c43968b

Please sign in to comment.