]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
ceph-volume: show devices with bluestore labels and unavailable
authorSage Weil <sage@redhat.com>
Mon, 9 Dec 2019 13:38:13 +0000 (07:38 -0600)
committerSage Weil <sage@redhat.com>
Thu, 12 Dec 2019 17:31:33 +0000 (11:31 -0600)
Signed-off-by: Sage Weil <sage@redhat.com>
src/ceph-volume/ceph_volume/util/device.py

index fc7d471f0a8f2a6681e6f4d36a1be6b90f0339af..3974526c49ceb2bfe1b0a744a77c91f01ad2fd35 100644 (file)
@@ -2,7 +2,7 @@
 
 import os
 from functools import total_ordering
-from ceph_volume import sys_info
+from ceph_volume import sys_info, process
 from ceph_volume.api import lvm
 from ceph_volume.util import disk
 from ceph_volume.util.constants import ceph_disk_guids
@@ -317,6 +317,15 @@ class Device(object):
                     break
         return is_member
 
+    @property
+    def has_bluestore_label(self):
+        out, err, ret = process.call([
+            'ceph-bluestore-tool', 'show-label',
+            '--dev', self.path])
+        if ret:
+            return False
+        return True
+
     @property
     def is_mapper(self):
         return self.path.startswith(('/dev/mapper', '/dev/dm-'))
@@ -394,6 +403,8 @@ class Device(object):
             rejected.append('Insufficient space (<5GB)')
         if self.is_ceph_disk_member:
             rejected.append("Used by ceph-disk")
+        if self.has_bluestore_label:
+            rejected.append('Has BlueStore device label')
 
         return len(rejected) == 0, rejected