From: Alfredo Deza Date: Thu, 27 Sep 2018 20:17:29 +0000 (-0400) Subject: ceph-volume simple.scan better detection for ceph-disk data devices X-Git-Tag: v14.0.1~157^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F24330%2Fhead;p=ceph.git ceph-volume simple.scan better detection for ceph-disk data devices Uses the new ``CephDiskDevice`` to look into PARTLABEL from both lsblk (the default) falling back to blkid, which in some cases has the right value when lsblk fails. Signed-off-by: Alfredo Deza --- diff --git a/src/ceph-volume/ceph_volume/devices/simple/scan.py b/src/ceph-volume/ceph_volume/devices/simple/scan.py index 9dabbe9ba77d7..55d26ef78ba62 100644 --- a/src/ceph-volume/ceph_volume/devices/simple/scan.py +++ b/src/ceph-volume/ceph_volume/devices/simple/scan.py @@ -8,6 +8,7 @@ from textwrap import dedent from ceph_volume import decorators, terminal, conf from ceph_volume.api import lvm from ceph_volume.util import arg_validators, system, disk, encryption +from ceph_volume.util.device import Device logger = logging.getLogger(__name__) @@ -337,10 +338,12 @@ class Scan(object): return args = parser.parse_args(self.argv) - if disk.is_partition(args.osd_path): - label = disk.lsblk(args.osd_path)['PARTLABEL'] - if 'data' not in label: - raise RuntimeError('Device must be the data partition, but got: %s' % label) + device = Device(args.osd_path) + if device.is_partition: + if device.ceph_disk.type != 'data': + label = device.ceph_disk.partlabel + msg = 'Device must be the ceph data partition, but PARTLABEL reported: "%s"' % label + raise RuntimeError(msg) # Capture some environment status, so that it can be reused all over self.device_mounts = system.get_mounts(devices=True)