From a03424c8213cc4169207c3cc2ccb8d0d752ee8c7 Mon Sep 17 00:00:00 2001 From: Vivek Kumar Chaubey Date: Mon, 17 Apr 2017 11:41:24 +0100 Subject: [PATCH] python-hwinfo 0.1.7 - adding device_bus_id attrib to nics - system_info(...) can now be exported as string rather than printing on screen - updated inspector.system_info(...) unittests with dummy data --- README.md | 13 +++--- hwinfo/pci/__init__.py | 4 ++ hwinfo/tools/inspector.py | 30 ++++++------ hwinfo/tools/tests/dummy_data.py | 4 ++ hwinfo/tools/tests/test_inspector.py | 70 ++++++++++++++++------------ setup.py | 5 +- 6 files changed, 73 insertions(+), 53 deletions(-) create mode 100644 hwinfo/tools/tests/dummy_data.py diff --git a/README.md b/README.md index f4ea586..abc8629 100644 --- a/README.md +++ b/README.md @@ -31,9 +31,10 @@ For example, to parse a list of PCI devices: from hwinfo.pci import PCIDevice from hwinfo.pci.lspci import LspciNNMMParser + from subprocess import check_output # Obtain the output of lspci -nnmm from somewhere - lspci_output = exec_command('lspci -nnmm') + lspci_output = check_output(["lspci", "-nnmm"]) # Parse the output using the LspciNNMMParser object parser = LspciNNMMParser(lspci_output) @@ -84,11 +85,11 @@ For inspecting the hardware present on a local machine, execute: Ethernet Controller Info: - +-------------------+-----------+------------------------------------+-----------+----------------+--------------+----------------+--------------+ - | vendor_name | vendor_id | device_name | device_id | subvendor_name | subvendor_id | subdevice_name | subdevice_id | - +-------------------+-----------+------------------------------------+-----------+----------------+--------------+----------------+--------------+ - | Intel Corporation | 8086 | 82579LM Gigabit Network Connection | 1502 | Dell | 1028 | [Device 05d2] | 05d2 | - +-------------------+-----------+------------------------------------+-----------+----------------+--------------+----------------+--------------+ + +---------------+-------------------+-----------+------------------------------------+-----------+----------------+--------------+----------------+--------------+ + | device_bus_id | vendor_name | vendor_id | device_name | device_id | subvendor_name | subvendor_id | subdevice_name | subdevice_id | + +---------------+-------------------+-----------+------------------------------------+-----------+----------------+--------------+----------------+--------------+ + | 02:00.0 | Intel Corporation | 8086 | 82579LM Gigabit Network Connection | 1502 | Dell | 1028 | [Device 05d2] | 05d2 | + +---------------+-------------------+-----------+------------------------------------+-----------+----------------+--------------+----------------+--------------+ Storage Controller Info: diff --git a/hwinfo/pci/__init__.py b/hwinfo/pci/__init__.py index 2005457..9590cfe 100644 --- a/hwinfo/pci/__init__.py +++ b/hwinfo/pci/__init__.py @@ -42,6 +42,9 @@ def get_device_name(self): def get_device_id(self): return self._fmt(self.lookup_value('pci_device_id')) + def get_device_bus_id(self): + return self._fmt(self.lookup_value('pci_device_bus_id')) + def get_vendor_name(self): return self._fmt(self.lookup_value('pci_vendor_name')) @@ -96,6 +99,7 @@ def get_info(self): def get_rec(self): rec = {} + rec['device_bus_id'] = self.get_device_bus_id() rec['vendor_name'] = self.get_vendor_name() rec['device_name'] = self.get_device_name() rec['vendor_id'] = self.get_vendor_id() diff --git a/hwinfo/tools/inspector.py b/hwinfo/tools/inspector.py index 1f2b0f1..fe71687 100644 --- a/hwinfo/tools/inspector.py +++ b/hwinfo/tools/inspector.py @@ -315,6 +315,7 @@ def tabulate_recs(recs, header): def tabulate_pci_recs(recs): header = [ + 'device_bus_id', 'vendor_name', 'vendor_id', 'device_name', @@ -338,12 +339,8 @@ def tabulate_cpu_recs(recs): ] return tabulate_recs(recs, header) -def print_unit(title, content): - print "%s" % title - print "" - print content - print "" - +def create_unit(title, content): + return "\n%s\n\n%s\n" % (str(title), str(content)) def validate_args(args): if args.machine != 'localhost': @@ -351,26 +348,29 @@ def validate_args(args): print "Error: you must specify a username and password to query a remote machine." sys.exit(1) -def print_system_info(host, options): +def system_info(host, options): + info = [] if 'bios' in options: - print_unit("Bios Info:", rec_to_table(host.get_info())) + info.append(create_unit("Bios Info:", rec_to_table(host.get_info()))) if 'cpu' in options: - print_unit("CPU Info:", tabulate_cpu_recs(host.get_cpu_info())) + info.append(create_unit("CPU Info:", tabulate_cpu_recs(host.get_cpu_info()))) if 'nic' in options: devices = pci_filter_for_nics(host.get_pci_devices()) - print_unit("Ethernet Controller Info:", tabulate_pci_recs([dev.get_rec() for dev in devices])) + info.append(create_unit("Ethernet Controller Info:", tabulate_pci_recs([dev.get_rec() for dev in devices]))) if 'storage' in options: devices = pci_filter_for_storage(host.get_pci_devices()) - print_unit("Storage Controller Info:", tabulate_pci_recs([dev.get_rec() for dev in devices])) + info.append(create_unit("Storage Controller Info:", tabulate_pci_recs([dev.get_rec() for dev in devices]))) if 'gpu' in options: devices = pci_filter_for_gpu(host.get_pci_devices()) if devices: - print_unit("GPU Info:", tabulate_pci_recs([dev.get_rec() for dev in devices])) + info.append(create_unit("GPU Info:", tabulate_pci_recs([dev.get_rec() for dev in devices]))) + + return "".join(info).strip() def export_system_info(host, options): rec = {} @@ -393,7 +393,7 @@ def export_system_info(host, options): devices = pci_filter_for_gpu(host.get_pci_devices()) rec["gpus"] = [dev.get_rec() for dev in devices] - print json.dumps(rec, indent=4, separators=(',', ': ')) + return json.dumps(rec, indent=4, separators=(',', ': ')) def main(): """Entry Point""" @@ -429,6 +429,6 @@ def main(): options = filter_choices if args.export: - export_system_info(host, options) + print export_system_info(host, options) else: - print_system_info(host, options) + print system_info(host, options) diff --git a/hwinfo/tools/tests/dummy_data.py b/hwinfo/tools/tests/dummy_data.py new file mode 100644 index 0000000..daa7675 --- /dev/null +++ b/hwinfo/tools/tests/dummy_data.py @@ -0,0 +1,4 @@ +LSPCI_DUMMY = '00:00.0 "Host bridge [0600]" "Intel Corporation [8086]" "5520 I/O Hub to ESI Port [3406]" -r13 "Hewlett-Packard Company [103c]" "ProLiant G6 series [330b]"\n00:01.0 "PCI bridge [0604]" "Intel Corporation [8086]" "5520/5500/X58 I/O Hub PCI Express Root Port 1 [3408]" -r13 "" ""\n00:02.0 "PCI bridge [0604]" "Intel Corporation [8086]" "5520/5500/X58 I/O Hub PCI Express Root Port 2 [3409]" -r13 "" ""\n00:03.0 "PCI bridge [0604]" "Intel Corporation [8086]" "5520/5500/X58 I/O Hub PCI Express Root Port 3 [340a]" -r13 "" ""\n00:04.0 "PCI bridge [0604]" "Intel Corporation [8086]" "5520/X58 I/O Hub PCI Express Root Port 4 [340b]" -r13 "" ""\n00:05.0 "PCI bridge [0604]" "Intel Corporation [8086]" "5520/X58 I/O Hub PCI Express Root Port 5 [340c]" -r13 "" ""\n00:06.0 "PCI bridge [0604]" "Intel Corporation [8086]" "5520/X58 I/O Hub PCI Express Root Port 6 [340d]" -r13 "" ""\n00:07.0 "PCI bridge [0604]" "Intel Corporation [8086]" "5520/5500/X58 I/O Hub PCI Express Root Port 7 [340e]" -r13 "" ""\n00:08.0 "PCI bridge [0604]" "Intel Corporation [8086]" "5520/5500/X58 I/O Hub PCI Express Root Port 8 [340f]" -r13 "" ""\n00:09.0 "PCI bridge [0604]" "Intel Corporation [8086]" "7500/5520/5500/X58 I/O Hub PCI Express Root Port 9 [3410]" -r13 "" ""\n00:0a.0 "PCI bridge [0604]" "Intel Corporation [8086]" "7500/5520/5500/X58 I/O Hub PCI Express Root Port 10 [3411]" -r13 "" ""\n00:0d.0 "Host bridge [0600]" "Intel Corporation [8086]" "Device [343a]" -r13 "" ""\n00:0d.1 "Host bridge [0600]" "Intel Corporation [8086]" "Device [343b]" -r13 "" ""\n00:0d.2 "Host bridge [0600]" "Intel Corporation [8086]" "Device [343c]" -r13 "" ""\n00:0d.3 "Host bridge [0600]" "Intel Corporation [8086]" "Device [343d]" -r13 "" ""\n00:0d.4 "Host bridge [0600]" "Intel Corporation [8086]" "7500/5520/5500/X58 Physical Layer Port 0 [3418]" -r13 "" ""\n00:0d.5 "Host bridge [0600]" "Intel Corporation [8086]" "7500/5520/5500 Physical Layer Port 1 [3419]" -r13 "" ""\n00:0d.6 "Host bridge [0600]" "Intel Corporation [8086]" "Device [341a]" -r13 "" ""\n00:0e.0 "Host bridge [0600]" "Intel Corporation [8086]" "Device [341c]" -r13 "" ""\n00:0e.1 "Host bridge [0600]" "Intel Corporation [8086]" "Device [341d]" -r13 "" ""\n00:0e.2 "Host bridge [0600]" "Intel Corporation [8086]" "Device [341e]" -r13 "" ""\n00:0e.3 "Host bridge [0600]" "Intel Corporation [8086]" "Device [341f]" -r13 "" ""\n00:0e.4 "Host bridge [0600]" "Intel Corporation [8086]" "Device [3439]" -r13 "" ""\n00:14.0 "PIC [0800]" "Intel Corporation [8086]" "7500/5520/5500/X58 I/O Hub System Management Registers [342e]" -r13 "Unknown vendor [003c]" "Device [000b]"\n00:14.1 "PIC [0800]" "Intel Corporation [8086]" "7500/5520/5500/X58 I/O Hub GPIO and Scratch Pad Registers [3422]" -r13 "Unknown vendor [003c]" "Device [000b]"\n00:14.2 "PIC [0800]" "Intel Corporation [8086]" "7500/5520/5500/X58 I/O Hub Control Status and RAS Registers [3423]" -r13 "Unknown vendor [003c]" "Device [000b]"\n00:1c.0 "PCI bridge [0604]" "Intel Corporation [8086]" "82801JI (ICH10 Family) PCI Express Root Port 1 [3a40]" "" ""\n00:1c.4 "PCI bridge [0604]" "Intel Corporation [8086]" "82801JI (ICH10 Family) PCI Express Root Port 5 [3a48]" "" ""\n00:1d.0 "USB controller [0c03]" "Intel Corporation [8086]" "82801JI (ICH10 Family) USB UHCI Controller #1 [3a34]" "Hewlett-Packard Company [103c]" "Device [330d]"\n00:1d.1 "USB controller [0c03]" "Intel Corporation [8086]" "82801JI (ICH10 Family) USB UHCI Controller #2 [3a35]" "Hewlett-Packard Company [103c]" "Device [330d]"\n00:1d.2 "USB controller [0c03]" "Intel Corporation [8086]" "82801JI (ICH10 Family) USB UHCI Controller #3 [3a36]" "Hewlett-Packard Company [103c]" "Device [330d]"\n00:1d.3 "USB controller [0c03]" "Intel Corporation [8086]" "82801JI (ICH10 Family) USB UHCI Controller #6 [3a39]" "Hewlett-Packard Company [103c]" "Device [330d]"\n00:1d.7 "USB controller [0c03]" "Intel Corporation [8086]" "82801JI (ICH10 Family) USB2 EHCI Controller #1 [3a3a]" -p20 "Hewlett-Packard Company [103c]" "Device [330d]"\n00:1e.0 "PCI bridge [0604]" "Intel Corporation [8086]" "82801 PCI Bridge [244e]" -r90 -p01 "" ""\n00:1f.0 "ISA bridge [0601]" "Intel Corporation [8086]" "82801JIB (ICH10) LPC Interface Controller [3a18]" "" ""\n01:00.0 "System peripheral [0880]" "Hewlett-Packard Company [103c]" "Integrated Lights-Out Standard Slave Instrumentation & System Support [3306]" -r05 "Hewlett-Packard Company [103c]" "iLO3 [330e]"\n01:00.1 "VGA compatible controller [0300]" "Matrox Electronics Systems Ltd. [102b]" "MGA G200EH [0533]" "Hewlett-Packard Company [103c]" "Device [330e]"\n01:00.2 "System peripheral [0880]" "Hewlett-Packard Company [103c]" "Integrated Lights-Out Standard Management Processor Support and Messaging [3307]" -r05 "Hewlett-Packard Company [103c]" "iLO3 [330e]"\n01:00.4 "USB controller [0c03]" "Hewlett-Packard Company [103c]" "Integrated Lights-Out Standard Virtual USB Controller [3300]" -r02 "Hewlett-Packard Company [103c]" "iLO3 [330e]"\n02:00.0 "Ethernet controller [0200]" "Emulex Corporation [19a2]" "OneConnect 10Gb NIC (be3) [0710]" -r01 "Hewlett-Packard Company [103c]" "NC553i 10Gb 2-port FlexFabric Converged Network Adapter [3315]"\n02:00.1 "Ethernet controller [0200]" "Emulex Corporation [19a2]" "OneConnect 10Gb NIC (be3) [0710]" -r01 "Hewlett-Packard Company [103c]" "NC553i 10Gb 2-port FlexFabric Converged Network Adapter [3315]"\n02:00.2 "Ethernet controller [0200]" "Emulex Corporation [19a2]" "OneConnect 10Gb NIC (be3) [0710]" -r01 "Hewlett-Packard Company [103c]" "NC553i 10Gb 2-port FlexFabric Converged Network Adapter [3315]"\n02:00.3 "Ethernet controller [0200]" "Emulex Corporation [19a2]" "OneConnect 10Gb NIC (be3) [0710]" -r01 "Hewlett-Packard Company [103c]" "NC553i 10Gb 2-port FlexFabric Converged Network Adapter [3315]"\n02:00.4 "Ethernet controller [0200]" "Emulex Corporation [19a2]" "OneConnect 10Gb NIC (be3) [0710]" -r01 "Hewlett-Packard Company [103c]" "NC553i 10Gb 2-port FlexFabric Converged Network Adapter [3315]"\n02:00.5 "Ethernet controller [0200]" "Emulex Corporation [19a2]" "OneConnect 10Gb NIC (be3) [0710]" -r01 "Hewlett-Packard Company [103c]" "NC553i 10Gb 2-port FlexFabric Converged Network Adapter [3315]"\n02:00.6 "Ethernet controller [0200]" "Emulex Corporation [19a2]" "OneConnect 10Gb NIC (be3) [0710]" -r01 "Hewlett-Packard Company [103c]" "NC553i 10Gb 2-port FlexFabric Converged Network Adapter [3315]"\n02:00.7 "Ethernet controller [0200]" "Emulex Corporation [19a2]" "OneConnect 10Gb NIC (be3) [0710]" -r01 "Hewlett-Packard Company [103c]" "NC553i 10Gb 2-port FlexFabric Converged Network Adapter [3315]"\n0c:00.0 "RAID bus controller [0104]" "Hewlett-Packard Company [103c]" "Smart Array G6 controllers [323a]" -r01 "Hewlett-Packard Company [103c]" "Smart Array P410i [3245]"\n3e:00.0 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series QuickPath Architecture Generic Non-core Registers [2c70]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3e:00.1 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series QuickPath Architecture System Address Decoder [2d81]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3e:02.0 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series QPI Link 0 [2d90]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3e:02.1 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series QPI Physical 0 [2d91]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3e:02.2 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series Mirror Port Link 0 [2d92]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3e:02.3 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series Mirror Port Link 1 [2d93]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3e:02.4 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series QPI Link 1 [2d94]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3e:02.5 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series QPI Physical 1 [2d95]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3e:03.0 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series Integrated Memory Controller Registers [2d98]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3e:03.1 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series Integrated Memory Controller Target Address Decoder [2d99]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3e:03.2 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series Integrated Memory Controller RAS Registers [2d9a]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3e:03.4 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series Integrated Memory Controller Test Registers [2d9c]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3e:04.0 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series Integrated Memory Controller Channel 0 Control [2da0]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3e:04.1 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series Integrated Memory Controller Channel 0 Address [2da1]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3e:04.2 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series Integrated Memory Controller Channel 0 Rank [2da2]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3e:04.3 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series Integrated Memory Controller Channel 0 Thermal Control [2da3]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3e:05.0 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series Integrated Memory Controller Channel 1 Control [2da8]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3e:05.1 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series Integrated Memory Controller Channel 1 Address [2da9]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3e:05.2 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series Integrated Memory Controller Channel 1 Rank [2daa]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3e:05.3 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series Integrated Memory Controller Channel 1 Thermal Control [2dab]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3e:06.0 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series Integrated Memory Controller Channel 2 Control [2db0]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3e:06.1 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series Integrated Memory Controller Channel 2 Address [2db1]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3e:06.2 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series Integrated Memory Controller Channel 2 Rank [2db2]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3e:06.3 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series Integrated Memory Controller Channel 2 Thermal Control [2db3]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3f:00.0 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series QuickPath Architecture Generic Non-core Registers [2c70]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3f:00.1 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series QuickPath Architecture System Address Decoder [2d81]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3f:02.0 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series QPI Link 0 [2d90]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3f:02.1 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series QPI Physical 0 [2d91]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3f:02.2 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series Mirror Port Link 0 [2d92]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3f:02.3 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series Mirror Port Link 1 [2d93]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3f:02.4 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series QPI Link 1 [2d94]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3f:02.5 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series QPI Physical 1 [2d95]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3f:03.0 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series Integrated Memory Controller Registers [2d98]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3f:03.1 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series Integrated Memory Controller Target Address Decoder [2d99]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3f:03.2 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series Integrated Memory Controller RAS Registers [2d9a]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3f:03.4 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series Integrated Memory Controller Test Registers [2d9c]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3f:04.0 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series Integrated Memory Controller Channel 0 Control [2da0]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3f:04.1 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series Integrated Memory Controller Channel 0 Address [2da1]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3f:04.2 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series Integrated Memory Controller Channel 0 Rank [2da2]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3f:04.3 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series Integrated Memory Controller Channel 0 Thermal Control [2da3]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3f:05.0 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series Integrated Memory Controller Channel 1 Control [2da8]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3f:05.1 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series Integrated Memory Controller Channel 1 Address [2da9]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3f:05.2 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series Integrated Memory Controller Channel 1 Rank [2daa]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3f:05.3 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series Integrated Memory Controller Channel 1 Thermal Control [2dab]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3f:06.0 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series Integrated Memory Controller Channel 2 Control [2db0]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3f:06.1 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series Integrated Memory Controller Channel 2 Address [2db1]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3f:06.2 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series Integrated Memory Controller Channel 2 Rank [2db2]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"\n3f:06.3 "Host bridge [0600]" "Intel Corporation [8086]" "Xeon 5600 Series Integrated Memory Controller Channel 2 Thermal Control [2db3]" -r02 "Hewlett-Packard Company [103c]" "Device [330c]"' +DMIDECODE_DUMMY = '# dmidecode 2.12-dmifs\nSMBIOS 2.7 present.\n104 structures occupying 3269 bytes.\nTable at 0xF37FE000.\n\nHandle 0x0000, DMI type 0, 24 bytes\nBIOS Information\n\tVendor: HP\n\tVersion: I27\n\tRelease Date: 08/16/2015\n\tAddress: 0xF0000\n\tRuntime Size: 64 kB\n\tROM Size: 8192 kB\n\tCharacteristics:\n\t\tPCI is supported\n\t\tPNP is supported\n\t\tBIOS is upgradeable\n\t\tBIOS shadowing is allowed\n\t\tESCD support is available\n\t\tBoot from CD is supported\n\t\tSelectable boot is supported\n\t\tEDD is supported\n\t\t5.25"/360 kB floppy services are supported (int 13h)\n\t\t5.25"/1.2 MB floppy services are supported (int 13h)\n\t\t3.5"/720 kB floppy services are supported (int 13h)\n\t\tPrint screen service is supported (int 5h)\n\t\t8042 keyboard services are supported (int 9h)\n\t\tSerial services are supported (int 14h)\n\t\tPrinter services are supported (int 17h)\n\t\tCGA/mono video services are supported (int 10h)\n\t\tACPI is supported\n\t\tUSB legacy is supported\n\t\tBIOS boot specification is supported\n\t\tFunction key-initiated network boot is supported\n\t\tTargeted content distribution is supported\n\tFirmware Revision: 1.87\n\nHandle 0x0100, DMI type 1, 27 bytes\nSystem Information\n\tManufacturer: HP\n\tProduct Name: ProLiant BL460c G7\n\tVersion: Not Specified\n\tSerial Number: USE2161NYR \n\tUUID: 37333036-3831-5355-4532-3136314E5952\n\tWake-up Type: Power Switch\n\tSKU Number: 603718-B21 \n\tFamily: ProLiant\n\nHandle 0x0300, DMI type 3, 17 bytes\nChassis Information\n\tManufacturer: HP\n\tType: Blade\n\tLock: Not Present\n\tVersion: Not Specified\n\tSerial Number: SGH215PJK8 \n\tAsset Tag: \n\tBoot-up State: Safe\n\tPower Supply State: Safe\n\tThermal State: Safe\n\tSecurity Status: Unknown\n\tOEM Information: 0x00000000\n\nHandle 0x0400, DMI type 4, 42 bytes\nProcessor Information\n\tSocket Designation: Proc 1\n\tType: Central Processor\n\tFamily: Xeon\n\tManufacturer: Intel\n\tID: C2 06 02 00 FF FB EB BF\n\tSignature: Type 0, Family 6, Model 44, Stepping 2\n\tFlags:\n\t\tFPU (Floating-point unit on-chip)\n\t\tVME (Virtual mode extension)\n\t\tDE (Debugging extension)\n\t\tPSE (Page size extension)\n\t\tTSC (Time stamp counter)\n\t\tMSR (Model specific registers)\n\t\tPAE (Physical address extension)\n\t\tMCE (Machine check exception)\n\t\tCX8 (CMPXCHG8 instruction supported)\n\t\tAPIC (On-chip APIC hardware supported)\n\t\tSEP (Fast system call)\n\t\tMTRR (Memory type range registers)\n\t\tPGE (Page global enable)\n\t\tMCA (Machine check architecture)\n\t\tCMOV (Conditional move instruction supported)\n\t\tPAT (Page attribute table)\n\t\tPSE-36 (36-bit page size extension)\n\t\tCLFSH (CLFLUSH instruction supported)\n\t\tDS (Debug store)\n\t\tACPI (ACPI supported)\n\t\tMMX (MMX technology supported)\n\t\tFXSR (FXSAVE and FXSTOR instructions supported)\n\t\tSSE (Streaming SIMD extensions)\n\t\tSSE2 (Streaming SIMD extensions 2)\n\t\tSS (Self-snoop)\n\t\tHTT (Multi-threading)\n\t\tTM (Thermal monitor supported)\n\t\tPBE (Pending break enabled)\n\tVersion: Intel(R) Xeon(R) CPU X5650 @ 2.67GHz \n\tVoltage: 1.4 V\n\tExternal Clock: 133 MHz\n\tMax Speed: 4800 MHz\n\tCurrent Speed: 2667 MHz\n\tStatus: Populated, Enabled\n\tUpgrade: Socket LGA1366\n\tL1 Cache Handle: 0x0710\n\tL2 Cache Handle: 0x0720\n\tL3 Cache Handle: 0x0730\n\tSerial Number: Not Specified\n\tAsset Tag: Not Specified\n\tPart Number: Not Specified\n\tCore Count: 6\n\tCore Enabled: 6\n\tThread Count: 12\n\tCharacteristics:\n\t\t64-bit capable\n\nHandle 0x0406, DMI type 4, 42 bytes\nProcessor Information\n\tSocket Designation: Proc 2\n\tType: Central Processor\n\tFamily: Xeon\n\tManufacturer: Intel\n\tID: C2 06 02 00 FF FB EB BF\n\tSignature: Type 0, Family 6, Model 44, Stepping 2\n\tFlags:\n\t\tFPU (Floating-point unit on-chip)\n\t\tVME (Virtual mode extension)\n\t\tDE (Debugging extension)\n\t\tPSE (Page size extension)\n\t\tTSC (Time stamp counter)\n\t\tMSR (Model specific registers)\n\t\tPAE (Physical address extension)\n\t\tMCE (Machine check exception)\n\t\tCX8 (CMPXCHG8 instruction supported)\n\t\tAPIC (On-chip APIC hardware supported)\n\t\tSEP (Fast system call)\n\t\tMTRR (Memory type range registers)\n\t\tPGE (Page global enable)\n\t\tMCA (Machine check architecture)\n\t\tCMOV (Conditional move instruction supported)\n\t\tPAT (Page attribute table)\n\t\tPSE-36 (36-bit page size extension)\n\t\tCLFSH (CLFLUSH instruction supported)\n\t\tDS (Debug store)\n\t\tACPI (ACPI supported)\n\t\tMMX (MMX technology supported)\n\t\tFXSR (FXSAVE and FXSTOR instructions supported)\n\t\tSSE (Streaming SIMD extensions)\n\t\tSSE2 (Streaming SIMD extensions 2)\n\t\tSS (Self-snoop)\n\t\tHTT (Multi-threading)\n\t\tTM (Thermal monitor supported)\n\t\tPBE (Pending break enabled)\n\tVersion: Intel(R) Xeon(R) CPU X5650 @ 2.67GHz \n\tVoltage: 1.4 V\n\tExternal Clock: 133 MHz\n\tMax Speed: 4800 MHz\n\tCurrent Speed: 2667 MHz\n\tStatus: Populated, Idle\n\tUpgrade: Socket LGA1366\n\tL1 Cache Handle: 0x0716\n\tL2 Cache Handle: 0x0726\n\tL3 Cache Handle: 0x0736\n\tSerial Number: Not Specified\n\tAsset Tag: Not Specified\n\tPart Number: Not Specified\n\tCore Count: 6\n\tCore Enabled: 6\n\tThread Count: 12\n\tCharacteristics:\n\t\t64-bit capable\n\nHandle 0x0710, DMI type 7, 19 bytes\nCache Information\n\tSocket Designation: Processor 1 Internal L1 Cache\n\tConfiguration: Enabled, Not Socketed, Level 1\n\tOperational Mode: Write Back\n\tLocation: Internal\n\tInstalled Size: 192 kB\n\tMaximum Size: 192 kB\n\tSupported SRAM Types:\n\t\tBurst\n\tInstalled SRAM Type: Burst\n\tSpeed: Unknown\n\tError Correction Type: Single-bit ECC\n\tSystem Type: Data\n\tAssociativity: 8-way Set-associative\n\nHandle 0x0716, DMI type 7, 19 bytes\nCache Information\n\tSocket Designation: Processor 2 Internal L1 Cache\n\tConfiguration: Enabled, Not Socketed, Level 1\n\tOperational Mode: Write Back\n\tLocation: Internal\n\tInstalled Size: 192 kB\n\tMaximum Size: 192 kB\n\tSupported SRAM Types:\n\t\tBurst\n\tInstalled SRAM Type: Burst\n\tSpeed: Unknown\n\tError Correction Type: Single-bit ECC\n\tSystem Type: Data\n\tAssociativity: 8-way Set-associative\n\nHandle 0x0720, DMI type 7, 19 bytes\nCache Information\n\tSocket Designation: Processor 1 Internal L2 Cache\n\tConfiguration: Enabled, Not Socketed, Level 2\n\tOperational Mode: Write Back\n\tLocation: Internal\n\tInstalled Size: 1536 kB\n\tMaximum Size: 1536 kB\n\tSupported SRAM Types:\n\t\tBurst\n\tInstalled SRAM Type: Burst\n\tSpeed: Unknown\n\tError Correction Type: Single-bit ECC\n\tSystem Type: Unknown\n\tAssociativity: 8-way Set-associative\n\nHandle 0x0726, DMI type 7, 19 bytes\nCache Information\n\tSocket Designation: Processor 2 Internal L2 Cache\n\tConfiguration: Enabled, Not Socketed, Level 2\n\tOperational Mode: Write Back\n\tLocation: Internal\n\tInstalled Size: 1536 kB\n\tMaximum Size: 1536 kB\n\tSupported SRAM Types:\n\t\tBurst\n\tInstalled SRAM Type: Burst\n\tSpeed: Unknown\n\tError Correction Type: Single-bit ECC\n\tSystem Type: Unknown\n\tAssociativity: 8-way Set-associative\n\nHandle 0x0730, DMI type 7, 19 bytes\nCache Information\n\tSocket Designation: Processor 1 Internal L3 Cache\n\tConfiguration: Enabled, Not Socketed, Level 3\n\tOperational Mode: Write Back\n\tLocation: Internal\n\tInstalled Size: 12288 kB\n\tMaximum Size: 12288 kB\n\tSupported SRAM Types:\n\t\tBurst\n\tInstalled SRAM Type: Burst\n\tSpeed: Unknown\n\tError Correction Type: Single-bit ECC\n\tSystem Type: Unknown\n\tAssociativity: 16-way Set-associative\n\nHandle 0x0736, DMI type 7, 19 bytes\nCache Information\n\tSocket Designation: Processor 2 Internal L3 Cache\n\tConfiguration: Enabled, Not Socketed, Level 3\n\tOperational Mode: Write Back\n\tLocation: Internal\n\tInstalled Size: 12288 kB\n\tMaximum Size: 12288 kB\n\tSupported SRAM Types:\n\t\tBurst\n\tInstalled SRAM Type: Burst\n\tSpeed: Unknown\n\tError Correction Type: Single-bit ECC\n\tSystem Type: Unknown\n\tAssociativity: 16-way Set-associative\n\nHandle 0x0801, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: J53\n\tInternal Connector Type: Access Bus (USB)\n\tExternal Reference Designator: USB Port 1\n\tExternal Connector Type: Access Bus (USB)\n\tPort Type: USB\n\nHandle 0x0802, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: J53\n\tInternal Connector Type: Access Bus (USB)\n\tExternal Reference Designator: USB Port 2\n\tExternal Connector Type: Access Bus (USB)\n\tPort Type: USB\n\nHandle 0x0803, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: J3000\n\tInternal Connector Type: Access Bus (USB)\n\tExternal Reference Designator: USB Port 3\n\tExternal Connector Type: Access Bus (USB)\n\tPort Type: USB\n\nHandle 0x0807, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: J53\n\tInternal Connector Type: None\n\tExternal Reference Designator: Video Port\n\tExternal Connector Type: DB-15 female\n\tPort Type: Video Port\n\nHandle 0x0808, DMI type 8, 9 bytes\nPort Connector Information\n\tInternal Reference Designator: J53\n\tInternal Connector Type: None\n\tExternal Reference Designator: COM Port\n\tExternal Connector Type: DB-9 male\n\tPort Type: Serial Port 16550A Compatible\n\nHandle 0x0901, DMI type 9, 17 bytes\nSystem Slot Information\n\tDesignation: Mezzanine 1\n\tType: x8 PCI Express 2 x8\n\tCurrent Usage: Available\n\tLength: Long\n\tID: 1\n\tCharacteristics:\n\t\t3.3 V is provided\n\t\tPME signal is supported\n\tBus Address: 0000:06:00.0\n\nHandle 0x0902, DMI type 9, 17 bytes\nSystem Slot Information\n\tDesignation: Mezzanine 2\n\tType: x8 PCI Express 2 x8\n\tCurrent Usage: Available\n\tLength: Long\n\tID: 2\n\tCharacteristics:\n\t\t3.3 V is provided\n\t\tPME signal is supported\n\tBus Address: 0000:09:00.0\n\nHandle 0x0903, DMI type 9, 17 bytes\nSystem Slot Information\n\tDesignation: Mezzanine 3\n\tType: x4 PCI Express x4\n\tCurrent Usage: Available\n\tLength: Long\n\tID: 3\n\tCharacteristics:\n\t\t3.3 V is provided\n\t\tPME signal is supported\n\tBus Address: 0000:03:00.0\n\nHandle 0x0B00, DMI type 11, 5 bytes\nOEM Strings\n\tString 1: PSF: \n\tString 2: Product ID: 603718-B21 \n\nHandle 0x1000, DMI type 16, 23 bytes\nPhysical Memory Array\n\tLocation: System Board Or Motherboard\n\tUse: System Memory\n\tError Correction Type: Single-bit ECC\n\tMaximum Capacity: 192 GB\n\tError Information Handle: Not Provided\n\tNumber Of Devices: 6\n\nHandle 0x1001, DMI type 16, 23 bytes\nPhysical Memory Array\n\tLocation: System Board Or Motherboard\n\tUse: System Memory\n\tError Correction Type: Single-bit ECC\n\tMaximum Capacity: 192 GB\n\tError Information Handle: Not Provided\n\tNumber Of Devices: 6\n\nHandle 0x1100, DMI type 17, 34 bytes\nMemory Device\n\tArray Handle: 0x1000\n\tError Information Handle: Not Provided\n\tTotal Width: 72 bits\n\tData Width: 64 bits\n\tSize: 16384 MB\n\tForm Factor: DIMM\n\tSet: 1\n\tLocator: PROC 1 DIMM 1D\n\tBank Locator: Not Specified\n\tType: DDR3\n\tType Detail: Synchronous\n\tSpeed: 1067 MHz\n\tManufacturer: Not Specified\n\tSerial Number: Not Specified\n\tAsset Tag: Not Specified\n\tPart Number: Not Specified\n\tRank: 4\n\tConfigured Clock Speed: 800 MHz\n\nHandle 0x1101, DMI type 17, 34 bytes\nMemory Device\n\tArray Handle: 0x1000\n\tError Information Handle: Not Provided\n\tTotal Width: 72 bits\n\tData Width: 64 bits\n\tSize: 16384 MB\n\tForm Factor: DIMM\n\tSet: 2\n\tLocator: PROC 1 DIMM 2A\n\tBank Locator: Not Specified\n\tType: DDR3\n\tType Detail: Synchronous\n\tSpeed: 1067 MHz\n\tManufacturer: Not Specified\n\tSerial Number: Not Specified\n\tAsset Tag: Not Specified\n\tPart Number: Not Specified\n\tRank: 4\n\tConfigured Clock Speed: 800 MHz\n\nHandle 0x1102, DMI type 17, 34 bytes\nMemory Device\n\tArray Handle: 0x1000\n\tError Information Handle: Not Provided\n\tTotal Width: 72 bits\n\tData Width: 64 bits\n\tSize: 16384 MB\n\tForm Factor: DIMM\n\tSet: 3\n\tLocator: PROC 1 DIMM 3E\n\tBank Locator: Not Specified\n\tType: DDR3\n\tType Detail: Synchronous\n\tSpeed: 1067 MHz\n\tManufacturer: Not Specified\n\tSerial Number: Not Specified\n\tAsset Tag: Not Specified\n\tPart Number: Not Specified\n\tRank: 4\n\tConfigured Clock Speed: 800 MHz\n\nHandle 0x1103, DMI type 17, 34 bytes\nMemory Device\n\tArray Handle: 0x1000\n\tError Information Handle: Not Provided\n\tTotal Width: 72 bits\n\tData Width: 64 bits\n\tSize: 16384 MB\n\tForm Factor: DIMM\n\tSet: 4\n\tLocator: PROC 1 DIMM 4B\n\tBank Locator: Not Specified\n\tType: DDR3\n\tType Detail: Synchronous\n\tSpeed: 1067 MHz\n\tManufacturer: Not Specified\n\tSerial Number: Not Specified\n\tAsset Tag: Not Specified\n\tPart Number: Not Specified\n\tRank: 4\n\tConfigured Clock Speed: 800 MHz\n\nHandle 0x1104, DMI type 17, 34 bytes\nMemory Device\n\tArray Handle: 0x1000\n\tError Information Handle: Not Provided\n\tTotal Width: 72 bits\n\tData Width: 64 bits\n\tSize: 16384 MB\n\tForm Factor: DIMM\n\tSet: 5\n\tLocator: PROC 1 DIMM 5F\n\tBank Locator: Not Specified\n\tType: DDR3\n\tType Detail: Synchronous\n\tSpeed: 1067 MHz\n\tManufacturer: Not Specified\n\tSerial Number: Not Specified\n\tAsset Tag: Not Specified\n\tPart Number: Not Specified\n\tRank: 4\n\tConfigured Clock Speed: 800 MHz\n\nHandle 0x1105, DMI type 17, 34 bytes\nMemory Device\n\tArray Handle: 0x1000\n\tError Information Handle: Not Provided\n\tTotal Width: 72 bits\n\tData Width: 64 bits\n\tSize: 16384 MB\n\tForm Factor: DIMM\n\tSet: 6\n\tLocator: PROC 1 DIMM 6C\n\tBank Locator: Not Specified\n\tType: DDR3\n\tType Detail: Synchronous\n\tSpeed: 1067 MHz\n\tManufacturer: Not Specified\n\tSerial Number: Not Specified\n\tAsset Tag: Not Specified\n\tPart Number: Not Specified\n\tRank: 4\n\tConfigured Clock Speed: 800 MHz\n\nHandle 0x1106, DMI type 17, 34 bytes\nMemory Device\n\tArray Handle: 0x1001\n\tError Information Handle: Not Provided\n\tTotal Width: 72 bits\n\tData Width: 64 bits\n\tSize: 16384 MB\n\tForm Factor: DIMM\n\tSet: 7\n\tLocator: PROC 2 DIMM 1D\n\tBank Locator: Not Specified\n\tType: DDR3\n\tType Detail: Synchronous\n\tSpeed: 1067 MHz\n\tManufacturer: Not Specified\n\tSerial Number: Not Specified\n\tAsset Tag: Not Specified\n\tPart Number: Not Specified\n\tRank: 4\n\tConfigured Clock Speed: 800 MHz\n\nHandle 0x1107, DMI type 17, 34 bytes\nMemory Device\n\tArray Handle: 0x1001\n\tError Information Handle: Not Provided\n\tTotal Width: 72 bits\n\tData Width: 64 bits\n\tSize: 16384 MB\n\tForm Factor: DIMM\n\tSet: 8\n\tLocator: PROC 2 DIMM 2A\n\tBank Locator: Not Specified\n\tType: DDR3\n\tType Detail: Synchronous\n\tSpeed: 1067 MHz\n\tManufacturer: Not Specified\n\tSerial Number: Not Specified\n\tAsset Tag: Not Specified\n\tPart Number: Not Specified\n\tRank: 4\n\tConfigured Clock Speed: 800 MHz\n\nHandle 0x1108, DMI type 17, 34 bytes\nMemory Device\n\tArray Handle: 0x1001\n\tError Information Handle: Not Provided\n\tTotal Width: 72 bits\n\tData Width: 64 bits\n\tSize: 16384 MB\n\tForm Factor: DIMM\n\tSet: 9\n\tLocator: PROC 2 DIMM 3E\n\tBank Locator: Not Specified\n\tType: DDR3\n\tType Detail: Synchronous\n\tSpeed: 1067 MHz\n\tManufacturer: Not Specified\n\tSerial Number: Not Specified\n\tAsset Tag: Not Specified\n\tPart Number: Not Specified\n\tRank: 4\n\tConfigured Clock Speed: 800 MHz\n\nHandle 0x1109, DMI type 17, 34 bytes\nMemory Device\n\tArray Handle: 0x1001\n\tError Information Handle: Not Provided\n\tTotal Width: 72 bits\n\tData Width: 64 bits\n\tSize: 16384 MB\n\tForm Factor: DIMM\n\tSet: 10\n\tLocator: PROC 2 DIMM 4B\n\tBank Locator: Not Specified\n\tType: DDR3\n\tType Detail: Synchronous\n\tSpeed: 1067 MHz\n\tManufacturer: Not Specified\n\tSerial Number: Not Specified\n\tAsset Tag: Not Specified\n\tPart Number: Not Specified\n\tRank: 4\n\tConfigured Clock Speed: 800 MHz\n\nHandle 0x110A, DMI type 17, 34 bytes\nMemory Device\n\tArray Handle: 0x1001\n\tError Information Handle: Not Provided\n\tTotal Width: 72 bits\n\tData Width: 64 bits\n\tSize: 16384 MB\n\tForm Factor: DIMM\n\tSet: 11\n\tLocator: PROC 2 DIMM 5F\n\tBank Locator: Not Specified\n\tType: DDR3\n\tType Detail: Synchronous\n\tSpeed: 1067 MHz\n\tManufacturer: Not Specified\n\tSerial Number: Not Specified\n\tAsset Tag: Not Specified\n\tPart Number: Not Specified\n\tRank: 4\n\tConfigured Clock Speed: 800 MHz\n\nHandle 0x110B, DMI type 17, 34 bytes\nMemory Device\n\tArray Handle: 0x1001\n\tError Information Handle: Not Provided\n\tTotal Width: 72 bits\n\tData Width: 64 bits\n\tSize: 16384 MB\n\tForm Factor: DIMM\n\tSet: 12\n\tLocator: PROC 2 DIMM 6C\n\tBank Locator: Not Specified\n\tType: DDR3\n\tType Detail: Synchronous\n\tSpeed: 1067 MHz\n\tManufacturer: Not Specified\n\tSerial Number: Not Specified\n\tAsset Tag: Not Specified\n\tPart Number: Not Specified\n\tRank: 4\n\tConfigured Clock Speed: 800 MHz\n\nHandle 0x1300, DMI type 19, 31 bytes\nMemory Array Mapped Address\n\tStarting Address: 0x00000000000\n\tEnding Address: 0x000F3FFFFFF\n\tRange Size: 3904 MB\n\tPhysical Array Handle: 0x1001\n\tPartition Width: 1\n\nHandle 0x1301, DMI type 126, 31 bytes\nInactive\n\nHandle 0x1302, DMI type 19, 31 bytes\nMemory Array Mapped Address\n\tStarting Address: 0x00100000000\n\tEnding Address: 0x0180BFFFFFF\n\tRange Size: 94400 MB\n\tPhysical Array Handle: 0x1001\n\tPartition Width: 1\n\nHandle 0x1303, DMI type 19, 31 bytes\nMemory Array Mapped Address\n\tStarting Address: 0x0180C000000\n\tEnding Address: 0x0300BFFFFFF\n\tRange Size: 96 GB\n\tPhysical Array Handle: 0x1000\n\tPartition Width: 1\n\nHandle 0x1304, DMI type 126, 31 bytes\nInactive\n\nHandle 0x1305, DMI type 126, 31 bytes\nInactive\n\nHandle 0x1306, DMI type 126, 31 bytes\nInactive\n\nHandle 0x1307, DMI type 126, 31 bytes\nInactive\n\nHandle 0x2000, DMI type 32, 11 bytes\nSystem Boot Information\n\tStatus: No errors detected\n\nHandle 0x2600, DMI type 38, 18 bytes\nIPMI Device Information\n\tInterface Type: KCS (Keyboard Control Style)\n\tSpecification Version: 2.0\n\tI2C Slave Address: 0x10\n\tNV Storage Device: Not Present\n\tBase Address: 0x0000000000000CA2 (I/O)\n\tRegister Spacing: Successive Byte Boundaries\n\nHandle 0xC101, DMI type 193, 28 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tC1 1C 01 C1 01 01 02 03 04 05 13 13 00 00 00 00\n\t\t00 00 00 00 00 00 06 07 08 09 0A 0B\n\tStrings:\n\t\t07/02/2013\n\t\t03/08/2010\n\t\t \n\t\t \n\t\t1.6\n\t\tSystem Programmable Logic Device\n\t\t \n\t\t \n\t\t \n\t\t \n\t\t \n\nHandle 0xC200, DMI type 194, 5 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tC2 05 00 C2 01\n\nHandle 0xC300, DMI type 195, 5 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tC3 05 00 C3 01\n\tStrings:\n\t\t$0E1107AF\n\nHandle 0xC400, DMI type 196, 5 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tC4 05 00 C4 00\n\nHandle 0xC500, DMI type 197, 12 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tC5 0C 00 C5 00 04 20 01 FF 01 5F 00\n\nHandle 0xC506, DMI type 197, 12 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tC5 0C 06 C5 06 04 00 00 FF 02 5F 00\n\nHandle 0xD300, DMI type 211, 7 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tD3 07 00 D3 00 04 4C\n\nHandle 0xD306, DMI type 211, 7 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tD3 07 06 D3 06 04 4C\n\nHandle 0xC600, DMI type 198, 11 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tC6 0B 00 C6 05 00 00 00 00 00 01\n\nHandle 0xC700, DMI type 199, 52 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tC7 34 00 C7 0C 00 00 00 08 20 30 10 A4 06 01 00\n\t\t1B 00 00 00 15 20 27 06 A5 06 01 00 06 00 00 00\n\t\t09 20 22 12 C1 06 02 00 1D 00 00 00 15 20 04 08\n\t\tC2 06 02 00\n\nHandle 0xCD00, DMI type 205, 22 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tCD 16 00 CD 01 01 46 41 54 78 00 00 E0 FF 00 00\n\t\t00 00 00 00 0D 00\n\nHandle 0xCA00, DMI type 202, 9 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tCA 09 00 CA 00 11 FF 01 01\n\nHandle 0xCA01, DMI type 202, 9 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tCA 09 01 CA 01 11 FF 02 01\n\nHandle 0xCA02, DMI type 202, 9 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tCA 09 02 CA 02 11 FF 03 01\n\nHandle 0xCA03, DMI type 202, 9 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tCA 09 03 CA 03 11 FF 04 01\n\nHandle 0xCA04, DMI type 202, 9 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tCA 09 04 CA 04 11 FF 05 01\n\nHandle 0xCA05, DMI type 202, 9 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tCA 09 05 CA 05 11 FF 06 01\n\nHandle 0xCA06, DMI type 202, 9 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tCA 09 06 CA 06 11 FF 01 02\n\nHandle 0xCA07, DMI type 202, 9 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tCA 09 07 CA 07 11 FF 02 02\n\nHandle 0xCA08, DMI type 202, 9 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tCA 09 08 CA 08 11 FF 03 02\n\nHandle 0xCA09, DMI type 202, 9 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tCA 09 09 CA 09 11 FF 04 02\n\nHandle 0xCA0A, DMI type 202, 9 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tCA 09 0A CA 0A 11 FF 05 02\n\nHandle 0xCA0B, DMI type 202, 9 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tCA 09 0B CA 0B 11 FF 06 02\n\nHandle 0xCC00, DMI type 204, 11 bytes\nHP ProLiant System/Rack Locator\n\tRack Name: MIA2-4A-07 \n\tEnclosure Name: MIA03-BLC1 \n\tEnclosure Model: BladeSystem c7000 Enclosure G2 \n\tEnclosure Serial: SGH215PJK8 \n\tEnclosure Bays: 16\n\tServer Bay: 1 \n\tBays Filled: 1\n\nHandle 0xD100, DMI type 209, 68 bytes\nHP BIOS PXE NIC PCI and MAC Information\n\tNIC 1: PCI device 02:00.0, MAC address 00:26:FF:00:01:40\n\tNIC 2: PCI device 02:00.1, MAC address 00:26:FF:00:01:41\n\tNIC 3: PCI device 02:00.2, MAC address 00:26:FF:00:01:42\n\tNIC 4: PCI device 02:00.3, MAC address 00:26:FF:00:01:43\n\tNIC 5: PCI device 02:00.4, MAC address 00:26:FF:20:01:40\n\tNIC 6: PCI device 02:00.5, MAC address 00:26:FF:20:01:41\n\tNIC 7: PCI device 02:00.6, MAC address 00:26:FF:20:01:42\n\tNIC 8: PCI device 02:00.7, MAC address 00:26:FF:20:01:43\n\nHandle 0xD200, DMI type 210, 12 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tD2 0C 00 D2 45 01 00 00 00 00 00 00\n\nHandle 0xD400, DMI type 212, 24 bytes\nHP 64-bit CRU Information\n\tSignature: 0x55524324 ($CRU)\n\tPhysical Address: 0x00000000fff92000\n\tLength: 0x00004000\n\nHandle 0xD700, DMI type 215, 6 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tD7 06 00 D7 00 05\n\nHandle 0xDB00, DMI type 219, 8 bytes\nHP ProLiant Information\n\tPower Features: 0x00000bff\n\nHandle 0xDD00, DMI type 221, 20 bytes\nHP BIOS iSCSI NIC PCI and MAC Information\n\tNIC 1: PCI device 02:00.2, MAC address 00:26:FF:00:01:42\n\tNIC 2: PCI device 02:00.3, MAC address 00:26:FF:00:01:43\n\nHandle 0xDF00, DMI type 223, 7 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tDF 07 00 DF 66 46 70\n\nHandle 0xDE00, DMI type 222, 70 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tDE 46 00 DE 01 08 F0 00 F1 00 00 00 00 00 00 00\n\t\t00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00\n\t\t00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00\n\t\t00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00\n\t\t00 00 00 00 00 00\n\nHandle 0xE000, DMI type 224, 5 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tE0 05 00 E0 00\n\nHandle 0xE200, DMI type 226, 21 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tE2 15 00 E2 36 30 33 37 31 38 55 53 45 32 31 36\n\t\t31 4E 59 52 01\n\tStrings:\n\t\tUSE2161NYR \n\nHandle 0xE300, DMI type 227, 12 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tE3 0C 00 E3 00 04 00 11 0B A2 01 00\n\nHandle 0xE301, DMI type 227, 12 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tE3 0C 01 E3 00 04 01 11 0B A0 01 00\n\nHandle 0xE302, DMI type 227, 12 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tE3 0C 02 E3 00 04 02 11 0B A6 01 00\n\nHandle 0xE303, DMI type 227, 12 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tE3 0C 03 E3 00 04 03 11 0B A4 01 00\n\nHandle 0xE304, DMI type 227, 12 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tE3 0C 04 E3 00 04 04 11 0B AA 01 00\n\nHandle 0xE305, DMI type 227, 12 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tE3 0C 05 E3 00 04 05 11 0B A8 01 00\n\nHandle 0xE306, DMI type 227, 12 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tE3 0C 06 E3 06 04 06 11 0A A2 01 01\n\nHandle 0xE307, DMI type 227, 12 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tE3 0C 07 E3 06 04 07 11 0A A0 01 01\n\nHandle 0xE308, DMI type 227, 12 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tE3 0C 08 E3 06 04 08 11 0A A6 01 01\n\nHandle 0xE309, DMI type 227, 12 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tE3 0C 09 E3 06 04 09 11 0A A4 01 01\n\nHandle 0xE30A, DMI type 227, 12 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tE3 0C 0A E3 06 04 0A 11 0A AA 01 01\n\nHandle 0xE30B, DMI type 227, 12 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tE3 0C 0B E3 06 04 0B 11 0A A8 01 01\n\nHandle 0xE400, DMI type 228, 14 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tE4 0E 00 E4 00 00 00 00 00 00 00 FF 01 00\n\nHandle 0xE401, DMI type 228, 14 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tE4 0E 01 E4 01 00 00 00 00 00 00 FF 00 00\n\nHandle 0xE402, DMI type 228, 14 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tE4 0E 02 E4 02 00 00 00 00 00 00 FF 00 00\n\nHandle 0xE403, DMI type 228, 14 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tE4 0E 03 E4 03 00 00 00 00 00 00 FF 00 00\n\nHandle 0xE404, DMI type 228, 14 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tE4 0E 04 E4 04 00 00 00 00 00 00 FF 00 00\n\nHandle 0xE405, DMI type 228, 14 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tE4 0E 05 E4 05 00 00 00 00 00 00 FF 00 00\n\nHandle 0xE406, DMI type 228, 14 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tE4 0E 06 E4 06 00 00 00 00 00 00 FF 00 00\n\nHandle 0xE407, DMI type 228, 14 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tE4 0E 07 E4 07 00 00 00 00 00 00 FF 00 00\n\nHandle 0xE408, DMI type 228, 14 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tE4 0E 08 E4 08 02 04 03 00 00 00 00 00 00\n\nHandle 0xE409, DMI type 228, 14 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tE4 0E 09 E4 09 02 04 03 01 00 00 00 00 00\n\nHandle 0xE40A, DMI type 228, 14 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tE4 0E 0A E4 0A 02 04 03 02 00 00 00 00 00\n\nHandle 0xE40B, DMI type 228, 14 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tE4 0E 0B E4 0B 02 04 03 03 00 00 00 00 00\n\nHandle 0xE500, DMI type 229, 20 bytes\nOEM-specific Type\n\tHeader and Data:\n\t\tE5 14 00 E5 24 48 44 44 00 E0 63 F3 00 00 00 00\n\t\t00 20 00 00\n\nHandle 0x7F00, DMI type 127, 4 bytes\nEnd Of Table' +CPUINFO_DUMMY = 'processor\t: 0\nvendor_id\t: GenuineIntel\ncpu family\t: 6\nmodel\t\t: 44\nmodel name\t: Intel(R) Xeon(R) CPU X5650 @ 2.67GHz\nstepping\t: 2\nmicrocode\t: 0x1d\ncpu MHz\t\t: 2666.802\ncache size\t: 12288 KB\nphysical id\t: 1\nsiblings\t: 12\ncore id\t\t: 0\ncpu cores\t: 6\napicid\t\t: 32\ninitial apicid\t: 32\nfpu\t\t: yes\nfpu_exception\t: yes\ncpuid level\t: 11\nwp\t\t: yes\nflags\t\t: fpu de tsc msr pae mce cx8 apic sep mca cmov pat clflush acpi mmx fxsr sse sse2 ht syscall nx lm constant_tsc arch_perfmon rep_good nopl nonstop_tsc pni pclmulqdq monitor est ssse3 cx16 sse4_1 sse4_2 popcnt aes hypervisor lahf_lm ida arat epb dtherm\nbugs\t\t:\nbogomips\t: 5333.60\nclflush size\t: 64\ncache_alignment\t: 64\naddress sizes\t: 40 bits physical, 48 bits virtual\npower management:\n\nprocessor\t: 1\nvendor_id\t: GenuineIntel\ncpu family\t: 6\nmodel\t\t: 44\nmodel name\t: Intel(R) Xeon(R) CPU X5650 @ 2.67GHz\nstepping\t: 2\nmicrocode\t: 0x1d\ncpu MHz\t\t: 2666.802\ncache size\t: 12288 KB\nphysical id\t: 1\nsiblings\t: 12\ncore id\t\t: 0\ncpu cores\t: 6\napicid\t\t: 33\ninitial apicid\t: 33\nfpu\t\t: yes\nfpu_exception\t: yes\ncpuid level\t: 11\nwp\t\t: yes\nflags\t\t: fpu de tsc msr pae mce cx8 apic sep mca cmov pat clflush acpi mmx fxsr sse sse2 ht syscall nx lm constant_tsc arch_perfmon rep_good nopl nonstop_tsc pni pclmulqdq monitor est ssse3 cx16 sse4_1 sse4_2 popcnt aes hypervisor lahf_lm ida arat epb dtherm\nbugs\t\t:\nbogomips\t: 5333.60\nclflush size\t: 64\ncache_alignment\t: 64\naddress sizes\t: 40 bits physical, 48 bits virtual\npower management:\n\nprocessor\t: 2\nvendor_id\t: GenuineIntel\ncpu family\t: 6\nmodel\t\t: 44\nmodel name\t: Intel(R) Xeon(R) CPU X5650 @ 2.67GHz\nstepping\t: 2\nmicrocode\t: 0x1d\ncpu MHz\t\t: 2666.802\ncache size\t: 12288 KB\nphysical id\t: 1\nsiblings\t: 12\ncore id\t\t: 1\ncpu cores\t: 6\napicid\t\t: 34\ninitial apicid\t: 34\nfpu\t\t: yes\nfpu_exception\t: yes\ncpuid level\t: 11\nwp\t\t: yes\nflags\t\t: fpu de tsc msr pae mce cx8 apic sep mca cmov pat clflush acpi mmx fxsr sse sse2 ht syscall nx lm constant_tsc arch_perfmon rep_good nopl nonstop_tsc pni pclmulqdq monitor est ssse3 cx16 sse4_1 sse4_2 popcnt aes hypervisor lahf_lm ida arat epb dtherm\nbugs\t\t:\nbogomips\t: 5333.60\nclflush size\t: 64\ncache_alignment\t: 64\naddress sizes\t: 40 bits physical, 48 bits virtual\npower management:\n\nprocessor\t: 3\nvendor_id\t: GenuineIntel\ncpu family\t: 6\nmodel\t\t: 44\nmodel name\t: Intel(R) Xeon(R) CPU X5650 @ 2.67GHz\nstepping\t: 2\nmicrocode\t: 0x1d\ncpu MHz\t\t: 2666.802\ncache size\t: 12288 KB\nphysical id\t: 1\nsiblings\t: 12\ncore id\t\t: 1\ncpu cores\t: 6\napicid\t\t: 35\ninitial apicid\t: 35\nfpu\t\t: yes\nfpu_exception\t: yes\ncpuid level\t: 11\nwp\t\t: yes\nflags\t\t: fpu de tsc msr pae mce cx8 apic sep mca cmov pat clflush acpi mmx fxsr sse sse2 ht syscall nx lm constant_tsc arch_perfmon rep_good nopl nonstop_tsc pni pclmulqdq monitor est ssse3 cx16 sse4_1 sse4_2 popcnt aes hypervisor lahf_lm ida arat epb dtherm\nbugs\t\t:\nbogomips\t: 5333.60\nclflush size\t: 64\ncache_alignment\t: 64\naddress sizes\t: 40 bits physical, 48 bits virtual\npower management:\n\nprocessor\t: 4\nvendor_id\t: GenuineIntel\ncpu family\t: 6\nmodel\t\t: 44\nmodel name\t: Intel(R) Xeon(R) CPU X5650 @ 2.67GHz\nstepping\t: 2\nmicrocode\t: 0x1d\ncpu MHz\t\t: 2666.802\ncache size\t: 12288 KB\nphysical id\t: 1\nsiblings\t: 12\ncore id\t\t: 2\ncpu cores\t: 6\napicid\t\t: 36\ninitial apicid\t: 36\nfpu\t\t: yes\nfpu_exception\t: yes\ncpuid level\t: 11\nwp\t\t: yes\nflags\t\t: fpu de tsc msr pae mce cx8 apic sep mca cmov pat clflush acpi mmx fxsr sse sse2 ht syscall nx lm constant_tsc arch_perfmon rep_good nopl nonstop_tsc pni pclmulqdq monitor est ssse3 cx16 sse4_1 sse4_2 popcnt aes hypervisor lahf_lm ida arat epb dtherm\nbugs\t\t:\nbogomips\t: 5333.60\nclflush size\t: 64\ncache_alignment\t: 64\naddress sizes\t: 40 bits physical, 48 bits virtual\npower management:\n\nprocessor\t: 5\nvendor_id\t: GenuineIntel\ncpu family\t: 6\nmodel\t\t: 44\nmodel name\t: Intel(R) Xeon(R) CPU X5650 @ 2.67GHz\nstepping\t: 2\nmicrocode\t: 0x1d\ncpu MHz\t\t: 2666.802\ncache size\t: 12288 KB\nphysical id\t: 1\nsiblings\t: 12\ncore id\t\t: 2\ncpu cores\t: 6\napicid\t\t: 37\ninitial apicid\t: 37\nfpu\t\t: yes\nfpu_exception\t: yes\ncpuid level\t: 11\nwp\t\t: yes\nflags\t\t: fpu de tsc msr pae mce cx8 apic sep mca cmov pat clflush acpi mmx fxsr sse sse2 ht syscall nx lm constant_tsc arch_perfmon rep_good nopl nonstop_tsc pni pclmulqdq monitor est ssse3 cx16 sse4_1 sse4_2 popcnt aes hypervisor lahf_lm ida arat epb dtherm\nbugs\t\t:\nbogomips\t: 5333.60\nclflush size\t: 64\ncache_alignment\t: 64\naddress sizes\t: 40 bits physical, 48 bits virtual\npower management:\n\nprocessor\t: 6\nvendor_id\t: GenuineIntel\ncpu family\t: 6\nmodel\t\t: 44\nmodel name\t: Intel(R) Xeon(R) CPU X5650 @ 2.67GHz\nstepping\t: 2\nmicrocode\t: 0x1d\ncpu MHz\t\t: 2666.802\ncache size\t: 12288 KB\nphysical id\t: 1\nsiblings\t: 12\ncore id\t\t: 8\ncpu cores\t: 6\napicid\t\t: 48\ninitial apicid\t: 48\nfpu\t\t: yes\nfpu_exception\t: yes\ncpuid level\t: 11\nwp\t\t: yes\nflags\t\t: fpu de tsc msr pae mce cx8 apic sep mca cmov pat clflush acpi mmx fxsr sse sse2 ht syscall nx lm constant_tsc arch_perfmon rep_good nopl nonstop_tsc pni pclmulqdq monitor est ssse3 cx16 sse4_1 sse4_2 popcnt aes hypervisor lahf_lm ida arat epb dtherm\nbugs\t\t:\nbogomips\t: 5333.60\nclflush size\t: 64\ncache_alignment\t: 64\naddress sizes\t: 40 bits physical, 48 bits virtual\npower management:\n\nprocessor\t: 7\nvendor_id\t: GenuineIntel\ncpu family\t: 6\nmodel\t\t: 44\nmodel name\t: Intel(R) Xeon(R) CPU X5650 @ 2.67GHz\nstepping\t: 2\nmicrocode\t: 0x1d\ncpu MHz\t\t: 2666.802\ncache size\t: 12288 KB\nphysical id\t: 1\nsiblings\t: 12\ncore id\t\t: 8\ncpu cores\t: 6\napicid\t\t: 49\ninitial apicid\t: 49\nfpu\t\t: yes\nfpu_exception\t: yes\ncpuid level\t: 11\nwp\t\t: yes\nflags\t\t: fpu de tsc msr pae mce cx8 apic sep mca cmov pat clflush acpi mmx fxsr sse sse2 ht syscall nx lm constant_tsc arch_perfmon rep_good nopl nonstop_tsc pni pclmulqdq monitor est ssse3 cx16 sse4_1 sse4_2 popcnt aes hypervisor lahf_lm ida arat epb dtherm\nbugs\t\t:\nbogomips\t: 5333.60\nclflush size\t: 64\ncache_alignment\t: 64\naddress sizes\t: 40 bits physical, 48 bits virtual\npower management:\n\nprocessor\t: 8\nvendor_id\t: GenuineIntel\ncpu family\t: 6\nmodel\t\t: 44\nmodel name\t: Intel(R) Xeon(R) CPU X5650 @ 2.67GHz\nstepping\t: 2\nmicrocode\t: 0x1d\ncpu MHz\t\t: 2666.802\ncache size\t: 12288 KB\nphysical id\t: 1\nsiblings\t: 12\ncore id\t\t: 9\ncpu cores\t: 6\napicid\t\t: 50\ninitial apicid\t: 50\nfpu\t\t: yes\nfpu_exception\t: yes\ncpuid level\t: 11\nwp\t\t: yes\nflags\t\t: fpu de tsc msr pae mce cx8 apic sep mca cmov pat clflush acpi mmx fxsr sse sse2 ht syscall nx lm constant_tsc arch_perfmon rep_good nopl nonstop_tsc pni pclmulqdq monitor est ssse3 cx16 sse4_1 sse4_2 popcnt aes hypervisor lahf_lm ida arat epb dtherm\nbugs\t\t:\nbogomips\t: 5333.60\nclflush size\t: 64\ncache_alignment\t: 64\naddress sizes\t: 40 bits physical, 48 bits virtual\npower management:\n\nprocessor\t: 9\nvendor_id\t: GenuineIntel\ncpu family\t: 6\nmodel\t\t: 44\nmodel name\t: Intel(R) Xeon(R) CPU X5650 @ 2.67GHz\nstepping\t: 2\nmicrocode\t: 0x1d\ncpu MHz\t\t: 2666.802\ncache size\t: 12288 KB\nphysical id\t: 1\nsiblings\t: 12\ncore id\t\t: 9\ncpu cores\t: 6\napicid\t\t: 51\ninitial apicid\t: 51\nfpu\t\t: yes\nfpu_exception\t: yes\ncpuid level\t: 11\nwp\t\t: yes\nflags\t\t: fpu de tsc msr pae mce cx8 apic sep mca cmov pat clflush acpi mmx fxsr sse sse2 ht syscall nx lm constant_tsc arch_perfmon rep_good nopl nonstop_tsc pni pclmulqdq monitor est ssse3 cx16 sse4_1 sse4_2 popcnt aes hypervisor lahf_lm ida arat epb dtherm\nbugs\t\t:\nbogomips\t: 5333.60\nclflush size\t: 64\ncache_alignment\t: 64\naddress sizes\t: 40 bits physical, 48 bits virtual\npower management:\n\nprocessor\t: 10\nvendor_id\t: GenuineIntel\ncpu family\t: 6\nmodel\t\t: 44\nmodel name\t: Intel(R) Xeon(R) CPU X5650 @ 2.67GHz\nstepping\t: 2\nmicrocode\t: 0x1d\ncpu MHz\t\t: 2666.802\ncache size\t: 12288 KB\nphysical id\t: 1\nsiblings\t: 12\ncore id\t\t: 10\ncpu cores\t: 6\napicid\t\t: 52\ninitial apicid\t: 52\nfpu\t\t: yes\nfpu_exception\t: yes\ncpuid level\t: 11\nwp\t\t: yes\nflags\t\t: fpu de tsc msr pae mce cx8 apic sep mca cmov pat clflush acpi mmx fxsr sse sse2 ht syscall nx lm constant_tsc arch_perfmon rep_good nopl nonstop_tsc pni pclmulqdq monitor est ssse3 cx16 sse4_1 sse4_2 popcnt aes hypervisor lahf_lm ida arat epb dtherm\nbugs\t\t:\nbogomips\t: 5333.60\nclflush size\t: 64\ncache_alignment\t: 64\naddress sizes\t: 40 bits physical, 48 bits virtual\npower management:\n\nprocessor\t: 11\nvendor_id\t: GenuineIntel\ncpu family\t: 6\nmodel\t\t: 44\nmodel name\t: Intel(R) Xeon(R) CPU X5650 @ 2.67GHz\nstepping\t: 2\nmicrocode\t: 0x1d\ncpu MHz\t\t: 2666.802\ncache size\t: 12288 KB\nphysical id\t: 1\nsiblings\t: 12\ncore id\t\t: 10\ncpu cores\t: 6\napicid\t\t: 53\ninitial apicid\t: 53\nfpu\t\t: yes\nfpu_exception\t: yes\ncpuid level\t: 11\nwp\t\t: yes\nflags\t\t: fpu de tsc msr pae mce cx8 apic sep mca cmov pat clflush acpi mmx fxsr sse sse2 ht syscall nx lm constant_tsc arch_perfmon rep_good nopl nonstop_tsc pni pclmulqdq monitor est ssse3 cx16 sse4_1 sse4_2 popcnt aes hypervisor lahf_lm ida arat epb dtherm\nbugs\t\t:\nbogomips\t: 5333.60\nclflush size\t: 64\ncache_alignment\t: 64\naddress sizes\t: 40 bits physical, 48 bits virtual\npower management:\n\nprocessor\t: 12\nvendor_id\t: GenuineIntel\ncpu family\t: 6\nmodel\t\t: 44\nmodel name\t: Intel(R) Xeon(R) CPU X5650 @ 2.67GHz\nstepping\t: 2\nmicrocode\t: 0x1d\ncpu MHz\t\t: 2666.802\ncache size\t: 12288 KB\nphysical id\t: 0\nsiblings\t: 4\ncore id\t\t: 0\ncpu cores\t: 2\napicid\t\t: 0\ninitial apicid\t: 0\nfpu\t\t: yes\nfpu_exception\t: yes\ncpuid level\t: 11\nwp\t\t: yes\nflags\t\t: fpu de tsc msr pae mce cx8 apic sep mca cmov pat clflush acpi mmx fxsr sse sse2 ht syscall nx lm constant_tsc arch_perfmon rep_good nopl nonstop_tsc pni pclmulqdq monitor est ssse3 cx16 sse4_1 sse4_2 popcnt aes hypervisor lahf_lm ida arat epb dtherm\nbugs\t\t:\nbogomips\t: 5333.60\nclflush size\t: 64\ncache_alignment\t: 64\naddress sizes\t: 40 bits physical, 48 bits virtual\npower management:\n\nprocessor\t: 13\nvendor_id\t: GenuineIntel\ncpu family\t: 6\nmodel\t\t: 44\nmodel name\t: Intel(R) Xeon(R) CPU X5650 @ 2.67GHz\nstepping\t: 2\nmicrocode\t: 0x1d\ncpu MHz\t\t: 2666.802\ncache size\t: 12288 KB\nphysical id\t: 0\nsiblings\t: 4\ncore id\t\t: 0\ncpu cores\t: 2\napicid\t\t: 1\ninitial apicid\t: 1\nfpu\t\t: yes\nfpu_exception\t: yes\ncpuid level\t: 11\nwp\t\t: yes\nflags\t\t: fpu de tsc msr pae mce cx8 apic sep mca cmov pat clflush acpi mmx fxsr sse sse2 ht syscall nx lm constant_tsc arch_perfmon rep_good nopl nonstop_tsc pni pclmulqdq monitor est ssse3 cx16 sse4_1 sse4_2 popcnt aes hypervisor lahf_lm ida arat epb dtherm\nbugs\t\t:\nbogomips\t: 5333.60\nclflush size\t: 64\ncache_alignment\t: 64\naddress sizes\t: 40 bits physical, 48 bits virtual\npower management:\n\nprocessor\t: 14\nvendor_id\t: GenuineIntel\ncpu family\t: 6\nmodel\t\t: 44\nmodel name\t: Intel(R) Xeon(R) CPU X5650 @ 2.67GHz\nstepping\t: 2\nmicrocode\t: 0x1d\ncpu MHz\t\t: 2666.802\ncache size\t: 12288 KB\nphysical id\t: 0\nsiblings\t: 4\ncore id\t\t: 1\ncpu cores\t: 2\napicid\t\t: 2\ninitial apicid\t: 2\nfpu\t\t: yes\nfpu_exception\t: yes\ncpuid level\t: 11\nwp\t\t: yes\nflags\t\t: fpu de tsc msr pae mce cx8 apic sep mca cmov pat clflush acpi mmx fxsr sse sse2 ht syscall nx lm constant_tsc arch_perfmon rep_good nopl nonstop_tsc pni pclmulqdq monitor est ssse3 cx16 sse4_1 sse4_2 popcnt aes hypervisor lahf_lm ida arat epb dtherm\nbugs\t\t:\nbogomips\t: 5333.60\nclflush size\t: 64\ncache_alignment\t: 64\naddress sizes\t: 40 bits physical, 48 bits virtual\npower management:\n\nprocessor\t: 15\nvendor_id\t: GenuineIntel\ncpu family\t: 6\nmodel\t\t: 44\nmodel name\t: Intel(R) Xeon(R) CPU X5650 @ 2.67GHz\nstepping\t: 2\nmicrocode\t: 0x1d\ncpu MHz\t\t: 2666.802\ncache size\t: 12288 KB\nphysical id\t: 0\nsiblings\t: 4\ncore id\t\t: 1\ncpu cores\t: 2\napicid\t\t: 3\ninitial apicid\t: 3\nfpu\t\t: yes\nfpu_exception\t: yes\ncpuid level\t: 11\nwp\t\t: yes\nflags\t\t: fpu de tsc msr pae mce cx8 apic sep mca cmov pat clflush acpi mmx fxsr sse sse2 ht syscall nx lm constant_tsc arch_perfmon rep_good nopl nonstop_tsc pni pclmulqdq monitor est ssse3 cx16 sse4_1 sse4_2 popcnt aes hypervisor lahf_lm ida arat epb dtherm\nbugs\t\t:\nbogomips\t: 5333.60\nclflush size\t: 64\ncache_alignment\t: 64\naddress sizes\t: 40 bits physical, 48 bits virtual\npower management:' +OS_DUMMY = "PRIMARY_DISK='/dev/disk/by-id/scsi-3600508b1001cdcf42b44598e937c8c4e'\nPRODUCT_VERSION='7.1.50'\nDOM0_VCPUS='16'\nCONTROL_DOMAIN_UUID='74bccacd-4815-4c46-acaf-277bf9457377'\nDOM0_MEM='4096'\nXEN_VERSION='4.7.2'\nCOMPANY_NAME_SHORT='Citrix'\nKERNEL_VERSION='4.4.52'\nMANAGEMENT_ADDRESS_TYPE='IPv4'\nPARTITION_LAYOUT='ROOT,BACKUP,LOG,BOOT,SWAP,SR'\nPRODUCT_VERSION_TEXT='7.1'\nPRODUCT_BRAND='XenServer'\nLINUX_KABI_VERSION='4.4.0+0'\nINSTALLATION_UUID='1b0e977e-8458-4869-bd86-7c83038829e9'\nPRODUCT_VERSION_TEXT_SHORT='7.1'\nBRAND_CONSOLE='XenCenter'\nPRODUCT_NAME='xenenterprise'\nMANAGEMENT_INTERFACE='xenbr0'\nPLATFORM_VERSION='2.2.50'\nBUILD_NUMBER='master/456'\nSTUNNEL_LEGACY='true'\nPLATFORM_NAME='XCP'\nBACKUP_PARTITION='/dev/disk/by-id/scsi-3600508b1001cdcf42b44598e937c8c4e-part2'\nINSTALLATION_DATE='2017-04-14 16:28:49.584876'\nCOMPANY_NAME='Citrix Systems, Inc.'" diff --git a/hwinfo/tools/tests/test_inspector.py b/hwinfo/tools/tests/test_inspector.py index 1835364..125d88c 100644 --- a/hwinfo/tools/tests/test_inspector.py +++ b/hwinfo/tools/tests/test_inspector.py @@ -5,6 +5,21 @@ from StringIO import StringIO from hwinfo.tools import inspector +import dummy_data + +class HostMock(inspector.Host): + + def get_lspci_data(self): + return dummy_data.LSPCI_DUMMY + + def get_dmidecode_data(self): + return dummy_data.DMIDECODE_DUMMY + + def get_cpuinfo_data(self): + return dummy_data.CPUINFO_DUMMY + + def get_os_data(self): + return dummy_data.OS_DUMMY class HostObjectTests(unittest.TestCase): @@ -325,49 +340,49 @@ class CLITests(unittest.TestCase): OPTIONS = ['bios', 'nic', 'storage', 'gpu', 'cpu'] - @patch('hwinfo.tools.inspector.print_system_info') + @patch('hwinfo.tools.inspector.system_info') @patch('hwinfo.tools.inspector.Host') @patch('sys.argv') - def test_local_machine(self, argv, host_cls, print_system_info): + def test_local_machine(self, argv, host_cls, system_info): argv = ['hwinfo'] mhost = host_cls.return_value = mock.MagicMock() inspector.main() host_cls.assert_called_with('localhost',None, None) - print_system_info.assert_called_with(mhost, self.OPTIONS) + system_info.assert_called_with(mhost, self.OPTIONS) - @patch('hwinfo.tools.inspector.print_system_info') + @patch('hwinfo.tools.inspector.system_info') @patch('hwinfo.tools.inspector.Host') - def test_remote_machine(self, host_cls, print_system_info): + def test_remote_machine(self, host_cls, system_info): sys.argv = ['hwinfo', '-m', 'test', '-u', 'root', '-p', 'pass'] mhost = host_cls.return_value = mock.MagicMock() inspector.main() host_cls.assert_called_with('test', 'root' , 'pass') - print_system_info.assert_called_with(mhost, self.OPTIONS) + system_info.assert_called_with(mhost, self.OPTIONS) - @patch('hwinfo.tools.inspector.print_system_info') + @patch('hwinfo.tools.inspector.system_info') @patch('hwinfo.tools.inspector.HostFromLogs') - def test_host_from_logs(self, host_cls, print_system_info): + def test_host_from_logs(self, host_cls, system_info): sys.argv = ['hwinfo', '-l', '/tmp/thisisatestpath'] mhost = host_cls.return_value = mock.MagicMock() inspector.main() host_cls.assert_called_with('/tmp/thisisatestpath') - print_system_info.assert_called_with(mhost, self.OPTIONS) + system_info.assert_called_with(mhost, self.OPTIONS) - @patch('hwinfo.tools.inspector.print_system_info') + @patch('hwinfo.tools.inspector.system_info') @patch('hwinfo.tools.inspector.Host') - def test_local_machine_filter_for_nic(self, host_cls, print_system_info): + def test_local_machine_filter_for_nic(self, host_cls, system_info): sys.argv = ['hwinfo', '-f', 'nic'] mhost = host_cls.return_value = mock.MagicMock() inspector.main() - print_system_info.assert_called_with(mhost, ['nic']) + system_info.assert_called_with(mhost, ['nic']) - @patch('hwinfo.tools.inspector.print_system_info') + @patch('hwinfo.tools.inspector.system_info') @patch('hwinfo.tools.inspector.Host') - def test_local_machine_filter_for_gpu(self, host_cls, print_system_info): + def test_local_machine_filter_for_gpu(self, host_cls, system_info): sys.argv = ['hwinfo', '-f', 'gpu'] mhost = host_cls.return_value = mock.MagicMock() inspector.main() - print_system_info.assert_called_with(mhost, ['gpu']) + system_info.assert_called_with(mhost, ['gpu']) @patch('hwinfo.tools.inspector.export_system_info') @patch('hwinfo.tools.inspector.Host') @@ -402,27 +417,24 @@ def test_validate_local_machine(self): args.password = None inspector.validate_args(args) - @patch('hwinfo.tools.inspector.print_system_info') + @patch('hwinfo.tools.inspector.system_info') @patch('hwinfo.tools.inspector.HostFromTarball') - def test_from_tarball(self, host_cls, print_system_info): + def test_from_tarball(self, host_cls, system_info): sys.argv = ['hwinfo', '-l', 'ack-submission.tar.gz'] mhost = host_cls.return_value = mock.MagicMock() inspector.main() host_cls.assert_called_with('ack-submission.tar.gz') -class PrintSystemInfoTests(unittest.TestCase): +class SystemInfoTests(unittest.TestCase): - @patch('hwinfo.tools.inspector.print_unit') - def test_print_all(self, mprint_unit): - mhost = mock.MagicMock() + def test_print_all(self): + mhost = HostMock() options = ['bios', 'nic', 'storage', 'gpu', 'cpu'] - inspector.print_system_info(mhost, options) - # GPU is optionally shown only if devices exist - self.assertEqual(len(mprint_unit.mock_calls), 4) + out = inspector.system_info(mhost, options) + self.assertEqual(len(out.split(" Info:\n\n")), 6) - @patch('hwinfo.tools.inspector.print_unit') - def test_print_bios(self, mprint_unit): - mhost = mock.MagicMock() + def test_print_bios(self): + mhost = HostMock() options = ['bios'] - inspector.print_system_info(mhost, options) - self.assertEqual(len(mprint_unit.mock_calls), 1) + out = inspector.system_info(mhost, options) + self.assertEqual(len(out.split(" Info:\n\n")), 2) diff --git a/setup.py b/setup.py index a46ae13..b7bc56a 100644 --- a/setup.py +++ b/setup.py @@ -6,10 +6,10 @@ name='python-hwinfo', author='Rob Dobson', author_email = 'rob@rdobson.co.uk', - version = '0.1.6', + version = '0.1.7', description = 'Library for parsing hardware info on Linux OSes.', url = 'https://github.com/rdobson/python-hwinfo', - download_url = 'https://github.com/rdobson/python-hwinfo/tarball/0.1.6', + download_url = 'https://github.com/rdobson/python-hwinfo/tarball/0.1.7', packages=find_packages(), entry_points = { 'console_scripts': [ @@ -19,6 +19,5 @@ install_requires = [ 'paramiko', 'prettytable', - 'argparse', ], )