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')
|
PCIDevice = namedtuple("PCIDevice", 'idVendor idProduct idClass pciPath')
|
||||||
|
|
||||||
|
vendor_dict = {
|
||||||
|
0x10de: 'nvidia',
|
||||||
|
0x8086: 'intel',
|
||||||
|
0x1002: 'amd',
|
||||||
|
0x80ee: 'virtualbox',
|
||||||
|
}
|
||||||
|
|
||||||
def get_pci_devices():
|
def get_pci_devices():
|
||||||
for device in glob.glob('/sys/devices/pci*/*:*:*/'):
|
for device in glob.glob('/sys/devices/pci*/*:*:*/*:*:*/'):
|
||||||
with open(os.path.join(device, 'device')) as d:
|
try:
|
||||||
product_id = int(d.read().strip(), 16)
|
with open(os.path.join(device, 'device')) as d:
|
||||||
with open(os.path.join(device, 'vendor')) as d:
|
product_id = int(d.read().strip(), 16)
|
||||||
vendor_id = int(d.read().strip(), 16)
|
with open(os.path.join(device, 'vendor')) as d:
|
||||||
with open(os.path.join(device, 'class')) as d:
|
vendor_id = int(d.read().strip(), 16)
|
||||||
class_id = int(d.read().strip(), 16)
|
with open(os.path.join(device, 'class')) as d:
|
||||||
yield PCIDevice(idVendor=vendor_id, idProduct=product_id, idClass=class_id, pciPath=device)
|
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):
|
def format_device_list(iterator):
|
||||||
return ["{:04x}:{:04x}".format(d.idVendor, d.idProduct) for d in 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):
|
def get_entries(iterator):
|
||||||
for d in iterator:
|
for d in iterator:
|
||||||
if d.idClass == 0x030000:
|
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)]
|
return [entry for entry in get_entries(iterator)]
|
||||||
|
|
||||||
arg_specs = {
|
arg_specs = {
|
||||||
|
@ -66,15 +66,25 @@ from ansible.module_utils.basic import *
|
|||||||
|
|
||||||
PCIDevice = namedtuple("PCIDevice", 'idVendor idProduct idClass pciPath')
|
PCIDevice = namedtuple("PCIDevice", 'idVendor idProduct idClass pciPath')
|
||||||
|
|
||||||
|
vendor_dict = {
|
||||||
|
0x10de: 'nvidia',
|
||||||
|
0x8086: 'intel',
|
||||||
|
0x1002: 'amd',
|
||||||
|
0x80ee: 'virtualbox',
|
||||||
|
}
|
||||||
|
|
||||||
def get_pci_devices():
|
def get_pci_devices():
|
||||||
for device in glob.glob('/sys/devices/pci*/*:*:*/'):
|
for device in glob.glob('/sys/devices/pci*/*:*:*/*:*:*/'):
|
||||||
with open(os.path.join(device, 'device')) as d:
|
try:
|
||||||
product_id = int(d.read().strip(), 16)
|
with open(os.path.join(device, 'device')) as d:
|
||||||
with open(os.path.join(device, 'vendor')) as d:
|
product_id = int(d.read().strip(), 16)
|
||||||
vendor_id = int(d.read().strip(), 16)
|
with open(os.path.join(device, 'vendor')) as d:
|
||||||
with open(os.path.join(device, 'class')) as d:
|
vendor_id = int(d.read().strip(), 16)
|
||||||
class_id = int(d.read().strip(), 16)
|
with open(os.path.join(device, 'class')) as d:
|
||||||
yield PCIDevice(idVendor=vendor_id, idProduct=product_id, idClass=class_id, pciPath=device)
|
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):
|
def format_device_list(iterator):
|
||||||
return ["{:04x}:{:04x}".format(d.idVendor, d.idProduct) for d in 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):
|
def get_entries(iterator):
|
||||||
for d in iterator:
|
for d in iterator:
|
||||||
if d.idClass == 0x030000:
|
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)]
|
return [entry for entry in get_entries(iterator)]
|
||||||
|
|
||||||
arg_specs = {
|
arg_specs = {
|
||||||
|
Loading…
Reference in New Issue
Block a user