@@ -13,6 +13,8 @@ def __init__(self, host):
1313 self ._release_str = None
1414 self ._release_info = None
1515 self ._dist = None
16+ self ._kernel = None
17+ self ._timezone = None
1618
1719 def _exec_command (self , cmd , err_msg = None ):
1820 host_executor = self .host .executor ()
@@ -114,6 +116,58 @@ def distribution(self):
114116 self ._dist = self .get_distribution ()
115117 return self ._dist
116118
119+ def get_kernel_info (self ):
120+ """
121+ Get kernel info (release, version and type)
122+
123+ Returns:
124+ namedtuple Kernel: Results tuple(release, version and type)
125+
126+ Examples:
127+ kernel(
128+ release='4.18.0-135.el8.x86_64',
129+ version='#1 SMP Fri Aug 16 19:31:40 UTC 2019',
130+ type'='x86_64'
131+ )
132+ """
133+ values = ["release" , "version" , "type" ]
134+ cmd = ["uname" , "-r" , ";" , "uname" , "-v" , ";" , "uname" , "-m" ]
135+ out = self ._exec_command (
136+ cmd = cmd , err_msg = "Failed to obta kernel info"
137+ )
138+ Kernel = namedtuple ('Kernel' , values )
139+ return Kernel (* [i .strip () for i in out .strip ().split ("\n " )])
140+
141+ @property
142+ def kernel_info (self ):
143+ if not self ._kernel :
144+ self ._kernel = self .get_kernel_info ()
145+ return self ._kernel
146+
147+ def get_timezone (self ):
148+ """
149+ Get timezone (name and offset)
150+
151+ Returns:
152+ namedtuple Timezone: Results tuple(name and offset)
153+
154+ Examples:
155+ kernel(name='IDT', offset='+0300')
156+ """
157+ values = ["name" , "offset" ]
158+ cmd = ["date" , "+%Z\\ " , "%z" ]
159+ out = self ._exec_command (
160+ cmd = cmd , err_msg = "Failed to obtain timezone info"
161+ )
162+ Timezone = namedtuple ('Timezone' , values )
163+ return Timezone (* [i .strip () for i in out .split ()])
164+
165+ @property
166+ def timezone (self ):
167+ if not self ._timezone :
168+ self ._timezone = self .get_timezone ()
169+ return self ._timezone
170+
117171 def stat (self , path ):
118172 """
119173 Get file or directory stats
0 commit comments