]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-volume: improve mpath devices support
authorGuillaume Abrioux <gabrioux@redhat.com>
Tue, 14 Dec 2021 08:57:10 +0000 (09:57 +0100)
committerGuillaume Abrioux <gabrioux@redhat.com>
Tue, 25 Jan 2022 22:02:14 +0000 (23:02 +0100)
ee8887f4c0ff4f91117f31b621b95c8d08019130 was intended for adding
mpath devices support in ceph-volume but it has missed the lvm batch scenario.
This also fixes the zapping of mpath devices prepared with `ceph-volume raw`

Fixes: https://tracker.ceph.com/issues/52908
Signed-off-by: Guillaume Abrioux <gabrioux@redhat.com>
src/ceph-volume/ceph_volume/devices/lvm/zap.py
src/ceph-volume/ceph_volume/util/device.py

index 231d20a38ac1878b3c1a5cc47b92094e825013b7..e0cbfb172194063662c06b14637ba049c3cfde66 100644 (file)
@@ -266,7 +266,7 @@ class Zap(object):
 
         for device in devices:
             mlogger.info("Zapping: %s", device.abspath)
-            if device.is_mapper:
+            if device.is_mapper and not device.is_mpath:
                 terminal.error("Refusing to zap the mapper device: {}".format(device))
                 raise SystemExit(1)
             if device.is_lvm_member:
index eac7ae4b7a7c2d17200f85720733744957c4a2db..20ed448c22f7072ebb090d77fe1bbd022f44379f 100644 (file)
@@ -367,6 +367,17 @@ class Device(object):
     def is_mapper(self):
         return self.path.startswith(('/dev/mapper', '/dev/dm-'))
 
+    @property
+    def device_type(self):
+        if self.disk_api:
+            return self.disk_api['TYPE']
+        elif self.blkid_api:
+            return self.blkid_api['TYPE']
+
+    @property
+    def is_mpath(self):
+        return self.device_type == 'mpath'
+
     @property
     def is_lv(self):
         return self.lv_api is not None
@@ -387,10 +398,7 @@ class Device(object):
         elif self.blkid_api:
             api = self.blkid_api
         if api:
-            is_device = api['TYPE'] == 'device'
-            is_disk = api['TYPE'] == 'disk'
-            if is_device or is_disk:
-                return True
+            return self.device_type in ['disk', 'device', 'mpath']
         return False
 
     @property