Adds block_device_info related helpers
Adds helper methods needed in basevolumeutils.
This commit is contained in:
parent
70f99ea9db
commit
9a349635c5
|
@ -71,16 +71,21 @@ class BaseVolumeUtilsTestCase(test.NoDBTestCase):
|
|||
initiator_name = self._volutils.get_iscsi_initiator()
|
||||
self.assertEqual(expected, initiator_name)
|
||||
|
||||
@mock.patch.object(basevolumeutils, 'driver')
|
||||
def test_volume_in_mapping(self, mock_driver):
|
||||
mock_driver.block_device_info_get_mapping.return_value = [
|
||||
@mock.patch.object(basevolumeutils.BaseVolumeUtils, 'swap_is_usable')
|
||||
@mock.patch.object(basevolumeutils.BaseVolumeUtils,
|
||||
'block_device_info_get_ephemerals')
|
||||
@mock.patch.object(basevolumeutils.BaseVolumeUtils,
|
||||
'block_device_info_get_swap')
|
||||
@mock.patch.object(basevolumeutils.BaseVolumeUtils,
|
||||
'block_device_info_get_mapping')
|
||||
def test_volume_in_mapping(self, mock_bdi_get_mapping, mock_bdi_get_swap,
|
||||
mock_bdi_get_ephem, mock_swap_is_usable):
|
||||
mock_bdi_get_mapping.return_value = [
|
||||
{'mount_device': self._FAKE_MOUNT_DEVICE}]
|
||||
mock_driver.block_device_info_get_swap = mock.MagicMock(
|
||||
return_value=self._FAKE_SWAP)
|
||||
mock_driver.block_device_info_get_ephemerals = mock.MagicMock(
|
||||
return_value=[{'device_name': self._FAKE_DEVICE_NAME}])
|
||||
|
||||
mock_driver.swap_is_usable = mock.MagicMock(return_value=True)
|
||||
mock_bdi_get_swap.return_value = self._FAKE_SWAP
|
||||
mock_bdi_get_ephem.return_value = [
|
||||
{'device_name': self._FAKE_DEVICE_NAME}]
|
||||
mock_swap_is_usable.return_value = True
|
||||
|
||||
self.assertTrue(self._volutils.volume_in_mapping(
|
||||
self._FAKE_MOUNT_DEVICE, mock.sentinel.FAKE_BLOCK_DEVICE_INFO))
|
||||
|
@ -186,3 +191,54 @@ class BaseVolumeUtilsTestCase(test.NoDBTestCase):
|
|||
init_session.SessionId = mock.sentinel.FAKE_SESSION_ID
|
||||
|
||||
return init_session
|
||||
|
||||
def test_block_device(self):
|
||||
swap = {'device_name': '/dev/sdb',
|
||||
'swap_size': 1}
|
||||
ephemerals = [{'num': 0,
|
||||
'virtual_name': 'ephemeral0',
|
||||
'device_name': '/dev/sdc1',
|
||||
'size': 1}]
|
||||
block_device_mapping = [{'mount_device': '/dev/sde',
|
||||
'device_path': 'fake_device'}]
|
||||
block_device_info = {
|
||||
'root_device_name': '/dev/sda',
|
||||
'swap': swap,
|
||||
'ephemerals': ephemerals,
|
||||
'block_device_mapping': block_device_mapping}
|
||||
|
||||
empty_block_device_info = {}
|
||||
|
||||
self.assertEqual(
|
||||
self._volutils.block_device_info_get_swap(block_device_info), swap)
|
||||
self.assertIsNone(self._volutils.block_device_info_get_swap(
|
||||
empty_block_device_info)['device_name'])
|
||||
self.assertEqual(self._volutils.block_device_info_get_swap(
|
||||
empty_block_device_info)['swap_size'], 0)
|
||||
self.assertIsNone(
|
||||
self._volutils.block_device_info_get_swap(
|
||||
{'swap': None})['device_name'])
|
||||
self.assertEqual(
|
||||
self._volutils.block_device_info_get_swap(
|
||||
{'swap': None})['swap_size'], 0)
|
||||
self.assertIsNone(
|
||||
self._volutils.block_device_info_get_swap(None)['device_name'])
|
||||
self.assertEqual(
|
||||
self._volutils.block_device_info_get_swap(None)['swap_size'], 0)
|
||||
|
||||
self.assertEqual(
|
||||
self._volutils.block_device_info_get_ephemerals(block_device_info),
|
||||
ephemerals)
|
||||
self.assertEqual(
|
||||
self._volutils.block_device_info_get_ephemerals(
|
||||
empty_block_device_info), [])
|
||||
self.assertEqual(
|
||||
self._volutils.block_device_info_get_ephemerals(None), [])
|
||||
|
||||
def test_swap_is_usable(self):
|
||||
self.assertFalse(self._volutils.swap_is_usable(None))
|
||||
self.assertFalse(self._volutils.swap_is_usable({'device_name': None}))
|
||||
self.assertFalse(self._volutils.swap_is_usable(
|
||||
{'device_name': '/dev/sdb', 'swap_size': 0}))
|
||||
self.assertTrue(self._volutils.swap_is_usable(
|
||||
{'device_name': '/dev/sdb', 'swap_size': 1}))
|
||||
|
|
|
@ -32,7 +32,6 @@ from oslo_log import log as logging
|
|||
|
||||
from oslo_windows._i18n import _LI
|
||||
from oslo_windows import _utils
|
||||
from nova.virt import driver
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
@ -82,16 +81,16 @@ class BaseVolumeUtils(object):
|
|||
def volume_in_mapping(self, mount_device, block_device_info):
|
||||
block_device_list = [_utils.strip_dev(vol['mount_device'])
|
||||
for vol in
|
||||
driver.block_device_info_get_mapping(
|
||||
self.block_device_info_get_mapping(
|
||||
block_device_info)]
|
||||
swap = driver.block_device_info_get_swap(block_device_info)
|
||||
if driver.swap_is_usable(swap):
|
||||
swap = self.block_device_info_get_swap(block_device_info)
|
||||
if self.swap_is_usable(swap):
|
||||
block_device_list.append(
|
||||
_utils.strip_dev(swap['device_name']))
|
||||
block_device_list += [_utils.strip_dev(
|
||||
ephemeral['device_name'])
|
||||
for ephemeral in
|
||||
driver.block_device_info_get_ephemerals(block_device_info)]
|
||||
self.block_device_info_get_ephemerals(block_device_info)]
|
||||
|
||||
LOG.debug("block_device_list %s", block_device_list)
|
||||
return _utils.strip_dev(mount_device) in block_device_list
|
||||
|
@ -147,3 +146,25 @@ class BaseVolumeUtils(object):
|
|||
for device in devices:
|
||||
if device.DeviceNumber == drive_number:
|
||||
return (device.TargetName, device.ScsiLun)
|
||||
|
||||
@staticmethod
|
||||
def block_device_info_get_mapping(block_device_info):
|
||||
block_device_info = block_device_info or {}
|
||||
block_device_mapping = (
|
||||
block_device_info.get('block_device_mapping') or [])
|
||||
return block_device_mapping
|
||||
|
||||
@staticmethod
|
||||
def block_device_info_get_swap(block_device_info):
|
||||
block_device_info = block_device_info or {}
|
||||
return block_device_info.get('swap') or {'device_name': None,
|
||||
'swap_size': 0}
|
||||
@staticmethod
|
||||
def swap_is_usable(swap):
|
||||
return swap and swap['device_name'] and swap['swap_size'] > 0
|
||||
|
||||
@staticmethod
|
||||
def block_device_info_get_ephemerals(block_device_info):
|
||||
block_device_info = block_device_info or {}
|
||||
ephemerals = block_device_info.get('ephemerals') or []
|
||||
return ephemerals
|
||||
|
|
Loading…
Reference in New Issue