From 54fb7fd762c46c673c9766df5f18d77e6048f167 Mon Sep 17 00:00:00 2001 From: Guillaume Abrioux Date: Thu, 11 Aug 2022 15:36:12 +0200 Subject: [PATCH] ceph-volume: fix 'ceph_device' field in inventory `ceph-volume inventory` should display a boolean value for the field 'ceph_device'. current result: ``` [root@6bda9ce84c4d /]# ceph-volume inventory /dev/vda ====== Device report /dev/vda ====== path /dev/vda ceph device None ``` expected result: ``` [root@6bda9ce84c4d /]# ceph-volume inventory /dev/sda ====== Device report /dev/sda ====== path /dev/sda ceph device True [root@6bda9ce84c4d /]# ceph-volume inventory /dev/vda ====== Device report /dev/vda ====== path /dev/vda ceph device False ``` Fixes: https://tracker.ceph.com/issues/57100 Signed-off-by: Guillaume Abrioux --- src/ceph-volume/ceph_volume/tests/util/test_device.py | 9 ++++++--- src/ceph-volume/ceph_volume/util/device.py | 6 ++++-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/ceph-volume/ceph_volume/tests/util/test_device.py b/src/ceph-volume/ceph_volume/tests/util/test_device.py index f4ec3aabd6700..8eef3ff00c1d9 100644 --- a/src/ceph-volume/ceph_volume/tests/util/test_device.py +++ b/src/ceph-volume/ceph_volume/tests/util/test_device.py @@ -367,7 +367,8 @@ class TestDevice(object): monkeypatch.setattr(api, 'get_all_devices_vgs', lambda : [vg]) lsblk = {"TYPE": "disk", "NAME": "nvme0n1"} data = {"/dev/nvme0n1": {"size": "6442450944"}} - device_info(devices=data, lsblk=lsblk) + lv = {"tags": {"ceph.osd_id": "1"}} + device_info(devices=data, lsblk=lsblk, lv=lv) disk = device.Device("/dev/nvme0n1") assert disk.available_lvm assert not disk.available @@ -380,7 +381,8 @@ class TestDevice(object): monkeypatch.setattr(api, 'get_all_devices_vgs', lambda : [vg]) lsblk = {"TYPE": "disk", "NAME": "nvme0n1"} data = {"/dev/nvme0n1": {"size": "6442450944"}} - device_info(devices=data, lsblk=lsblk) + lv = {"tags": {"ceph.osd_id": "1"}} + device_info(devices=data, lsblk=lsblk, lv=lv) disk = device.Device("/dev/nvme0n1") assert not disk.available_lvm assert not disk.available @@ -395,7 +397,8 @@ class TestDevice(object): monkeypatch.setattr(api, 'get_all_devices_vgs', lambda : [vg1, vg2]) lsblk = {"TYPE": "disk", "NAME": "nvme0n1"} data = {"/dev/nvme0n1": {"size": "6442450944"}} - device_info(devices=data, lsblk=lsblk) + lv = {"tags": {"ceph.osd_id": "1"}} + device_info(devices=data, lsblk=lsblk, lv=lv) disk = device.Device("/dev/nvme0n1") assert disk.available_lvm assert not disk.available diff --git a/src/ceph-volume/ceph_volume/util/device.py b/src/ceph-volume/ceph_volume/util/device.py index 86249894e5417..015cfe6ff607c 100644 --- a/src/ceph-volume/ceph_volume/util/device.py +++ b/src/ceph-volume/ceph_volume/util/device.py @@ -127,9 +127,9 @@ class Device(object): self.blkid_api = None self._exists = None self._is_lvm_member = None + self.ceph_device = False self._parse() self.lsm_data = self.fetch_lsm(with_lsm) - self.ceph_device = None self.available_lvm, self.rejected_reasons_lvm = self._check_lvm_reject_reasons() self.available_raw, self.rejected_reasons_raw = self._check_raw_reject_reasons() @@ -216,6 +216,7 @@ class Device(object): self.lv_name = lv.name self.ceph_device = lvm.is_ceph_device(lv) else: + self.lvs = [] if self.lsblk_all: for dev in self.lsblk_all: if dev['NAME'] == os.path.basename(self.path): @@ -230,7 +231,6 @@ class Device(object): valid_types.append('loop') if device_type in valid_types: self._set_lvm_membership() - self.ceph_device = disk.has_bluestore_label(self.path) self.ceph_disk = CephDiskDevice(self) @@ -343,6 +343,8 @@ class Device(object): self.vg_name = vgs[0] self._is_lvm_member = True self.lvs.extend(lvm.get_device_lvs(path)) + if self.lvs: + self.ceph_device = any([True if lv.tags.get('ceph.osd_id') else False for lv in self.lvs]) def _get_partitions(self): """ -- 2.39.5