]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-volume: fix 'ceph_device' field in inventory 47562/head
authorGuillaume Abrioux <gabrioux@redhat.com>
Thu, 11 Aug 2022 13:36:12 +0000 (15:36 +0200)
committerGuillaume Abrioux <gabrioux@redhat.com>
Thu, 11 Aug 2022 14:41:04 +0000 (16:41 +0200)
`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 <gabrioux@redhat.com>
src/ceph-volume/ceph_volume/tests/util/test_device.py
src/ceph-volume/ceph_volume/util/device.py

index f4ec3aabd6700531867e9522cc48c3ce351024f9..8eef3ff00c1d9ce94258b1762360caa9f0bb58e5 100644 (file)
@@ -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
index 86249894e54170f469e6e6e64c27674c3d32e0ce..015cfe6ff607c497176d9e73f910a9cb19f56a7a 100644 (file)
@@ -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):
         """