Hardware utils must get 'vendor' from sysfs
fuel-agent should use the same source for 'vendor' of block device as fuel-nailgun-agent uses. Otherwise, we could end up with situation when block device is being filtered out during provisioning due to 'vendor' mismatch. In that case, provisiong will fail. Change-Id: If503e13e259bb123d95312ee37ce661905ea185f Closes-Bug: #1487133
This commit is contained in:
parent
f2df59bb3f
commit
4c2ab9d6c6
@ -199,10 +199,13 @@ supports-register-dump: yes
|
|||||||
mock_file.read.return_value = 'running\n'
|
mock_file.read.return_value = 'running\n'
|
||||||
elif arg == '/sys/block/fake/device/timeout':
|
elif arg == '/sys/block/fake/device/timeout':
|
||||||
mock_file.read.return_value = '30\n'
|
mock_file.read.return_value = '30\n'
|
||||||
|
elif arg == '/sys/block/fake/device/vendor':
|
||||||
|
mock_file.read.return_value = 'VENDORNAME \n'
|
||||||
mock_with.__enter__.return_value = mock_file
|
mock_with.__enter__.return_value = mock_file
|
||||||
return mock_with
|
return mock_with
|
||||||
mock_open.side_effect = with_side_effect
|
mock_open.side_effect = with_side_effect
|
||||||
expected = {'removable': '0', 'state': 'running', 'timeout': '30'}
|
expected = {'removable': '0', 'state': 'running', 'timeout': '30',
|
||||||
|
'vendor': 'VENDORNAME'}
|
||||||
self.assertEqual(expected, hu.extrareport('/dev/fake'))
|
self.assertEqual(expected, hu.extrareport('/dev/fake'))
|
||||||
|
|
||||||
@mock.patch('six.moves.builtins.open')
|
@mock.patch('six.moves.builtins.open')
|
||||||
@ -391,18 +394,18 @@ E: UDEV_LOG=3""", '')
|
|||||||
'/dev/wrong_vendor_id',
|
'/dev/wrong_vendor_id',
|
||||||
'/dev/right_vendor_id']
|
'/dev/right_vendor_id']
|
||||||
mock_isdisk.return_value = True
|
mock_isdisk.return_value = True
|
||||||
mock_ureport.side_effect = [
|
mock_ureport.return_value = {}
|
||||||
{},
|
mock_ereport.side_effect = [
|
||||||
{'ID_VENDOR': 'Cisco'},
|
{'removable': '1'},
|
||||||
{'ID_VENDOR': 'IBM'},
|
{'removable': '1', 'vendor': 'Cisco'},
|
||||||
|
{'removable': '1', 'vendor': 'IBM'},
|
||||||
]
|
]
|
||||||
mock_ereport.return_value = {'removable': '1'}
|
|
||||||
mock_breport.return_value = {'key1': 'value1'}
|
mock_breport.return_value = {'key1': 'value1'}
|
||||||
expected = [{
|
expected = [{
|
||||||
'device': '/dev/right_vendor_id',
|
'device': '/dev/right_vendor_id',
|
||||||
'uspec': {'ID_VENDOR': 'IBM'},
|
'uspec': {},
|
||||||
'bspec': {'key1': 'value1'},
|
'bspec': {'key1': 'value1'},
|
||||||
'espec': {'removable': '1'}
|
'espec': {'removable': '1', 'vendor': 'IBM'},
|
||||||
}]
|
}]
|
||||||
self.assertEqual(hu.list_block_devices(), expected)
|
self.assertEqual(hu.list_block_devices(), expected)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
|
@ -234,7 +234,7 @@ def extrareport(dev):
|
|||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
for key in ('state', 'timeout'):
|
for key in ('state', 'timeout', 'vendor'):
|
||||||
try:
|
try:
|
||||||
with open('/sys/block/{0}/device/{1}'.format(name, key)) as file:
|
with open('/sys/block/{0}/device/{1}'.format(name, key)) as file:
|
||||||
spec[key] = file.read().strip()
|
spec[key] = file.read().strip()
|
||||||
@ -295,7 +295,7 @@ def list_block_devices(disks=True):
|
|||||||
# inserted into removable device.
|
# inserted into removable device.
|
||||||
# Accept only devices from REMOVABLE_VENDORS list
|
# Accept only devices from REMOVABLE_VENDORS list
|
||||||
if (espec.get('removable') == '1' and
|
if (espec.get('removable') == '1' and
|
||||||
uspec.get('ID_VENDOR') not in REMOVABLE_VENDORS):
|
espec.get('vendor') not in REMOVABLE_VENDORS):
|
||||||
continue
|
continue
|
||||||
bspec = blockdevreport(device)
|
bspec = blockdevreport(device)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user