From: Guillaume Abrioux Date: Fri, 9 Jul 2021 09:07:08 +0000 (+0200) Subject: lib/ceph-volume: support zapping by osd_id X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=70f1d6e2cd9ed4abb4db599f9faa816703430d80;p=ceph-ansible.git 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 --- diff --git a/library/ceph_volume.py b/library/ceph_volume.py index b7711da4d..2668cd2f0 100644 --- a/library/ceph_volume.py +++ b/library/ceph_volume.py @@ -62,6 +62,10 @@ options: description: - The OSD FSID required: false + osd_id: + description: + - The OSD ID + required: false journal: description: - The logical volume name or partition to use as a filestore journal. @@ -476,6 +480,7 @@ def zap_devices(module, container_image): wal = module.params.get('wal', None) wal_vg = module.params.get('wal_vg', None) osd_fsid = module.params.get('osd_fsid', None) + osd_id = module.params.get('osd_id', None) destroy = module.params.get('destroy', True) # build the CLI @@ -487,6 +492,9 @@ def zap_devices(module, container_image): if osd_fsid: cmd.extend(['--osd-fsid', osd_fsid]) + if osd_id: + cmd.extend(['--osd-id', osd_id]) + if data: data = get_data(data, data_vg) cmd.append(data) @@ -533,12 +541,19 @@ def run_module(): wal_devices=dict(type='list', required=False, default=[]), report=dict(type='bool', required=False, default=False), osd_fsid=dict(type='str', required=False), + osd_id=dict(type='str', required=False), destroy=dict(type='bool', required=False, default=True), ) module = AnsibleModule( 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( @@ -621,7 +636,8 @@ def run_module(): 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( module, cmd) for scan_cmd in ['vgscan', 'lvscan']: diff --git a/tests/library/test_ceph_volume.py b/tests/library/test_ceph_volume.py index d714ffc68..57fcd63dc 100644 --- a/tests/library/test_ceph_volume.py +++ b/tests/library/test_ceph_volume.py @@ -113,6 +113,21 @@ class TestCephVolumeModule(object): result = ceph_volume.zap_devices(fake_module, fake_container_image) 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): expected_command_list = ['ceph-volume', '--cluster',