Fix listing of pci cards and gpu filtering
This commit is contained in:
parent
fbd5e88f64
commit
12df1cba57
4688
Manual.html
4688
Manual.html
File diff suppressed because it is too large
Load Diff
28
Manual.org
28
Manual.org
@ -4163,15 +4163,25 @@ from ansible.module_utils.basic import *
|
||||
|
||||
PCIDevice = namedtuple("PCIDevice", 'idVendor idProduct idClass pciPath')
|
||||
|
||||
vendor_dict = {
|
||||
0x10de: 'nvidia',
|
||||
0x8086: 'intel',
|
||||
0x1002: 'amd',
|
||||
0x80ee: 'virtualbox',
|
||||
}
|
||||
|
||||
def get_pci_devices():
|
||||
for device in glob.glob('/sys/devices/pci*/*:*:*/'):
|
||||
with open(os.path.join(device, 'device')) as d:
|
||||
product_id = int(d.read().strip(), 16)
|
||||
with open(os.path.join(device, 'vendor')) as d:
|
||||
vendor_id = int(d.read().strip(), 16)
|
||||
with open(os.path.join(device, 'class')) as d:
|
||||
class_id = int(d.read().strip(), 16)
|
||||
yield PCIDevice(idVendor=vendor_id, idProduct=product_id, idClass=class_id, pciPath=device)
|
||||
for device in glob.glob('/sys/devices/pci*/*:*:*/*:*:*/'):
|
||||
try:
|
||||
with open(os.path.join(device, 'device')) as d:
|
||||
product_id = int(d.read().strip(), 16)
|
||||
with open(os.path.join(device, 'vendor')) as d:
|
||||
vendor_id = int(d.read().strip(), 16)
|
||||
with open(os.path.join(device, 'class')) as d:
|
||||
class_id = int(d.read().strip(), 16)
|
||||
yield PCIDevice(idVendor=vendor_id, idProduct=product_id, idClass=class_id, pciPath=device)
|
||||
except IOError:
|
||||
pass
|
||||
|
||||
def format_device_list(iterator):
|
||||
return ["{:04x}:{:04x}".format(d.idVendor, d.idProduct) for d in iterator]
|
||||
@ -4180,7 +4190,7 @@ def format_gpu_device_list(iterator):
|
||||
def get_entries(iterator):
|
||||
for d in iterator:
|
||||
if d.idClass == 0x030000:
|
||||
yield ("{:04x}:{:04x}".format(d.idVendor, d.idProduct))
|
||||
yield (vendor_dict.get(d.id_Vendor, "unknown"), "{:04x}:{:04x}".format(d.idVendor, d.idProduct))
|
||||
return [entry for entry in get_entries(iterator)]
|
||||
|
||||
arg_specs = {
|
||||
|
@ -66,15 +66,25 @@ from ansible.module_utils.basic import *
|
||||
|
||||
PCIDevice = namedtuple("PCIDevice", 'idVendor idProduct idClass pciPath')
|
||||
|
||||
vendor_dict = {
|
||||
0x10de: 'nvidia',
|
||||
0x8086: 'intel',
|
||||
0x1002: 'amd',
|
||||
0x80ee: 'virtualbox',
|
||||
}
|
||||
|
||||
def get_pci_devices():
|
||||
for device in glob.glob('/sys/devices/pci*/*:*:*/'):
|
||||
with open(os.path.join(device, 'device')) as d:
|
||||
product_id = int(d.read().strip(), 16)
|
||||
with open(os.path.join(device, 'vendor')) as d:
|
||||
vendor_id = int(d.read().strip(), 16)
|
||||
with open(os.path.join(device, 'class')) as d:
|
||||
class_id = int(d.read().strip(), 16)
|
||||
yield PCIDevice(idVendor=vendor_id, idProduct=product_id, idClass=class_id, pciPath=device)
|
||||
for device in glob.glob('/sys/devices/pci*/*:*:*/*:*:*/'):
|
||||
try:
|
||||
with open(os.path.join(device, 'device')) as d:
|
||||
product_id = int(d.read().strip(), 16)
|
||||
with open(os.path.join(device, 'vendor')) as d:
|
||||
vendor_id = int(d.read().strip(), 16)
|
||||
with open(os.path.join(device, 'class')) as d:
|
||||
class_id = int(d.read().strip(), 16)
|
||||
yield PCIDevice(idVendor=vendor_id, idProduct=product_id, idClass=class_id, pciPath=device)
|
||||
except IOError:
|
||||
pass
|
||||
|
||||
def format_device_list(iterator):
|
||||
return ["{:04x}:{:04x}".format(d.idVendor, d.idProduct) for d in iterator]
|
||||
@ -83,7 +93,7 @@ def format_gpu_device_list(iterator):
|
||||
def get_entries(iterator):
|
||||
for d in iterator:
|
||||
if d.idClass == 0x030000:
|
||||
yield ("{:04x}:{:04x}".format(d.idVendor, d.idProduct))
|
||||
yield (vendor_dict.get(d.id_Vendor, "unknown"), "{:04x}:{:04x}".format(d.idVendor, d.idProduct))
|
||||
return [entry for entry in get_entries(iterator)]
|
||||
|
||||
arg_specs = {
|
||||
|
Loading…
Reference in New Issue
Block a user