Extend root device hints to support device name

This patch is extending the root device hints to also look at the device
name. This patch also refactors the tests for root device hints making
it easier to test a different hint per test.

Change-Id: I48d6456c75bbe6ddf16ac6561e5461ca51eb9c37
Partial-Bug: #1526732
This commit is contained in:
Lucas Alvares Gomes 2016-01-19 13:36:26 +00:00
parent 1e30946835
commit 6752ce8032
3 changed files with 34 additions and 9 deletions

View File

@ -461,7 +461,8 @@ class GenericHardwareManager(HardwareManager):
def check_device_attrs(device):
for key in ('model', 'wwn', 'serial', 'vendor',
'wwn_with_extension', 'wwn_vendor_extension'):
'wwn_with_extension', 'wwn_vendor_extension',
'name'):
if key not in root_device_hints:
continue

View File

@ -304,14 +304,10 @@ class TestGenericHardwareManager(test_base.BaseTestCase):
@mock.patch.object(hardware, 'list_all_block_devices')
@mock.patch.object(utils, 'parse_root_device_hints')
def test_get_os_install_device_root_device_hints(self, mock_root_device,
mock_dev):
def _get_os_install_device_root_device_hints(self, hints, expected_device,
mock_root_device, mock_dev):
model = 'fastable sd131 7'
mock_root_device.return_value = {'model': model,
'wwn': 'fake-wwn',
'serial': 'fake-serial',
'vendor': 'fake-vendor',
'size': 10}
mock_root_device.return_value = hints
mock_dev.return_value = [
hardware.BlockDevice(name='/dev/sda',
model='TinyUSB Drive',
@ -333,10 +329,35 @@ class TestGenericHardwareManager(test_base.BaseTestCase):
serial='fake-serial'),
]
self.assertEqual('/dev/sdb', self.hardware.get_os_install_device())
self.assertEqual(expected_device,
self.hardware.get_os_install_device())
mock_root_device.assert_called_once_with()
mock_dev.assert_called_once_with()
def test_get_os_install_device_root_device_hints_model(self):
self._get_os_install_device_root_device_hints(
{'model': 'fastable sd131 7'}, '/dev/sdb')
def test_get_os_install_device_root_device_hints_wwn(self):
self._get_os_install_device_root_device_hints(
{'wwn': 'wwn0'}, '/dev/sda')
def test_get_os_install_device_root_device_hints_serial(self):
self._get_os_install_device_root_device_hints(
{'serial': 'serial0'}, '/dev/sda')
def test_get_os_install_device_root_device_hints_size(self):
self._get_os_install_device_root_device_hints(
{'size': 10}, '/dev/sdb')
def test_get_os_install_device_root_device_hints_vendor(self):
self._get_os_install_device_root_device_hints(
{'vendor': 'fake-vendor'}, '/dev/sdb')
def test_get_os_install_device_root_device_hints_name(self):
self._get_os_install_device_root_device_hints(
{'name': '/dev/sdb'}, '/dev/sdb')
@mock.patch.object(hardware, 'list_all_block_devices')
@mock.patch.object(utils, 'parse_root_device_hints')
def test_get_os_install_device_root_device_hints_no_device_found(

View File

@ -0,0 +1,3 @@
---
features:
- Root device hints extended to support the device name.