Clean up device fact gathering

Remove lots of re use that really shouldn't have been re in the first
place. Initialize pcidata even if lspci is unavailable, and check for
its usability before trying to use it.

Fixes #2060.
reviewable/pr18780/r1
Daniel Hokka Zakrisson 12 years ago
parent 81cf3aa02c
commit 2402bae9ea

18
setup

@ -380,6 +380,8 @@ class LinuxHardware(Hardware):
lspci = module.get_bin_path('lspci')
if lspci:
rc, pcidata, err = module.run_command(lspci)
else:
pcidata = None
try:
block_devs = os.listdir("/sys/block")
@ -397,19 +399,18 @@ class LinuxHardware(Hardware):
sysfs_no_links = 1
else:
continue
if re.search("virtual", path):
if "virtual" in path:
continue
sysdir = os.path.join("/sys/block", path)
if sysfs_no_links == 1:
for folder in os.listdir(sysdir):
if re.search("device", folder):
if "device" in folder:
virtual = 0
break
if virtual:
continue
d = {}
m = re.match(".*/(.+)$", sysdir)
diskname = m.group(1)
diskname = os.path.basename(sysdir)
for key in ['vendor', 'model']:
d[key] = get_file_content(sysdir + "/device/" + key)
@ -448,8 +449,8 @@ class LinuxHardware(Hardware):
d['size'] = module.pretty_bytes(float(d['sectors']) * float(d['sectorsize']))
d['host'] = ""
m = re.match(".+/\d+:(\w+:\w+\.\w)/host\d+/\s*", sysdir)
if m:
m = re.match(".+/[a-f0-9]+:([a-f0-9]+:[a-f0-9]+\.[a-f0-9]+)/host\d+/", sysdir)
if m and pcidata:
pciid = m.group(1)
did = re.escape(pciid)
m = re.search("^" + did + "\s(.*)$", pcidata, re.MULTILINE)
@ -457,8 +458,9 @@ class LinuxHardware(Hardware):
d['holders'] = []
for folder in os.listdir(sysdir + "/holders"):
if re.search("^dm-.*", folder):
name = get_file_content(sysdir + "/holders/" + folder + "/dm/name")
if not folder.startswith("dm-"):
continue
name = get_file_content(sysdir + "/holders/" + folder + "/dm/name")
if name:
d['holders'].append(name)
else:

Loading…
Cancel
Save