From 81aa09a2e2883327870146586fe78112b2b16b9c Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Fri, 7 Oct 2022 13:06:20 -0700 Subject: [PATCH] initial lspci parser --- jc/lib.py | 1 + jc/parsers/lspci.py | 132 +++++++++ tests/fixtures/ubuntu-20.10/lspci-mmv.out | 305 ++++++++++++++++++++ tests/fixtures/ubuntu-20.10/lspci-nmmv.out | 305 ++++++++++++++++++++ tests/fixtures/ubuntu-20.10/lspci-nnmmv.out | 305 ++++++++++++++++++++ 5 files changed, 1048 insertions(+) create mode 100644 jc/parsers/lspci.py create mode 100644 tests/fixtures/ubuntu-20.10/lspci-mmv.out create mode 100644 tests/fixtures/ubuntu-20.10/lspci-nmmv.out create mode 100644 tests/fixtures/ubuntu-20.10/lspci-nnmmv.out diff --git a/jc/lib.py b/jc/lib.py index a587e281..1967d175 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -66,6 +66,7 @@ parsers = [ 'lsblk', 'lsmod', 'lsof', + 'lspci', 'lsusb', 'm3u', 'mdadm', diff --git a/jc/parsers/lspci.py b/jc/parsers/lspci.py new file mode 100644 index 00000000..ce233e61 --- /dev/null +++ b/jc/parsers/lspci.py @@ -0,0 +1,132 @@ +"""jc - JSON Convert `lspci -mmv` command output parser + +This parser supports the following `lspci` options: +- `-mmv` +- `-nmmv` +- `-nnmmv` + +Usage (cli): + + $ lspci -nnmmv | jc --lspci + +or + + $ jc lspci -nnmmv + +Usage (module): + + import jc + result = jc.parse('lspci', lspci_command_output) + +Schema: + + [ + { + "lspci": string, + "bar": boolean, + "baz": integer + } + ] + +Examples: + + $ lspci | jc --lspci -p + [] + + $ lspci | jc --lspci -p -r + [] +""" +import re +from typing import List, Dict +import jc.utils + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`lspci -mmv` command parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + magic_commands = ['lspci'] + + +__version__ = info.version + + +def _process(proc_data: List[Dict]) -> List[Dict]: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (List of Dictionaries) raw structured data to process + + Returns: + + List of Dictionaries. Structured to conform to the schema. + """ + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> List[Dict]: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + List of Dictionaries. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: List = [] + device_output: Dict = {} + + if jc.utils.has_data(data): + item_id_p = re.compile(r'(?P^[0-9a-f]{4}$)') + item_id_bracket_p = re.compile(r' \[(?P[0-9a-f]{4})\]$') + + for line in filter(None, data.splitlines()): + if line.startswith('Slot:'): + if device_output: + raw_output.append(device_output) + device_output = {} + + device_output['Slot'] = line.split()[1] + continue + + key, val = line.split(maxsplit=1) + key = key[:-1] + + # numeric only (-nmmv) + if item_id_p.match(val): + device_output[key + '_id'] = val + continue + + # string and numeric (-nnmmv) + if item_id_bracket_p.search(val): + string, idnum = val.rsplit(maxsplit=1) + device_output[key] = string + device_output[key + '_id'] = idnum[1:-1] + continue + + # string only (-mmv) + device_output[key] = val + continue + + + if device_output: + raw_output.append(device_output) + + return raw_output if raw else _process(raw_output) diff --git a/tests/fixtures/ubuntu-20.10/lspci-mmv.out b/tests/fixtures/ubuntu-20.10/lspci-mmv.out new file mode 100644 index 00000000..eefb96ad --- /dev/null +++ b/tests/fixtures/ubuntu-20.10/lspci-mmv.out @@ -0,0 +1,305 @@ +Slot: 00:00.0 +Class: Host bridge +Vendor: Intel Corporation +Device: 440BX/ZX/DX - 82443BX/ZX/DX Host bridge +SVendor: VMware +SDevice: Virtual Machine Chipset +Rev: 01 + +Slot: 00:01.0 +Class: PCI bridge +Vendor: Intel Corporation +Device: 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge +Rev: 01 + +Slot: 00:07.0 +Class: ISA bridge +Vendor: Intel Corporation +Device: 82371AB/EB/MB PIIX4 ISA +SVendor: VMware +SDevice: Virtual Machine Chipset +Rev: 08 + +Slot: 00:07.1 +Class: IDE interface +Vendor: Intel Corporation +Device: 82371AB/EB/MB PIIX4 IDE +SVendor: VMware +SDevice: Virtual Machine Chipset +Rev: 01 +ProgIf: 8a + +Slot: 00:07.3 +Class: Bridge +Vendor: Intel Corporation +Device: 82371AB/EB/MB PIIX4 ACPI +SVendor: VMware +SDevice: Virtual Machine Chipset +Rev: 08 + +Slot: 00:07.7 +Class: System peripheral +Vendor: VMware +Device: Virtual Machine Communication Interface +SVendor: VMware +SDevice: Virtual Machine Communication Interface +Rev: 10 + +Slot: 00:0f.0 +Class: VGA compatible controller +Vendor: VMware +Device: SVGA II Adapter +SVendor: VMware +SDevice: SVGA II Adapter + +Slot: 00:10.0 +Class: SCSI storage controller +Vendor: Broadcom / LSI +Device: 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI +SVendor: VMware +SDevice: LSI Logic Parallel SCSI Controller +Rev: 01 + +Slot: 00:11.0 +Class: PCI bridge +Vendor: VMware +Device: PCI bridge +Rev: 02 +ProgIf: 01 + +Slot: 00:15.0 +Class: PCI bridge +Vendor: VMware +Device: PCI Express Root Port +Rev: 01 + +Slot: 00:15.1 +Class: PCI bridge +Vendor: VMware +Device: PCI Express Root Port +Rev: 01 + +Slot: 00:15.2 +Class: PCI bridge +Vendor: VMware +Device: PCI Express Root Port +Rev: 01 + +Slot: 00:15.3 +Class: PCI bridge +Vendor: VMware +Device: PCI Express Root Port +Rev: 01 + +Slot: 00:15.4 +Class: PCI bridge +Vendor: VMware +Device: PCI Express Root Port +Rev: 01 + +Slot: 00:15.5 +Class: PCI bridge +Vendor: VMware +Device: PCI Express Root Port +Rev: 01 + +Slot: 00:15.6 +Class: PCI bridge +Vendor: VMware +Device: PCI Express Root Port +Rev: 01 + +Slot: 00:15.7 +Class: PCI bridge +Vendor: VMware +Device: PCI Express Root Port +Rev: 01 + +Slot: 00:16.0 +Class: PCI bridge +Vendor: VMware +Device: PCI Express Root Port +Rev: 01 + +Slot: 00:16.1 +Class: PCI bridge +Vendor: VMware +Device: PCI Express Root Port +Rev: 01 + +Slot: 00:16.2 +Class: PCI bridge +Vendor: VMware +Device: PCI Express Root Port +Rev: 01 + +Slot: 00:16.3 +Class: PCI bridge +Vendor: VMware +Device: PCI Express Root Port +Rev: 01 + +Slot: 00:16.4 +Class: PCI bridge +Vendor: VMware +Device: PCI Express Root Port +Rev: 01 + +Slot: 00:16.5 +Class: PCI bridge +Vendor: VMware +Device: PCI Express Root Port +Rev: 01 + +Slot: 00:16.6 +Class: PCI bridge +Vendor: VMware +Device: PCI Express Root Port +Rev: 01 + +Slot: 00:16.7 +Class: PCI bridge +Vendor: VMware +Device: PCI Express Root Port +Rev: 01 + +Slot: 00:17.0 +Class: PCI bridge +Vendor: VMware +Device: PCI Express Root Port +Rev: 01 + +Slot: 00:17.1 +Class: PCI bridge +Vendor: VMware +Device: PCI Express Root Port +Rev: 01 + +Slot: 00:17.2 +Class: PCI bridge +Vendor: VMware +Device: PCI Express Root Port +Rev: 01 + +Slot: 00:17.3 +Class: PCI bridge +Vendor: VMware +Device: PCI Express Root Port +Rev: 01 + +Slot: 00:17.4 +Class: PCI bridge +Vendor: VMware +Device: PCI Express Root Port +Rev: 01 + +Slot: 00:17.5 +Class: PCI bridge +Vendor: VMware +Device: PCI Express Root Port +Rev: 01 + +Slot: 00:17.6 +Class: PCI bridge +Vendor: VMware +Device: PCI Express Root Port +Rev: 01 + +Slot: 00:17.7 +Class: PCI bridge +Vendor: VMware +Device: PCI Express Root Port +Rev: 01 + +Slot: 00:18.0 +Class: PCI bridge +Vendor: VMware +Device: PCI Express Root Port +Rev: 01 + +Slot: 00:18.1 +Class: PCI bridge +Vendor: VMware +Device: PCI Express Root Port +Rev: 01 + +Slot: 00:18.2 +Class: PCI bridge +Vendor: VMware +Device: PCI Express Root Port +Rev: 01 + +Slot: 00:18.3 +Class: PCI bridge +Vendor: VMware +Device: PCI Express Root Port +Rev: 01 + +Slot: 00:18.4 +Class: PCI bridge +Vendor: VMware +Device: PCI Express Root Port +Rev: 01 + +Slot: 00:18.5 +Class: PCI bridge +Vendor: VMware +Device: PCI Express Root Port +Rev: 01 + +Slot: 00:18.6 +Class: PCI bridge +Vendor: VMware +Device: PCI Express Root Port +Rev: 01 + +Slot: 00:18.7 +Class: PCI bridge +Vendor: VMware +Device: PCI Express Root Port +Rev: 01 + +Slot: 02:00.0 +Class: USB controller +Vendor: VMware +Device: USB1.1 UHCI Controller +SVendor: VMware +SDevice: USB1.1 UHCI Controller +PhySlot: 32 + +Slot: 02:01.0 +Class: Ethernet controller +Vendor: Intel Corporation +Device: 82545EM Gigabit Ethernet Controller (Copper) +SVendor: VMware +SDevice: PRO/1000 MT Single Port Adapter +PhySlot: 33 +Rev: 01 + +Slot: 02:02.0 +Class: Multimedia audio controller +Vendor: Ensoniq +Device: ES1371/ES1373 / Creative Labs CT2518 +SVendor: Ensoniq +SDevice: Audio PCI 64V/128/5200 / Creative CT4810/CT5803/CT5806 [Sound Blaster PCI] +PhySlot: 34 +Rev: 02 + +Slot: 02:03.0 +Class: USB controller +Vendor: VMware +Device: USB2 EHCI Controller +SVendor: VMware +SDevice: USB2 EHCI Controller +PhySlot: 35 +ProgIf: 20 + +Slot: 02:05.0 +Class: SATA controller +Vendor: VMware +Device: SATA AHCI controller +SVendor: VMware +SDevice: SATA AHCI controller +PhySlot: 37 +ProgIf: 01 + diff --git a/tests/fixtures/ubuntu-20.10/lspci-nmmv.out b/tests/fixtures/ubuntu-20.10/lspci-nmmv.out new file mode 100644 index 00000000..24855c13 --- /dev/null +++ b/tests/fixtures/ubuntu-20.10/lspci-nmmv.out @@ -0,0 +1,305 @@ +Slot: 00:00.0 +Class: 0600 +Vendor: 8086 +Device: 7190 +SVendor: 15ad +SDevice: 1976 +Rev: 01 + +Slot: 00:01.0 +Class: 0604 +Vendor: 8086 +Device: 7191 +Rev: 01 + +Slot: 00:07.0 +Class: 0601 +Vendor: 8086 +Device: 7110 +SVendor: 15ad +SDevice: 1976 +Rev: 08 + +Slot: 00:07.1 +Class: 0101 +Vendor: 8086 +Device: 7111 +SVendor: 15ad +SDevice: 1976 +Rev: 01 +ProgIf: 8a + +Slot: 00:07.3 +Class: 0680 +Vendor: 8086 +Device: 7113 +SVendor: 15ad +SDevice: 1976 +Rev: 08 + +Slot: 00:07.7 +Class: 0880 +Vendor: 15ad +Device: 0740 +SVendor: 15ad +SDevice: 0740 +Rev: 10 + +Slot: 00:0f.0 +Class: 0300 +Vendor: 15ad +Device: 0405 +SVendor: 15ad +SDevice: 0405 + +Slot: 00:10.0 +Class: 0100 +Vendor: 1000 +Device: 0030 +SVendor: 15ad +SDevice: 1976 +Rev: 01 + +Slot: 00:11.0 +Class: 0604 +Vendor: 15ad +Device: 0790 +Rev: 02 +ProgIf: 01 + +Slot: 00:15.0 +Class: 0604 +Vendor: 15ad +Device: 07a0 +Rev: 01 + +Slot: 00:15.1 +Class: 0604 +Vendor: 15ad +Device: 07a0 +Rev: 01 + +Slot: 00:15.2 +Class: 0604 +Vendor: 15ad +Device: 07a0 +Rev: 01 + +Slot: 00:15.3 +Class: 0604 +Vendor: 15ad +Device: 07a0 +Rev: 01 + +Slot: 00:15.4 +Class: 0604 +Vendor: 15ad +Device: 07a0 +Rev: 01 + +Slot: 00:15.5 +Class: 0604 +Vendor: 15ad +Device: 07a0 +Rev: 01 + +Slot: 00:15.6 +Class: 0604 +Vendor: 15ad +Device: 07a0 +Rev: 01 + +Slot: 00:15.7 +Class: 0604 +Vendor: 15ad +Device: 07a0 +Rev: 01 + +Slot: 00:16.0 +Class: 0604 +Vendor: 15ad +Device: 07a0 +Rev: 01 + +Slot: 00:16.1 +Class: 0604 +Vendor: 15ad +Device: 07a0 +Rev: 01 + +Slot: 00:16.2 +Class: 0604 +Vendor: 15ad +Device: 07a0 +Rev: 01 + +Slot: 00:16.3 +Class: 0604 +Vendor: 15ad +Device: 07a0 +Rev: 01 + +Slot: 00:16.4 +Class: 0604 +Vendor: 15ad +Device: 07a0 +Rev: 01 + +Slot: 00:16.5 +Class: 0604 +Vendor: 15ad +Device: 07a0 +Rev: 01 + +Slot: 00:16.6 +Class: 0604 +Vendor: 15ad +Device: 07a0 +Rev: 01 + +Slot: 00:16.7 +Class: 0604 +Vendor: 15ad +Device: 07a0 +Rev: 01 + +Slot: 00:17.0 +Class: 0604 +Vendor: 15ad +Device: 07a0 +Rev: 01 + +Slot: 00:17.1 +Class: 0604 +Vendor: 15ad +Device: 07a0 +Rev: 01 + +Slot: 00:17.2 +Class: 0604 +Vendor: 15ad +Device: 07a0 +Rev: 01 + +Slot: 00:17.3 +Class: 0604 +Vendor: 15ad +Device: 07a0 +Rev: 01 + +Slot: 00:17.4 +Class: 0604 +Vendor: 15ad +Device: 07a0 +Rev: 01 + +Slot: 00:17.5 +Class: 0604 +Vendor: 15ad +Device: 07a0 +Rev: 01 + +Slot: 00:17.6 +Class: 0604 +Vendor: 15ad +Device: 07a0 +Rev: 01 + +Slot: 00:17.7 +Class: 0604 +Vendor: 15ad +Device: 07a0 +Rev: 01 + +Slot: 00:18.0 +Class: 0604 +Vendor: 15ad +Device: 07a0 +Rev: 01 + +Slot: 00:18.1 +Class: 0604 +Vendor: 15ad +Device: 07a0 +Rev: 01 + +Slot: 00:18.2 +Class: 0604 +Vendor: 15ad +Device: 07a0 +Rev: 01 + +Slot: 00:18.3 +Class: 0604 +Vendor: 15ad +Device: 07a0 +Rev: 01 + +Slot: 00:18.4 +Class: 0604 +Vendor: 15ad +Device: 07a0 +Rev: 01 + +Slot: 00:18.5 +Class: 0604 +Vendor: 15ad +Device: 07a0 +Rev: 01 + +Slot: 00:18.6 +Class: 0604 +Vendor: 15ad +Device: 07a0 +Rev: 01 + +Slot: 00:18.7 +Class: 0604 +Vendor: 15ad +Device: 07a0 +Rev: 01 + +Slot: 02:00.0 +Class: 0c03 +Vendor: 15ad +Device: 0774 +SVendor: 15ad +SDevice: 1976 +PhySlot: 32 + +Slot: 02:01.0 +Class: 0200 +Vendor: 8086 +Device: 100f +SVendor: 15ad +SDevice: 0750 +PhySlot: 33 +Rev: 01 + +Slot: 02:02.0 +Class: 0401 +Vendor: 1274 +Device: 1371 +SVendor: 1274 +SDevice: 1371 +PhySlot: 34 +Rev: 02 + +Slot: 02:03.0 +Class: 0c03 +Vendor: 15ad +Device: 0770 +SVendor: 15ad +SDevice: 0770 +PhySlot: 35 +ProgIf: 20 + +Slot: 02:05.0 +Class: 0106 +Vendor: 15ad +Device: 07e0 +SVendor: 15ad +SDevice: 07e0 +PhySlot: 37 +ProgIf: 01 + diff --git a/tests/fixtures/ubuntu-20.10/lspci-nnmmv.out b/tests/fixtures/ubuntu-20.10/lspci-nnmmv.out new file mode 100644 index 00000000..633c8f10 --- /dev/null +++ b/tests/fixtures/ubuntu-20.10/lspci-nnmmv.out @@ -0,0 +1,305 @@ +Slot: 00:00.0 +Class: Host bridge [0600] +Vendor: Intel Corporation [8086] +Device: 440BX/ZX/DX - 82443BX/ZX/DX Host bridge [7190] +SVendor: VMware [15ad] +SDevice: Virtual Machine Chipset [1976] +Rev: 01 + +Slot: 00:01.0 +Class: PCI bridge [0604] +Vendor: Intel Corporation [8086] +Device: 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge [7191] +Rev: 01 + +Slot: 00:07.0 +Class: ISA bridge [0601] +Vendor: Intel Corporation [8086] +Device: 82371AB/EB/MB PIIX4 ISA [7110] +SVendor: VMware [15ad] +SDevice: Virtual Machine Chipset [1976] +Rev: 08 + +Slot: 00:07.1 +Class: IDE interface [0101] +Vendor: Intel Corporation [8086] +Device: 82371AB/EB/MB PIIX4 IDE [7111] +SVendor: VMware [15ad] +SDevice: Virtual Machine Chipset [1976] +Rev: 01 +ProgIf: 8a + +Slot: 00:07.3 +Class: Bridge [0680] +Vendor: Intel Corporation [8086] +Device: 82371AB/EB/MB PIIX4 ACPI [7113] +SVendor: VMware [15ad] +SDevice: Virtual Machine Chipset [1976] +Rev: 08 + +Slot: 00:07.7 +Class: System peripheral [0880] +Vendor: VMware [15ad] +Device: Virtual Machine Communication Interface [0740] +SVendor: VMware [15ad] +SDevice: Virtual Machine Communication Interface [0740] +Rev: 10 + +Slot: 00:0f.0 +Class: VGA compatible controller [0300] +Vendor: VMware [15ad] +Device: SVGA II Adapter [0405] +SVendor: VMware [15ad] +SDevice: SVGA II Adapter [0405] + +Slot: 00:10.0 +Class: SCSI storage controller [0100] +Vendor: Broadcom / LSI [1000] +Device: 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI [0030] +SVendor: VMware [15ad] +SDevice: LSI Logic Parallel SCSI Controller [1976] +Rev: 01 + +Slot: 00:11.0 +Class: PCI bridge [0604] +Vendor: VMware [15ad] +Device: PCI bridge [0790] +Rev: 02 +ProgIf: 01 + +Slot: 00:15.0 +Class: PCI bridge [0604] +Vendor: VMware [15ad] +Device: PCI Express Root Port [07a0] +Rev: 01 + +Slot: 00:15.1 +Class: PCI bridge [0604] +Vendor: VMware [15ad] +Device: PCI Express Root Port [07a0] +Rev: 01 + +Slot: 00:15.2 +Class: PCI bridge [0604] +Vendor: VMware [15ad] +Device: PCI Express Root Port [07a0] +Rev: 01 + +Slot: 00:15.3 +Class: PCI bridge [0604] +Vendor: VMware [15ad] +Device: PCI Express Root Port [07a0] +Rev: 01 + +Slot: 00:15.4 +Class: PCI bridge [0604] +Vendor: VMware [15ad] +Device: PCI Express Root Port [07a0] +Rev: 01 + +Slot: 00:15.5 +Class: PCI bridge [0604] +Vendor: VMware [15ad] +Device: PCI Express Root Port [07a0] +Rev: 01 + +Slot: 00:15.6 +Class: PCI bridge [0604] +Vendor: VMware [15ad] +Device: PCI Express Root Port [07a0] +Rev: 01 + +Slot: 00:15.7 +Class: PCI bridge [0604] +Vendor: VMware [15ad] +Device: PCI Express Root Port [07a0] +Rev: 01 + +Slot: 00:16.0 +Class: PCI bridge [0604] +Vendor: VMware [15ad] +Device: PCI Express Root Port [07a0] +Rev: 01 + +Slot: 00:16.1 +Class: PCI bridge [0604] +Vendor: VMware [15ad] +Device: PCI Express Root Port [07a0] +Rev: 01 + +Slot: 00:16.2 +Class: PCI bridge [0604] +Vendor: VMware [15ad] +Device: PCI Express Root Port [07a0] +Rev: 01 + +Slot: 00:16.3 +Class: PCI bridge [0604] +Vendor: VMware [15ad] +Device: PCI Express Root Port [07a0] +Rev: 01 + +Slot: 00:16.4 +Class: PCI bridge [0604] +Vendor: VMware [15ad] +Device: PCI Express Root Port [07a0] +Rev: 01 + +Slot: 00:16.5 +Class: PCI bridge [0604] +Vendor: VMware [15ad] +Device: PCI Express Root Port [07a0] +Rev: 01 + +Slot: 00:16.6 +Class: PCI bridge [0604] +Vendor: VMware [15ad] +Device: PCI Express Root Port [07a0] +Rev: 01 + +Slot: 00:16.7 +Class: PCI bridge [0604] +Vendor: VMware [15ad] +Device: PCI Express Root Port [07a0] +Rev: 01 + +Slot: 00:17.0 +Class: PCI bridge [0604] +Vendor: VMware [15ad] +Device: PCI Express Root Port [07a0] +Rev: 01 + +Slot: 00:17.1 +Class: PCI bridge [0604] +Vendor: VMware [15ad] +Device: PCI Express Root Port [07a0] +Rev: 01 + +Slot: 00:17.2 +Class: PCI bridge [0604] +Vendor: VMware [15ad] +Device: PCI Express Root Port [07a0] +Rev: 01 + +Slot: 00:17.3 +Class: PCI bridge [0604] +Vendor: VMware [15ad] +Device: PCI Express Root Port [07a0] +Rev: 01 + +Slot: 00:17.4 +Class: PCI bridge [0604] +Vendor: VMware [15ad] +Device: PCI Express Root Port [07a0] +Rev: 01 + +Slot: 00:17.5 +Class: PCI bridge [0604] +Vendor: VMware [15ad] +Device: PCI Express Root Port [07a0] +Rev: 01 + +Slot: 00:17.6 +Class: PCI bridge [0604] +Vendor: VMware [15ad] +Device: PCI Express Root Port [07a0] +Rev: 01 + +Slot: 00:17.7 +Class: PCI bridge [0604] +Vendor: VMware [15ad] +Device: PCI Express Root Port [07a0] +Rev: 01 + +Slot: 00:18.0 +Class: PCI bridge [0604] +Vendor: VMware [15ad] +Device: PCI Express Root Port [07a0] +Rev: 01 + +Slot: 00:18.1 +Class: PCI bridge [0604] +Vendor: VMware [15ad] +Device: PCI Express Root Port [07a0] +Rev: 01 + +Slot: 00:18.2 +Class: PCI bridge [0604] +Vendor: VMware [15ad] +Device: PCI Express Root Port [07a0] +Rev: 01 + +Slot: 00:18.3 +Class: PCI bridge [0604] +Vendor: VMware [15ad] +Device: PCI Express Root Port [07a0] +Rev: 01 + +Slot: 00:18.4 +Class: PCI bridge [0604] +Vendor: VMware [15ad] +Device: PCI Express Root Port [07a0] +Rev: 01 + +Slot: 00:18.5 +Class: PCI bridge [0604] +Vendor: VMware [15ad] +Device: PCI Express Root Port [07a0] +Rev: 01 + +Slot: 00:18.6 +Class: PCI bridge [0604] +Vendor: VMware [15ad] +Device: PCI Express Root Port [07a0] +Rev: 01 + +Slot: 00:18.7 +Class: PCI bridge [0604] +Vendor: VMware [15ad] +Device: PCI Express Root Port [07a0] +Rev: 01 + +Slot: 02:00.0 +Class: USB controller [0c03] +Vendor: VMware [15ad] +Device: USB1.1 UHCI Controller [0774] +SVendor: VMware [15ad] +SDevice: USB1.1 UHCI Controller [1976] +PhySlot: 32 + +Slot: 02:01.0 +Class: Ethernet controller [0200] +Vendor: Intel Corporation [8086] +Device: 82545EM Gigabit Ethernet Controller (Copper) [100f] +SVendor: VMware [15ad] +SDevice: PRO/1000 MT Single Port Adapter [0750] +PhySlot: 33 +Rev: 01 + +Slot: 02:02.0 +Class: Multimedia audio controller [0401] +Vendor: Ensoniq [1274] +Device: ES1371/ES1373 / Creative Labs CT2518 [1371] +SVendor: Ensoniq [1274] +SDevice: Audio PCI 64V/128/5200 / Creative CT4810/CT5803/CT5806 [Sound Blaster PCI] [1371] +PhySlot: 34 +Rev: 02 + +Slot: 02:03.0 +Class: USB controller [0c03] +Vendor: VMware [15ad] +Device: USB2 EHCI Controller [0770] +SVendor: VMware [15ad] +SDevice: USB2 EHCI Controller [0770] +PhySlot: 35 +ProgIf: 20 + +Slot: 02:05.0 +Class: SATA controller [0106] +Vendor: VMware [15ad] +Device: SATA AHCI controller [07e0] +SVendor: VMware [15ad] +SDevice: SATA AHCI controller [07e0] +PhySlot: 37 +ProgIf: 01 +