Merge "Add argument 'osd_id' to 'osdize'"

This commit is contained in:
Zuul 2022-02-10 10:32:36 +00:00 committed by Gerrit Code Review
commit 0d8bfe8e10
2 changed files with 46 additions and 6 deletions

View File

@ -1514,11 +1514,11 @@ def get_devices(name):
def osdize(dev, osd_format, osd_journal, ignore_errors=False, encrypt=False,
bluestore=False, key_manager=CEPH_KEY_MANAGER):
bluestore=False, key_manager=CEPH_KEY_MANAGER, osd_id=None):
if dev.startswith('/dev'):
osdize_dev(dev, osd_format, osd_journal,
ignore_errors, encrypt,
bluestore, key_manager)
bluestore, key_manager, osd_id)
else:
if cmp_pkgrevno('ceph', '14.0.0') >= 0:
log("Directory backed OSDs can not be created on Nautilus",
@ -1528,7 +1528,8 @@ def osdize(dev, osd_format, osd_journal, ignore_errors=False, encrypt=False,
def osdize_dev(dev, osd_format, osd_journal, ignore_errors=False,
encrypt=False, bluestore=False, key_manager=CEPH_KEY_MANAGER):
encrypt=False, bluestore=False, key_manager=CEPH_KEY_MANAGER,
osd_id=None):
"""
Prepare a block device for use as a Ceph OSD
@ -1593,7 +1594,8 @@ def osdize_dev(dev, osd_format, osd_journal, ignore_errors=False,
osd_journal,
encrypt,
bluestore,
key_manager)
key_manager,
osd_id)
else:
cmd = _ceph_disk(dev,
osd_format,
@ -1677,7 +1679,7 @@ def _ceph_disk(dev, osd_format, osd_journal, encrypt=False, bluestore=False):
def _ceph_volume(dev, osd_journal, encrypt=False, bluestore=False,
key_manager=CEPH_KEY_MANAGER):
key_manager=CEPH_KEY_MANAGER, osd_id=None):
"""
Prepare and activate a device for usage as a Ceph OSD using ceph-volume.
@ -1689,6 +1691,7 @@ def _ceph_volume(dev, osd_journal, encrypt=False, bluestore=False,
:param: encrypt: Use block device encryption
:param: bluestore: Use bluestore storage for OSD
:param: key_manager: dm-crypt Key Manager to use
:param: osd_id: The OSD-id to recycle, or None to create a new one
:raises subprocess.CalledProcessError: in the event that any supporting
LVM operation failed.
:returns: list. 'ceph-volume' command and required parameters for
@ -1710,6 +1713,9 @@ def _ceph_volume(dev, osd_journal, encrypt=False, bluestore=False,
if encrypt and key_manager == CEPH_KEY_MANAGER:
cmd.append('--dmcrypt')
if osd_id is not None:
cmd.extend(['--osd-id', str(osd_id)])
# On-disk journal volume creation
if not osd_journal and not bluestore:
journal_lv_type = 'journal'

View File

@ -127,7 +127,41 @@ class CephTestCase(unittest.TestCase):
_is_active_bluestore_device.return_value = False
utils.osdize('/dev/sdb', osd_format='xfs', osd_journal=None,
bluestore=False)
_ceph_volume.assert_called_with('/dev/sdb', None, False, False, 'ceph')
_ceph_volume.assert_called_with('/dev/sdb', None, False, False,
'ceph', None)
_check_call.assert_called_with(['ceph-volume', 'prepare'])
db.get.assert_called_with('osd-devices', [])
db.set.assert_called_with('osd-devices', ['/dev/sdb'])
db.flush.assert_called_once()
@patch.object(utils, 'kv')
@patch.object(utils.subprocess, 'check_call')
@patch.object(utils, '_ceph_volume')
@patch.object(utils, 'is_mapped_luks_device')
@patch.object(utils, 'is_active_bluestore_device')
@patch.object(utils.os.path, 'exists')
@patch.object(utils, 'is_device_mounted')
@patch.object(utils, 'cmp_pkgrevno')
@patch.object(utils, 'is_block_device')
def test_osdize_dev_ceph_volume_with_osdid(self, _is_blk, _cmp, _mounted,
_exists, _is_mapped_luks_device,
_is_active_bluestore_device,
_ceph_volume, _check_call, _kv):
"""Test that _ceph_volume is called with an OSD id."""
db = MagicMock()
_kv.return_value = db
db.get.return_value = []
_is_blk.return_value = True
_mounted.return_value = False
_exists.return_value = True
_cmp.return_value = 1
_ceph_volume.return_value = ['ceph-volume', 'prepare']
_is_mapped_luks_device.return_value = False
_is_active_bluestore_device.return_value = False
utils.osdize('/dev/sdb', osd_format='xfs', osd_journal=None,
bluestore=False, osd_id=123)
_ceph_volume.assert_called_with('/dev/sdb', None, False, False,
'ceph', 123)
_check_call.assert_called_with(['ceph-volume', 'prepare'])
db.get.assert_called_with('osd-devices', [])
db.set.assert_called_with('osd-devices', ['/dev/sdb'])