Skip to content

Commit 31ff279

Browse files
committed
Adding support for reading OS data. Initial support for XS metadata.
Signed-off-by: Rob Dobson <[email protected]>
1 parent 049d8e6 commit 31ff279

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

hwinfo/tools/inspector.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,16 @@ def read_from_tarball(tarball, filename):
7373

7474
return data
7575

76+
def parse_kvp_string(data):
77+
rec = {}
78+
lines = data.split('\n')
79+
for line in lines:
80+
if not line:
81+
continue
82+
k, v = line.split('=')
83+
rec[k] = v.strip("'")
84+
return rec
85+
7686
class Host(object):
7787

7888
client = None
@@ -106,6 +116,17 @@ def get_dmidecode_data(self):
106116
def get_cpuinfo_data(self):
107117
return self.exec_command(['cat /proc/cpuinfo'])
108118

119+
def get_os_data(self):
120+
return self.exec_command(['cat', '/etc/xensource-inventory'])
121+
122+
def get_os_info(self):
123+
rec = {}
124+
os_rec = parse_kvp_string(self.get_os_data())
125+
rec['os'] = os_rec['PRODUCT_BRAND']
126+
rec['version'] = os_rec['PRODUCT_VERSION']
127+
rec['build'] = os_rec['BUILD_NUMBER']
128+
return rec
129+
109130
def get_pci_devices(self):
110131
data = self.get_lspci_data()
111132
parser = LspciNNMMParser(data)
@@ -116,6 +137,14 @@ def get_info(self):
116137
data = self.get_dmidecode_data()
117138
parser = dmidecode.DmidecodeParser(data)
118139
rec = parser.parse()
140+
try:
141+
os_rec = self.get_os_info()
142+
for k, v in os_rec.iteritems():
143+
rec[k] = v
144+
except:
145+
#Ignore failures. Only supports XS right now.
146+
pass
147+
119148
return rec
120149

121150
def get_cpu_info(self):
@@ -175,6 +204,9 @@ def get_dmidecode_data(self):
175204
def get_cpuinfo_data(self):
176205
return self._load_from_file('cpuinfo')
177206

207+
def get_os_data(self):
208+
return self._load_from_file('xensource-inventory')
209+
178210
def get_pci_devices(self):
179211
try:
180212
devs = super(HostFromLogs, self).get_pci_devices()

0 commit comments

Comments
 (0)