From: Andrew Schoen Date: Thu, 28 Jun 2018 19:22:47 +0000 (-0500) Subject: lvm zap: refuse to zap mapper devices X-Git-Tag: v12.2.8~65^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F23374%2Fhead;p=ceph.git lvm zap: refuse to zap mapper devices Fixes: http://tracker.ceph.com/issues/24504 Signed-off-by: Andrew Schoen (cherry picked from commit 8e602d52657d50888a83963148334deb1f8d4e1c) --- diff --git a/src/ceph-volume/ceph_volume/devices/lvm/zap.py b/src/ceph-volume/ceph_volume/devices/lvm/zap.py index 904759dd5be8..65af440bf2f9 100644 --- a/src/ceph-volume/ceph_volume/devices/lvm/zap.py +++ b/src/ceph-volume/ceph_volume/devices/lvm/zap.py @@ -49,6 +49,9 @@ class Zap(object): @decorators.needs_root def zap(self, args): device = args.device + if disk.is_mapper_device(device): + terminal.error("Refusing to zap the mapper device: {}".format(device)) + raise SystemExit(1) lv = api.get_lv_from_argument(device) if lv: # we are zapping a logical volume diff --git a/src/ceph-volume/ceph_volume/tests/devices/test_zap.py b/src/ceph-volume/ceph_volume/tests/devices/test_zap.py index 5e267fca77e5..b768c6e901c9 100644 --- a/src/ceph-volume/ceph_volume/tests/devices/test_zap.py +++ b/src/ceph-volume/ceph_volume/tests/devices/test_zap.py @@ -14,4 +14,13 @@ class TestZap(object): lvm.zap.Zap(argv=['--help']).main() stdout, stderr = capsys.readouterr() assert 'optional arguments' in stdout - assert 'positional arguments' in stdout + + @pytest.mark.parametrize('device_name', [ + '/dev/mapper/foo', + '/dev/dm-0', + ]) + def test_can_not_zap_mapper_device(self, capsys, is_root, device_name): + with pytest.raises(SystemExit): + lvm.zap.Zap(argv=[device_name]).main() + stdout, stderr = capsys.readouterr() + assert 'Refusing to zap' in stdout