]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-volume: drop `ceph-bluestore-tool` call in Device._parse()
authorGuillaume Abrioux <gabrioux@redhat.com>
Mon, 18 Jul 2022 14:54:17 +0000 (14:54 +0000)
committerGuillaume Abrioux <gabrioux@redhat.com>
Tue, 2 Aug 2022 09:39:18 +0000 (11:39 +0200)
disk.has_bluestore_label() does the same thing without a subprocess call.

Fixes: https://tracker.ceph.com/issues/56622
Signed-off-by: Guillaume Abrioux <gabrioux@redhat.com>
(cherry picked from commit f5f3117510c287d817534c9f7c25af5f208c2f56)

src/ceph-volume/ceph_volume/tests/conftest.py
src/ceph-volume/ceph_volume/tests/test_inventory.py
src/ceph-volume/ceph_volume/tests/util/test_device.py
src/ceph-volume/ceph_volume/util/device.py

index 4a37490fff16cf8504792d3a7ec777d2b4a46afa..f060f78d44c57b5b645d020de4037337defcccfa 100644 (file)
@@ -238,7 +238,11 @@ def lsblk_ceph_disk_member(monkeypatch, request, ceph_partlabel, ceph_parttype):
                                       'NAME': 'sda',
                                       'PARTLABEL': ceph_partlabel,
                                       'PARTTYPE': ceph_parttype})
-
+    monkeypatch.setattr("ceph_volume.util.device.disk.lsblk_all",
+                        lambda: [{'TYPE': 'disk',
+                                  'NAME': 'sda',
+                                  'PARTLABEL': ceph_partlabel,
+                                  'PARTTYPE': ceph_parttype}])
 
 @pytest.fixture
 def blkid_ceph_disk_member(monkeypatch, request, ceph_partlabel, ceph_parttype):
@@ -259,6 +263,10 @@ def device_info_not_ceph_disk_member(monkeypatch, request):
                         lambda path: {'TYPE': 'disk',
                                       'NAME': 'sda',
                                       'PARTLABEL': request.param[0]})
+    monkeypatch.setattr("ceph_volume.util.device.disk.lsblk_all",
+                        lambda: [{'TYPE': 'disk',
+                                  'NAME': 'sda',
+                                  'PARTLABEL': request.param[0]}])
     monkeypatch.setattr("ceph_volume.util.device.disk.blkid",
                         lambda path: {'TYPE': 'disk',
                                       'PARTLABEL': request.param[1]})
index 7b27504ecee76b5db4cf137f5ed1f02c87e1fbb9..785d8b56e86b66132d05efa867adefa1b7cb9eb6 100644 (file)
@@ -3,10 +3,12 @@
 import pytest
 from ceph_volume.util.device import Devices
 from ceph_volume.util.lsmdisk import LSMDisk
+from mock.mock import patch
 import ceph_volume.util.lsmdisk as lsmdisk
 
 
 @pytest.fixture
+@patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
 def device_report_keys(device_info):
     device_info(devices={
         # example output of disk.get_devices()
@@ -36,6 +38,7 @@ def device_report_keys(device_info):
     return list(report.keys())
 
 @pytest.fixture
+@patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
 def device_sys_api_keys(device_info):
     device_info(devices={
         # example output of disk.get_devices()
@@ -64,6 +67,7 @@ def device_sys_api_keys(device_info):
     return list(report['sys_api'].keys())
 
 @pytest.fixture
+@patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
 def device_data(device_info):
     device_info(
         devices={
index 91130d34df0d7063c83adcb40ca838a7dde64107..f4ec3aabd6700531867e9522cc48c3ce351024f9 100644 (file)
@@ -38,6 +38,7 @@ class TestDevice(object):
         disk = device.Device("/dev/sda")
         assert disk.lvm_size.gb == 4
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_lvm_size_rounds_down(self, fake_call, device_info):
         # 5.5GB in size
         data = {"/dev/sda": {"size": "5905580032"}}
@@ -53,6 +54,7 @@ class TestDevice(object):
         disk = device.Device("vg/lv")
         assert disk.is_lv
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_vgs_is_empty(self, fake_call, device_info, monkeypatch):
         BarPVolume = api.PVolume(pv_name='/dev/sda', pv_uuid="0000",
                                  pv_tags={})
@@ -65,6 +67,7 @@ class TestDevice(object):
         disk = device.Device("/dev/nvme0n1")
         assert disk.vgs == []
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_vgs_is_not_empty(self, fake_call, device_info, monkeypatch):
         vg = api.VolumeGroup(pv_name='/dev/nvme0n1', vg_name='foo/bar', vg_free_count=6,
                              vg_extent_size=1073741824)
@@ -74,6 +77,7 @@ class TestDevice(object):
         disk = device.Device("/dev/nvme0n1")
         assert len(disk.vgs) == 1
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_device_is_device(self, fake_call, device_info):
         data = {"/dev/sda": {"foo": "bar"}}
         lsblk = {"TYPE": "device", "NAME": "sda"}
@@ -81,6 +85,7 @@ class TestDevice(object):
         disk = device.Device("/dev/sda")
         assert disk.is_device is True
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_loop_device_is_not_device(self, fake_call, device_info):
         data = {"/dev/loop0": {"foo": "bar"}}
         lsblk = {"TYPE": "loop"}
@@ -88,6 +93,7 @@ class TestDevice(object):
         disk = device.Device("/dev/loop0")
         assert disk.is_device is False
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_loop_device_is_device(self, fake_call, device_info):
         data = {"/dev/loop0": {"foo": "bar"}}
         lsblk = {"TYPE": "loop"}
@@ -97,6 +103,7 @@ class TestDevice(object):
         assert disk.is_device is True
         del os.environ["CEPH_VOLUME_ALLOW_LOOP_DEVICES"]
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_device_is_rotational(self, fake_call, device_info):
         data = {"/dev/sda": {"rotational": "1"}}
         lsblk = {"TYPE": "device", "NAME": "sda"}
@@ -104,6 +111,7 @@ class TestDevice(object):
         disk = device.Device("/dev/sda")
         assert disk.rotational
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_device_is_not_rotational(self, fake_call, device_info):
         data = {"/dev/sda": {"rotational": "0"}}
         lsblk = {"TYPE": "device", "NAME": "sda"}
@@ -111,6 +119,7 @@ class TestDevice(object):
         disk = device.Device("/dev/sda")
         assert not disk.rotational
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_device_is_rotational_lsblk(self, fake_call, device_info):
         data = {"/dev/sda": {"foo": "bar"}}
         lsblk = {"TYPE": "device", "ROTA": "1", "NAME": "sda"}
@@ -118,6 +127,7 @@ class TestDevice(object):
         disk = device.Device("/dev/sda")
         assert disk.rotational
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_device_is_not_rotational_lsblk(self, fake_call, device_info):
         data = {"/dev/sda": {"rotational": "0"}}
         lsblk = {"TYPE": "device", "ROTA": "0", "NAME": "sda"}
@@ -125,6 +135,7 @@ class TestDevice(object):
         disk = device.Device("/dev/sda")
         assert not disk.rotational
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_device_is_rotational_defaults_true(self, fake_call, device_info):
         # rotational will default true if no info from sys_api or lsblk is found
         data = {"/dev/sda": {"foo": "bar"}}
@@ -133,6 +144,7 @@ class TestDevice(object):
         disk = device.Device("/dev/sda")
         assert disk.rotational
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_disk_is_device(self, fake_call, device_info):
         data = {"/dev/sda": {"foo": "bar"}}
         lsblk = {"TYPE": "disk", "NAME": "sda"}
@@ -140,6 +152,7 @@ class TestDevice(object):
         disk = device.Device("/dev/sda")
         assert disk.is_device is True
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_is_partition(self, fake_call, device_info):
         data = {"/dev/sda1": {"foo": "bar"}}
         lsblk = {"TYPE": "part", "NAME": "sda1", "PKNAME": "sda"}
@@ -147,6 +160,7 @@ class TestDevice(object):
         disk = device.Device("/dev/sda1")
         assert disk.is_partition
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_mpath_device_is_device(self, fake_call, device_info):
         data = {"/dev/foo": {"foo": "bar"}}
         lsblk = {"TYPE": "mpath", "NAME": "foo"}
@@ -154,6 +168,7 @@ class TestDevice(object):
         disk = device.Device("/dev/foo")
         assert disk.is_device is True
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_is_not_lvm_member(self, fake_call, device_info):
         data = {"/dev/sda1": {"foo": "bar"}}
         lsblk = {"TYPE": "part", "NAME": "sda1", "PKNAME": "sda"}
@@ -161,6 +176,7 @@ class TestDevice(object):
         disk = device.Device("/dev/sda1")
         assert not disk.is_lvm_member
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_is_lvm_member(self, fake_call, device_info):
         data = {"/dev/sda1": {"foo": "bar"}}
         lsblk = {"TYPE": "part", "NAME": "sda1", "PKNAME": "sda"}
@@ -168,18 +184,21 @@ class TestDevice(object):
         disk = device.Device("/dev/sda1")
         assert not disk.is_lvm_member
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_is_mapper_device(self, fake_call, device_info):
         lsblk = {"TYPE": "lvm", "NAME": "foo"}
         device_info(lsblk=lsblk)
         disk = device.Device("/dev/mapper/foo")
         assert disk.is_mapper
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_dm_is_mapper_device(self, fake_call, device_info):
         lsblk = {"TYPE": "lvm", "NAME": "dm-4"}
         device_info(lsblk=lsblk)
         disk = device.Device("/dev/dm-4")
         assert disk.is_mapper
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_is_not_mapper_device(self, fake_call, device_info):
         lsblk = {"TYPE": "disk", "NAME": "sda"}
         device_info(lsblk=lsblk)
@@ -188,6 +207,7 @@ class TestDevice(object):
 
     @pytest.mark.usefixtures("lsblk_ceph_disk_member",
                              "disable_kernel_queries")
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_is_ceph_disk_lsblk(self, fake_call, monkeypatch, patch_bluestore_label):
         disk = device.Device("/dev/sda")
         assert disk.is_ceph_disk_member
@@ -195,12 +215,14 @@ class TestDevice(object):
     @pytest.mark.usefixtures("blkid_ceph_disk_member",
                              "lsblk_ceph_disk_member",
                              "disable_kernel_queries")
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_is_ceph_disk_blkid(self, fake_call, monkeypatch, patch_bluestore_label):
         disk = device.Device("/dev/sda")
         assert disk.is_ceph_disk_member
 
     @pytest.mark.usefixtures("lsblk_ceph_disk_member",
                              "disable_kernel_queries")
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_is_ceph_disk_member_not_available_lsblk(self, fake_call, monkeypatch, patch_bluestore_label):
         disk = device.Device("/dev/sda")
         assert disk.is_ceph_disk_member
@@ -210,12 +232,14 @@ class TestDevice(object):
     @pytest.mark.usefixtures("blkid_ceph_disk_member",
                              "lsblk_ceph_disk_member",
                              "disable_kernel_queries")
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_is_ceph_disk_member_not_available_blkid(self, fake_call, monkeypatch, patch_bluestore_label):
         disk = device.Device("/dev/sda")
         assert disk.is_ceph_disk_member
         assert not disk.available
         assert "Used by ceph-disk" in disk.rejected_reasons
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_reject_removable_device(self, fake_call, device_info):
         data = {"/dev/sdb": {"removable": 1}}
         lsblk = {"TYPE": "disk", "NAME": "sdb"}
@@ -223,6 +247,7 @@ class TestDevice(object):
         disk = device.Device("/dev/sdb")
         assert not disk.available
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_reject_device_with_gpt_headers(self, fake_call, device_info):
         data = {"/dev/sdb": {"removable": 0, "size": 5368709120}}
         lsblk = {"TYPE": "disk", "NAME": "sdb"}
@@ -235,6 +260,7 @@ class TestDevice(object):
         disk = device.Device("/dev/sdb")
         assert not disk.available
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_accept_non_removable_device(self, fake_call, device_info):
         data = {"/dev/sdb": {"removable": 0, "size": 5368709120}}
         lsblk = {"TYPE": "disk", "NAME": "sdb"}
@@ -242,6 +268,7 @@ class TestDevice(object):
         disk = device.Device("/dev/sdb")
         assert disk.available
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_reject_not_acceptable_device(self, fake_call, device_info):
         data = {"/dev/dm-0": {"foo": "bar"}}
         lsblk = {"TYPE": "mpath", "NAME": "dm-0"}
@@ -291,6 +318,7 @@ class TestDevice(object):
         disk = device.Device("/dev/cdrom")
         assert not disk.available
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_reject_smaller_than_5gb(self, fake_call, device_info):
         data = {"/dev/sda": {"size": 5368709119}}
         lsblk = {"TYPE": "disk", "NAME": "sda"}
@@ -298,6 +326,7 @@ class TestDevice(object):
         disk = device.Device("/dev/sda")
         assert not disk.available, 'too small device is available'
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_accept_non_readonly_device(self, fake_call, device_info):
         data = {"/dev/sda": {"ro": 0, "size": 5368709120}}
         lsblk = {"TYPE": "disk", "NAME": "sda"}
@@ -305,6 +334,7 @@ class TestDevice(object):
         disk = device.Device("/dev/sda")
         assert disk.available
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_reject_bluestore_device(self, fake_call, monkeypatch, patch_bluestore_label, device_info):
         patch_bluestore_label.return_value = True
         lsblk = {"TYPE": "disk", "NAME": "sda"}
@@ -313,6 +343,7 @@ class TestDevice(object):
         assert not disk.available
         assert "Has BlueStore device label" in disk.rejected_reasons
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_reject_device_with_oserror(self, fake_call, monkeypatch, patch_bluestore_label, device_info):
         patch_bluestore_label.side_effect = OSError('test failure')
         lsblk = {"TYPE": "disk", "NAME": "sda"}
@@ -324,10 +355,12 @@ class TestDevice(object):
     @pytest.mark.usefixtures("lsblk_ceph_disk_member",
                              "device_info_not_ceph_disk_member",
                              "disable_kernel_queries")
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_is_not_ceph_disk_member_lsblk(self, fake_call, patch_bluestore_label):
         disk = device.Device("/dev/sda")
         assert disk.is_ceph_disk_member is False
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_existing_vg_available(self, fake_call, monkeypatch, device_info):
         vg = api.VolumeGroup(pv_name='/dev/nvme0n1', vg_name='foo/bar', vg_free_count=1536,
                              vg_extent_size=4194304)
@@ -340,6 +373,7 @@ class TestDevice(object):
         assert not disk.available
         assert not disk.available_raw
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_existing_vg_too_small(self, fake_call, monkeypatch, device_info):
         vg = api.VolumeGroup(pv_name='/dev/nvme0n1', vg_name='foo/bar', vg_free_count=4,
                              vg_extent_size=1073741824)
@@ -352,6 +386,7 @@ class TestDevice(object):
         assert not disk.available
         assert not disk.available_raw
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_multiple_existing_vgs(self, fake_call, monkeypatch, device_info):
         vg1 = api.VolumeGroup(pv_name='/dev/nvme0n1', vg_name='foo/bar', vg_free_count=1000,
                              vg_extent_size=4194304)
@@ -392,6 +427,7 @@ class TestDevice(object):
         disk = device.Device("/dev/sda")
         assert disk.used_by_ceph
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_not_used_by_ceph(self, fake_call, device_info, monkeypatch):
         FooPVolume = api.PVolume(pv_name='/dev/sda', pv_uuid="0000", lv_uuid="0000", pv_tags={}, vg_name="vg")
         pvolumes = []
@@ -405,6 +441,7 @@ class TestDevice(object):
         disk = device.Device("/dev/sda")
         assert not disk.used_by_ceph
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_get_device_id(self, fake_call, device_info):
         udev = {k:k for k in ['ID_VENDOR', 'ID_MODEL', 'ID_SCSI_SERIAL']}
         lsblk = {"TYPE": "disk", "NAME": "sda"}
@@ -426,18 +463,21 @@ class TestDevice(object):
 
 class TestDeviceEncryption(object):
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_partition_is_not_encrypted_lsblk(self, fake_call, device_info):
         lsblk = {'TYPE': 'part', 'FSTYPE': 'xfs', 'NAME': 'sda', 'PKNAME': 'sda'}
         device_info(lsblk=lsblk)
         disk = device.Device("/dev/sda")
         assert disk.is_encrypted is False
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_partition_is_encrypted_lsblk(self, fake_call, device_info):
         lsblk = {'TYPE': 'part', 'FSTYPE': 'crypto_LUKS', 'NAME': 'sda', 'PKNAME': 'sda'}
         device_info(lsblk=lsblk)
         disk = device.Device("/dev/sda")
         assert disk.is_encrypted is True
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_partition_is_not_encrypted_blkid(self, fake_call, device_info):
         lsblk = {'TYPE': 'part', 'NAME': 'sda', 'PKNAME': 'sda'}
         blkid = {'TYPE': 'ceph data'}
@@ -445,6 +485,7 @@ class TestDeviceEncryption(object):
         disk = device.Device("/dev/sda")
         assert disk.is_encrypted is False
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_partition_is_encrypted_blkid(self, fake_call, device_info):
         lsblk = {'TYPE': 'part', 'NAME': 'sda' ,'PKNAME': 'sda'}
         blkid = {'TYPE': 'crypto_LUKS'}
@@ -452,6 +493,7 @@ class TestDeviceEncryption(object):
         disk = device.Device("/dev/sda")
         assert disk.is_encrypted is True
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_mapper_is_encrypted_luks1(self, fake_call, device_info, monkeypatch):
         status = {'type': 'LUKS1'}
         monkeypatch.setattr(device, 'encryption_status', lambda x: status)
@@ -461,6 +503,7 @@ class TestDeviceEncryption(object):
         disk = device.Device("/dev/mapper/uuid")
         assert disk.is_encrypted is True
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_mapper_is_encrypted_luks2(self, fake_call, device_info, monkeypatch):
         status = {'type': 'LUKS2'}
         monkeypatch.setattr(device, 'encryption_status', lambda x: status)
@@ -470,6 +513,7 @@ class TestDeviceEncryption(object):
         disk = device.Device("/dev/mapper/uuid")
         assert disk.is_encrypted is True
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_mapper_is_encrypted_plain(self, fake_call, device_info, monkeypatch):
         status = {'type': 'PLAIN'}
         monkeypatch.setattr(device, 'encryption_status', lambda x: status)
@@ -479,6 +523,7 @@ class TestDeviceEncryption(object):
         disk = device.Device("/dev/mapper/uuid")
         assert disk.is_encrypted is True
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_mapper_is_not_encrypted_plain(self, fake_call, device_info, monkeypatch):
         monkeypatch.setattr(device, 'encryption_status', lambda x: {})
         lsblk = {'FSTYPE': 'xfs', 'NAME': 'uuid', 'TYPE': 'lvm'}
@@ -487,6 +532,7 @@ class TestDeviceEncryption(object):
         disk = device.Device("/dev/mapper/uuid")
         assert disk.is_encrypted is False
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_lv_is_encrypted_blkid(self, fake_call, device_info):
         lsblk = {'TYPE': 'lvm', 'NAME': 'sda'}
         blkid = {'TYPE': 'crypto_LUKS'}
@@ -495,6 +541,7 @@ class TestDeviceEncryption(object):
         disk.lv_api = {}
         assert disk.is_encrypted is True
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_lv_is_not_encrypted_blkid(self, fake_call, factory, device_info):
         lsblk = {'TYPE': 'lvm', 'NAME': 'sda'}
         blkid = {'TYPE': 'xfs'}
@@ -503,6 +550,7 @@ class TestDeviceEncryption(object):
         disk.lv_api = factory(encrypted=None)
         assert disk.is_encrypted is False
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_lv_is_encrypted_lsblk(self, fake_call, device_info):
         lsblk = {'FSTYPE': 'crypto_LUKS', 'NAME': 'sda', 'TYPE': 'lvm'}
         blkid = {'TYPE': 'mapper'}
@@ -511,6 +559,7 @@ class TestDeviceEncryption(object):
         disk.lv_api = {}
         assert disk.is_encrypted is True
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_lv_is_not_encrypted_lsblk(self, fake_call, factory, device_info):
         lsblk = {'FSTYPE': 'xfs', 'NAME': 'sda', 'TYPE': 'lvm'}
         blkid = {'TYPE': 'mapper'}
@@ -519,6 +568,7 @@ class TestDeviceEncryption(object):
         disk.lv_api = factory(encrypted=None)
         assert disk.is_encrypted is False
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_lv_is_encrypted_lvm_api(self, fake_call, factory, device_info):
         lsblk = {'FSTYPE': 'xfs', 'NAME': 'sda', 'TYPE': 'lvm'}
         blkid = {'TYPE': 'mapper'}
@@ -527,6 +577,7 @@ class TestDeviceEncryption(object):
         disk.lv_api = factory(encrypted=True)
         assert disk.is_encrypted is True
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_lv_is_not_encrypted_lvm_api(self, fake_call, factory, device_info):
         lsblk = {'FSTYPE': 'xfs', 'NAME': 'sda', 'TYPE': 'lvm'}
         blkid = {'TYPE': 'mapper'}
@@ -546,6 +597,7 @@ class TestDeviceOrdering(object):
                 "/dev/sdd": {"removable": 1}, # invalid
         }
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_valid_before_invalid(self, fake_call, device_info):
         lsblk_sda = {"NAME": "sda", "TYPE": "disk"}
         lsblk_sdb = {"NAME": "sdb", "TYPE": "disk"}
@@ -557,6 +609,7 @@ class TestDeviceOrdering(object):
         assert sda < sdb
         assert sdb > sda
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_valid_alphabetical_ordering(self, fake_call, device_info):
         lsblk_sda = {"NAME": "sda", "TYPE": "disk"}
         lsblk_sdc = {"NAME": "sdc", "TYPE": "disk"}
@@ -568,6 +621,7 @@ class TestDeviceOrdering(object):
         assert sda < sdc
         assert sdc > sda
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_invalid_alphabetical_ordering(self, fake_call, device_info):
         lsblk_sdb = {"NAME": "sdb", "TYPE": "disk"}
         lsblk_sdd = {"NAME": "sdd", "TYPE": "disk"}
@@ -582,6 +636,7 @@ class TestDeviceOrdering(object):
 
 class TestCephDiskDevice(object):
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_partlabel_lsblk(self, fake_call, device_info):
         lsblk = {"TYPE": "disk", "NAME": "sda", "PARTLABEL": ""}
         device_info(lsblk=lsblk)
@@ -589,6 +644,7 @@ class TestCephDiskDevice(object):
 
         assert disk.partlabel == ''
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_partlabel_blkid(self, fake_call, device_info):
         lsblk = {"TYPE": "disk", "NAME": "sda", "PARTLABEL": "ceph data"}
         blkid = {"TYPE": "disk", "PARTLABEL": "ceph data"}
@@ -600,13 +656,15 @@ class TestCephDiskDevice(object):
     @pytest.mark.usefixtures("lsblk_ceph_disk_member",
                              "blkid_ceph_disk_member",
                              "disable_kernel_queries")
-    def test_is_member_blkid(self, fake_call, monkeypatch, patch_bluestore_label):
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
+    def test_is_member_blkid(self, fake_call, monkeypatch):
         disk = device.CephDiskDevice(device.Device("/dev/sda"))
 
         assert disk.is_member is True
 
     @pytest.mark.usefixtures("lsblk_ceph_disk_member",
                              "disable_kernel_queries")
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_is_member_lsblk(self, fake_call, patch_bluestore_label, device_info):
         lsblk = {"TYPE": "disk", "NAME": "sda", "PARTLABEL": "ceph"}
         device_info(lsblk=lsblk)
@@ -614,6 +672,7 @@ class TestCephDiskDevice(object):
 
         assert disk.is_member is True
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_unknown_type(self, fake_call, device_info):
         lsblk = {"TYPE": "disk", "NAME": "sda", "PARTLABEL": "gluster"}
         device_info(lsblk=lsblk)
@@ -623,6 +682,7 @@ class TestCephDiskDevice(object):
 
     ceph_types = ['data', 'wal', 'db', 'lockbox', 'journal', 'block']
 
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     @pytest.mark.usefixtures("lsblk_ceph_disk_member",
                              "blkid_ceph_disk_member",
                              "disable_kernel_queries")
@@ -634,6 +694,7 @@ class TestCephDiskDevice(object):
     @pytest.mark.usefixtures("blkid_ceph_disk_member",
                              "lsblk_ceph_disk_member",
                              "disable_kernel_queries")
+    @patch("ceph_volume.util.disk.has_bluestore_label", lambda x: False)
     def test_type_lsblk(self, fake_call, device_info, ceph_partlabel):
         disk = device.CephDiskDevice(device.Device("/dev/sda"))
 
index 9dcc8256fb1bc2c01c78f812040ce76d0af38f8e..d54c0d56e11b80ff2b14d844de2a328884ab8ccc 100644 (file)
@@ -3,7 +3,7 @@
 import logging
 import os
 from functools import total_ordering
-from ceph_volume import sys_info, process
+from ceph_volume import sys_info
 from ceph_volume.api import lvm
 from ceph_volume.util import disk, system
 from ceph_volume.util.lsmdisk import LSMDisk
@@ -230,11 +230,7 @@ class Device(object):
                 valid_types.append('loop')
             if device_type in valid_types:
                 self._set_lvm_membership()
-            out, err, rc = process.call([
-                'ceph-bluestore-tool', 'show-label',
-                '--dev', self.path], verbose_on_failure=False)
-            if rc:
-                self.ceph_device = True
+            self.ceph_device = disk.has_bluestore_label(self.path)
 
         self.ceph_disk = CephDiskDevice(self)