From c502e5f64aa4f0d832c14680e1731e58d8a3770b Mon Sep 17 00:00:00 2001 From: Alfredo Deza Date: Thu, 27 Sep 2018 16:17:29 -0400 Subject: [PATCH] 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 --- src/ceph-volume/ceph_volume/devices/simple/scan.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) 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) -- 2.39.5