]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-volume: add tests for util.device.Device.used_by_ceph
authorAndrew Schoen <aschoen@redhat.com>
Wed, 3 Oct 2018 15:19:45 +0000 (10:19 -0500)
committerAndrew Schoen <aschoen@redhat.com>
Wed, 10 Oct 2018 19:30:27 +0000 (15:30 -0400)
Signed-off-by: Andrew Schoen <aschoen@redhat.com>
src/ceph-volume/ceph_volume/tests/conftest.py
src/ceph-volume/ceph_volume/tests/util/test_device.py
src/ceph-volume/ceph_volume/util/device.py

index 1df4743e68ce1e74542d9bfe5d599df6fccc6c6f..4af388662d76d78666ae78c17b2e98709c4cc01f 100644 (file)
@@ -199,7 +199,11 @@ def device_info(monkeypatch):
         lv = Factory(**lv) if lv else None
         monkeypatch.setattr("ceph_volume.sys_info.devices", {})
         monkeypatch.setattr("ceph_volume.util.device.disk.get_devices", lambda: devices)
-        monkeypatch.setattr("ceph_volume.util.device.lvm.get_lv_from_argument", lambda path: lv)
+        if not devices:
+            monkeypatch.setattr("ceph_volume.util.device.lvm.get_lv_from_argument", lambda path: lv)
+        else:
+            monkeypatch.setattr("ceph_volume.util.device.lvm.get_lv_from_argument", lambda path: None)
+        monkeypatch.setattr("ceph_volume.util.device.lvm.get_lv", lambda vg_name, lv_uuid: lv)
         monkeypatch.setattr("ceph_volume.util.device.disk.lsblk", lambda path: lsblk)
         monkeypatch.setattr("ceph_volume.util.device.disk.blkid", lambda path: blkid)
     return apply
index 0990366ed7808ca17492948225f290ac7670f50b..369beeef3a35b1cc9937448a5374efc0e9a5d2dc 100644 (file)
@@ -94,6 +94,29 @@ class TestDevice(object):
         disk = device.Device("/dev/sda")
         assert disk.pvs_api
 
+    @pytest.mark.parametrize("ceph_type", ["data", "block"])
+    def test_used_by_ceph(self, device_info, pvolumes, monkeypatch, ceph_type):
+        FooPVolume = api.PVolume(pv_name='/dev/sda', pv_uuid="0000", lv_uuid="0000", pv_tags={}, vg_name="vg")
+        pvolumes.append(FooPVolume)
+        monkeypatch.setattr(api, 'PVolumes', lambda: pvolumes)
+        data = {"/dev/sda": {"foo": "bar"}}
+        lsblk = {"TYPE": "part"}
+        lv_data = {"lv_path": "vg/lv", "vg_name": "vg", "lv_uuid": "0000", "tags": {"ceph.osd_id": 0, "ceph.type": ceph_type}}
+        device_info(devices=data, lsblk=lsblk, lv=lv_data)
+        disk = device.Device("/dev/sda")
+        assert disk.used_by_ceph
+
+    def test_not_used_by_ceph(self, device_info, pvolumes, monkeypatch):
+        FooPVolume = api.PVolume(pv_name='/dev/sda', pv_uuid="0000", lv_uuid="0000", pv_tags={}, vg_name="vg")
+        pvolumes.append(FooPVolume)
+        monkeypatch.setattr(api, 'PVolumes', lambda: pvolumes)
+        data = {"/dev/sda": {"foo": "bar"}}
+        lsblk = {"TYPE": "part"}
+        lv_data = {"lv_path": "vg/lv", "vg_name": "vg", "lv_uuid": "0000", "tags": {"ceph.osd_id": 0, "ceph.type": "journal"}}
+        device_info(devices=data, lsblk=lsblk, lv=lv_data)
+        disk = device.Device("/dev/sda")
+        assert not disk.used_by_ceph
+
 
 ceph_partlabels = [
     'ceph data', 'ceph journal', 'ceph block',
index 8c0ee1791f4d4e3dbd1953b154dd375722d07065..fdae6e85f49e180ffac702beaa83e4e42ccdd51a 100644 (file)
@@ -119,7 +119,7 @@ class Device(object):
     @property
     def used_by_ceph(self):
         # only filter out data devices as journals could potentially be reused
-        osd_ids = [lv.tags.get("ceph.osd_id") for lv in self.lvs
+        osd_ids = [lv.tags.get("ceph.osd_id") is not None for lv in self.lvs
                    if lv.tags.get("ceph.type") in ["data", "block"]]
         return any(osd_ids)