lib/ceph-volume: support zapping by osd_id

This commit adds the support for zapping an osd by osd_id in the
ceph_volume module.

Signed-off-by: Guillaume Abrioux <gabrioux@redhat.com>
(cherry picked from commit 70f1d6e2cd)
pull/6723/head
Guillaume Abrioux 2021-07-09 11:07:08 +02:00
parent 876fa07175
commit 710176e36a
2 changed files with 33 additions and 2 deletions

View File

@ -53,6 +53,10 @@ options:
description: description:
- The OSD FSID - The OSD FSID
required: false required: false
osd_id:
description:
- The OSD ID
required: false
journal: journal:
description: description:
- The logical volume name or partition to use as a filestore journal. - The logical volume name or partition to use as a filestore journal.
@ -503,6 +507,7 @@ def zap_devices(module, container_image):
wal = module.params.get('wal', None) wal = module.params.get('wal', None)
wal_vg = module.params.get('wal_vg', None) wal_vg = module.params.get('wal_vg', None)
osd_fsid = module.params.get('osd_fsid', None) osd_fsid = module.params.get('osd_fsid', None)
osd_id = module.params.get('osd_id', None)
destroy = module.params.get('destroy', True) destroy = module.params.get('destroy', True)
# build the CLI # build the CLI
@ -514,6 +519,9 @@ def zap_devices(module, container_image):
if osd_fsid: if osd_fsid:
cmd.extend(['--osd-fsid', osd_fsid]) cmd.extend(['--osd-fsid', osd_fsid])
if osd_id:
cmd.extend(['--osd-id', osd_id])
if data: if data:
data = get_data(data, data_vg) data = get_data(data, data_vg)
cmd.append(data) cmd.append(data)
@ -560,12 +568,19 @@ def run_module():
wal_devices=dict(type='list', required=False, default=[]), wal_devices=dict(type='list', required=False, default=[]),
report=dict(type='bool', required=False, default=False), report=dict(type='bool', required=False, default=False),
osd_fsid=dict(type='str', required=False), osd_fsid=dict(type='str', required=False),
osd_id=dict(type='str', required=False),
destroy=dict(type='bool', required=False, default=True), destroy=dict(type='bool', required=False, default=True),
) )
module = AnsibleModule( module = AnsibleModule(
argument_spec=module_args, argument_spec=module_args,
supports_check_mode=True supports_check_mode=True,
mutually_exclusive=[
('data', 'osd_fsid', 'osd_id'),
],
required_if=[
('action', 'zap', ('data', 'osd_fsid', 'osd_id'), True)
]
) )
result = dict( result = dict(
@ -648,7 +663,8 @@ def run_module():
cmd = zap_devices(module, container_image) cmd = zap_devices(module, container_image)
if any(skip) or module.params.get('osd_fsid', None): if any(skip) or module.params.get('osd_fsid', None) \
or module.params.get('osd_id', None):
rc, cmd, out, err = exec_command( rc, cmd, out, err = exec_command(
module, cmd) module, cmd)
for scan_cmd in ['vgscan', 'lvscan']: for scan_cmd in ['vgscan', 'lvscan']:

View File

@ -113,6 +113,21 @@ class TestCephVolumeModule(object):
result = ceph_volume.zap_devices(fake_module, fake_container_image) result = ceph_volume.zap_devices(fake_module, fake_container_image)
assert result == expected_command_list assert result == expected_command_list
def test_zap_osd_id(self):
fake_module = MagicMock()
fake_module.params = {'osd_id': '123'}
fake_container_image = None
expected_command_list = ['ceph-volume',
'--cluster',
'ceph',
'lvm',
'zap',
'--destroy',
'--osd-id',
'123']
result = ceph_volume.zap_devices(fake_module, fake_container_image)
assert result == expected_command_list
def test_activate_osd(self): def test_activate_osd(self):
expected_command_list = ['ceph-volume', expected_command_list = ['ceph-volume',
'--cluster', '--cluster',