Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions hwinfo/tools/inspector.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,16 @@ def read_from_tarball(tarball, filename):

return data

def parse_kvp_string(data):
rec = {}
lines = data.split('\n')
for line in lines:
if not line:
continue
k, v = line.split('=')
rec[k] = v.strip("'")
return rec

class Host(object):

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

def get_os_data(self):
return self.exec_command(['cat', '/etc/xensource-inventory'])

def get_os_info(self):
rec = {}
os_rec = parse_kvp_string(self.get_os_data())
rec['os'] = os_rec['PRODUCT_BRAND']
rec['version'] = os_rec['PRODUCT_VERSION']
rec['build'] = os_rec['BUILD_NUMBER']
return rec

def get_pci_devices(self):
data = self.get_lspci_data()
parser = LspciNNMMParser(data)
Expand All @@ -116,6 +137,14 @@ def get_info(self):
data = self.get_dmidecode_data()
parser = dmidecode.DmidecodeParser(data)
rec = parser.parse()
try:
os_rec = self.get_os_info()
for k, v in os_rec.iteritems():
rec[k] = v
except:
#Ignore failures. Only supports XS right now.
pass

return rec

def get_cpu_info(self):
Expand Down Expand Up @@ -175,6 +204,9 @@ def get_dmidecode_data(self):
def get_cpuinfo_data(self):
return self._load_from_file('cpuinfo')

def get_os_data(self):
return self._load_from_file('xensource-inventory')

def get_pci_devices(self):
try:
devs = super(HostFromLogs, self).get_pci_devices()
Expand Down