Skip to content

Commit 9d24021

Browse files
committed
Merge pull request #2 from rdobson/biosdevname-support
Adding support for parsing basic entries in the output of biosdevname -d
2 parents ff7e920 + 7c66090 commit 9d24021

File tree

3 files changed

+271
-0
lines changed

3 files changed

+271
-0
lines changed

hwinfo/pci/biosdevname.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
"""Module for host related info"""
2+
3+
from hwinfo.util import CommandParser
4+
5+
class BiosdevnameDParser(CommandParser):
6+
7+
ITEM_SEPERATOR = "\n\n"
8+
9+
ITEM_REGEXS = [
10+
r'BIOS\ device:\ (?P<bios_device>.*)\n',
11+
r'Kernel\ name:\ (?P<kernel_name>.*)\n',
12+
r'Driver:\ (?P<driver>.*)\n',
13+
r'Driver\ version:\ (?P<driver_version>.*)\n',
14+
r'Firmware\ version:\ (?P<firmware_version>.*)\n',
15+
]
16+
17+
Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
BIOS device: eth0
2+
Kernel name: eth0
3+
Permanent MAC: 6C:AE:8B:22:B7:CA
4+
Assigned MAC : 6C:AE:8B:22:B7:CA
5+
Driver: igb
6+
Driver version: 5.2.5
7+
Firmware version: 1.52.0
8+
Bus Info: 0000:06:00.0
9+
PCI name : 0000:06:00.0
10+
PCI Slot : embedded
11+
SMBIOS Device Type: Ethernet
12+
SMBIOS Instance: 2
13+
SMBIOS Label: Intel i350
14+
sysfs Index: 2
15+
sysfs Label: Intel i350
16+
Embedded Index: 1
17+
18+
BIOS device: eth1
19+
Kernel name: eth1
20+
Permanent MAC: 6C:AE:8B:22:B7:CB
21+
Assigned MAC : 6C:AE:8B:22:B7:CB
22+
Driver: igb
23+
Driver version: 5.2.5
24+
Firmware version: 1.52.0
25+
Bus Info: 0000:06:00.1
26+
PCI name : 0000:06:00.1
27+
PCI Slot : embedded
28+
SMBIOS Device Type: Ethernet
29+
SMBIOS Instance: 3
30+
SMBIOS Label: Intel i350
31+
sysfs Index: 3
32+
sysfs Label: Intel i350
33+
Embedded Index: 2
34+
35+
BIOS device: eth2
36+
Kernel name: eth2
37+
Permanent MAC: 6C:AE:8B:22:B7:CC
38+
Assigned MAC : 6C:AE:8B:22:B7:CC
39+
Driver: igb
40+
Driver version: 5.2.5
41+
Firmware version: 1.52.0
42+
Bus Info: 0000:06:00.2
43+
PCI name : 0000:06:00.2
44+
PCI Slot : embedded
45+
SMBIOS Device Type: Ethernet
46+
SMBIOS Instance: 4
47+
SMBIOS Label: Intel i350
48+
sysfs Index: 4
49+
sysfs Label: Intel i350
50+
Embedded Index: 3
51+
52+
BIOS device: eth3
53+
Kernel name: eth3
54+
Permanent MAC: 6C:AE:8B:22:B7:CD
55+
Assigned MAC : 6C:AE:8B:22:B7:CD
56+
Driver: igb
57+
Driver version: 5.2.5
58+
Firmware version: 1.52.0
59+
Bus Info: 0000:06:00.3
60+
PCI name : 0000:06:00.3
61+
PCI Slot : embedded
62+
SMBIOS Device Type: Ethernet
63+
SMBIOS Instance: 5
64+
SMBIOS Label: Intel i350
65+
sysfs Index: 5
66+
sysfs Label: Intel i350
67+
Embedded Index: 4
68+
69+
BIOS device: eth4
70+
Kernel name: eth4
71+
Permanent MAC: 5C:F3:FC:36:65:A0
72+
Assigned MAC : 5C:F3:FC:36:65:A0
73+
Driver: be2net
74+
Driver version: 4.6.62.0u
75+
Firmware version: 4.2.412.0
76+
Bus Info: 0000:0c:00.0
77+
PCI name : 0000:0c:00.0
78+
PCI Slot : Unknown
79+
Index in slot: 1
80+
81+
BIOS device: eth5
82+
Kernel name: eth5
83+
Permanent MAC: 5C:F3:FC:36:65:A4
84+
Assigned MAC : 5C:F3:FC:36:65:A4
85+
Driver: be2net
86+
Driver version: 4.6.62.0u
87+
Firmware version: 4.2.412.0
88+
Bus Info: 0000:0c:00.1
89+
PCI name : 0000:0c:00.1
90+
PCI Slot : Unknown
91+
Index in slot: 2
92+
93+
BIOS device: eth6
94+
Kernel name: eth6
95+
Permanent MAC: 00:00:C9:E9:64:E4
96+
Assigned MAC : 00:00:C9:E9:64:E4
97+
Driver: be2net
98+
Driver version: 4.6.62.0u
99+
Firmware version: 4.2.412.0
100+
Bus Info: 0000:11:00.0
101+
PCI name : 0000:11:00.0
102+
PCI Slot : 3
103+
SMBIOS Label: PCI-Express Slot 3
104+
Index in slot: 1
105+
106+
BIOS device: eth7
107+
Kernel name: eth7
108+
Permanent MAC: 00:00:C9:E9:64:E8
109+
Assigned MAC : 00:00:C9:E9:64:E8
110+
Driver: be2net
111+
Driver version: 4.6.62.0u
112+
Firmware version: 4.2.412.0
113+
Bus Info: 0000:11:00.1
114+
PCI name : 0000:11:00.1
115+
PCI Slot : 3
116+
SMBIOS Label: PCI-Express Slot 3
117+
Index in slot: 2
118+
119+
BIOS device: eth8
120+
Kernel name: usb0
121+
Permanent MAC: 6E:AE:8B:22:B7:C9
122+
Assigned MAC : 6E:AE:8B:22:B7:C9
123+
Driver: cdc_ether
124+
Driver version: 22-Aug-2005
125+
Firmware version: CDC Ethernet Device
126+
Bus Info: usb-0000:00:1d.0-1.1.5
127+
128+
BIOS device: eth9
129+
Kernel name: vif1.0
130+
Permanent MAC: FE:FF:FF:FF:FF:FF
131+
Assigned MAC : FE:FF:FF:FF:FF:FF
132+
Driver: vif
133+
Driver version:
134+
Firmware version:
135+
Bus Info: vif-1-0
136+
137+
BIOS device: eth10
138+
Kernel name: vif3.0
139+
Permanent MAC: FE:FF:FF:FF:FF:FF
140+
Assigned MAC : FE:FF:FF:FF:FF:FF
141+
Driver: vif
142+
Driver version:
143+
Firmware version:
144+
Bus Info: vif-3-0
145+
146+
BIOS device: eth11
147+
Kernel name: vif6.0
148+
Permanent MAC: FE:FF:FF:FF:FF:FF
149+
Assigned MAC : FE:FF:FF:FF:FF:FF
150+
Driver: vif
151+
Driver version:
152+
Firmware version:
153+
Bus Info: vif-6-0
154+
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
"""Module for unittesting biosdevname methods"""
2+
3+
import unittest
4+
from hwinfo.pci.biosdevname import *
5+
6+
DATA_DIR = 'hwinfo/pci/tests/data'
7+
8+
class BiosdevnameDSingleDeviceParserTests(unittest.TestCase):
9+
10+
RAW_DATA = """
11+
BIOS device: eth0
12+
Kernel name: eth0
13+
Permanent MAC: 6C:AE:8B:22:B7:CA
14+
Assigned MAC : 6C:AE:8B:22:B7:CA
15+
Driver: igb
16+
Driver version: 5.2.5
17+
Firmware version: 1.52.0
18+
Bus Info: 0000:06:00.0
19+
PCI name : 0000:06:00.0
20+
PCI Slot : embedded
21+
SMBIOS Device Type: Ethernet
22+
SMBIOS Instance: 2
23+
SMBIOS Label: Intel i350
24+
sysfs Index: 2
25+
sysfs Label: Intel i350
26+
Embedded Index: 1"""
27+
28+
DATA_REC = {
29+
'bios_device': 'eth0',
30+
'kernel_name': 'eth0',
31+
'permanent_mac': '6C:AE:8B:22:B7:CA',
32+
'assigned_mac': '6C:AE:8B:22:B7:CA',
33+
'driver': 'igb',
34+
'driver_version': '5.2.5',
35+
'firmware_version': '1.52.0',
36+
'bus_info': '0000:06:00.0',
37+
'pci_name': '0000:06:00.0',
38+
'smbios_device_type': 'Ethernet',
39+
'smbios_instance': '2',
40+
'smbios_label': 'Intel i350',
41+
'sysfs Index': '2',
42+
'sysfs Label': 'Intel i350',
43+
'Embedded Index': '1',
44+
}
45+
46+
47+
def setUp(self):
48+
self.parser = BiosdevnameDParser(self.RAW_DATA)
49+
50+
def _assert_equal(self, key):
51+
rec = self.parser.parse_items()[0]
52+
return self.assertEqual(rec[key], self.DATA_REC[key])
53+
54+
def test_biosdevname_bios_device(self):
55+
return self._assert_equal('bios_device')
56+
57+
def test_biosdevname_kerenl_name(self):
58+
return self._assert_equal('kernel_name')
59+
60+
def test_biosdevname_driver(self):
61+
return self._assert_equal('driver')
62+
63+
def test_biosdevname_driver_version(self):
64+
return self._assert_equal('driver_version')
65+
66+
def test_biosdevname_firmware_version(self):
67+
return self._assert_equal('firmware_version')
68+
69+
class BiosdevnameDMultiDeviceTests(unittest.TestCase):
70+
71+
DATA_FILE = "%s/%s" % (DATA_DIR, 'biosdevname-d')
72+
73+
def setUp(self):
74+
fh = open(self.DATA_FILE)
75+
sample_data = fh.read()
76+
fh.close()
77+
self.parser = BiosdevnameDParser(sample_data)
78+
79+
def test_parse_correct_number_of_devices(self):
80+
items = self.parser.parse_items()
81+
self.assertEqual(len(items), 12)
82+
83+
def test_count_number_of_be2net_devices(self):
84+
items = self.parser.parse_items()
85+
count = 0
86+
for item in items:
87+
if item['driver'] == 'be2net':
88+
count = count + 1
89+
90+
self.assertEqual(count, 4)
91+
92+
def test_driver_versions_match(self):
93+
items = self.parser.parse_items()
94+
for item in items:
95+
if item['driver'] == 'be2net':
96+
self.assertEqual(item['driver_version'], '4.6.62.0u')
97+
self.assertEqual(item['firmware_version'], '4.2.412.0')
98+
elif item['driver'] == 'igb':
99+
self.assertEqual(item['driver_version'], '5.2.5')
100+
self.assertEqual(item['firmware_version'], '1.52.0')

0 commit comments

Comments
 (0)