]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/ceph-volume/ceph_volume/util/device.py
import quincy beta 17.1.0
[ceph.git] / ceph / src / ceph-volume / ceph_volume / util / device.py
index 010aad65d2a0d0d570df0b1983e2b0428b388f02..20ed448c22f7072ebb090d77fe1bbd022f44379f 100644 (file)
@@ -262,7 +262,9 @@ class Device(object):
             # retrieve device_id on FreeBSD. Still figuring out if/how the
             # python ioctl implementation does that on FreeBSD
             dev_id = ''
-        dev_id.replace(' ', '_')
+        dev_id = dev_id.replace(' ', '_')
+        while '__' in dev_id:
+            dev_id = dev_id.replace('__', '_')
         return dev_id
 
     def _set_lvm_membership(self):
@@ -365,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
@@ -385,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