From: Jan Fajerski Date: Tue, 30 Jul 2019 15:29:09 +0000 (+0200) Subject: ceph-volume: adjust tests for empty PARTLABEL fields X-Git-Tag: v14.2.3~90^2~1 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=833ca7c60aebea64d7d535c18d2ebc44a9499afd;p=ceph.git ceph-volume: adjust tests for empty PARTLABEL fields It seems like ceph-disk sometimes creates OSDs where the wal and db partitions have no PARTLABEL set. This commit alters tests so that the empty string is considered a valid label. Signed-off-by: Jan Fajerski (cherry picked from commit bb29110c3c6e081568231131c70522dee6d12bb5) --- diff --git a/src/ceph-volume/ceph_volume/tests/conftest.py b/src/ceph-volume/ceph_volume/tests/conftest.py index aaf0fb30a15a3..fad7df44e305d 100644 --- a/src/ceph-volume/ceph_volume/tests/conftest.py +++ b/src/ceph-volume/ceph_volume/tests/conftest.py @@ -1,6 +1,7 @@ import os import pytest from ceph_volume.util import disk +from ceph_volume.util.constants import ceph_disk_guids from ceph_volume.api import lvm as lvm_api from ceph_volume import conf, configuration @@ -192,13 +193,6 @@ def tmpfile(tmpdir): return generate_file -@pytest.fixture(params=[ - 'ceph data', 'ceph journal', 'ceph block', - 'ceph block.wal', 'ceph block.db', 'ceph lockbox']) -def ceph_partlabel(request): - return request.param - - @pytest.fixture def disable_kernel_queries(monkeypatch): ''' @@ -217,16 +211,34 @@ def disable_lvm_queries(monkeypatch): monkeypatch.setattr("ceph_volume.util.device.lvm.get_lv", lambda vg_name, lv_uuid: None) +@pytest.fixture(params=[ + '', 'ceph data', 'ceph journal', 'ceph block', + 'ceph block.wal', 'ceph block.db', 'ceph lockbox']) +def ceph_partlabel(request): + return request.param + + +@pytest.fixture(params=list(ceph_disk_guids.keys())) +def ceph_parttype(request): + return request.param + + @pytest.fixture -def lsblk_ceph_disk_member(monkeypatch, request, ceph_partlabel): +def lsblk_ceph_disk_member(monkeypatch, request, ceph_partlabel, ceph_parttype): monkeypatch.setattr("ceph_volume.util.device.disk.lsblk", lambda path: {'PARTLABEL': ceph_partlabel}) + # setting blkid here too in order to be able to fall back to PARTTYPE based + # membership + monkeypatch.setattr("ceph_volume.util.device.disk.blkid", + lambda path: {'PARTLABEL': '', + 'PARTTYPE': ceph_parttype}) @pytest.fixture -def blkid_ceph_disk_member(monkeypatch, request, ceph_partlabel): +def blkid_ceph_disk_member(monkeypatch, request, ceph_partlabel, ceph_parttype): monkeypatch.setattr("ceph_volume.util.device.disk.blkid", - lambda path: {'PARTLABEL': ceph_partlabel}) + lambda path: {'PARTLABEL': ceph_partlabel, + 'PARTTYPE': ceph_parttype}) @pytest.fixture(params=[ 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 01291335c9cc2..3a098d7ed2d41 100644 --- a/src/ceph-volume/ceph_volume/tests/util/test_device.py +++ b/src/ceph-volume/ceph_volume/tests/util/test_device.py @@ -140,8 +140,6 @@ class TestDevice(object): "disable_kernel_queries", "disable_lvm_queries") def test_is_ceph_disk_lsblk(self, monkeypatch): - monkeypatch.setattr("ceph_volume.util.device.disk.blkid", - lambda path: {'PARTLABEL': ""}) disk = device.Device("/dev/sda") assert disk.is_ceph_disk_member @@ -158,8 +156,6 @@ class TestDevice(object): "disable_kernel_queries", "disable_lvm_queries") def test_is_ceph_disk_member_not_available_lsblk(self, monkeypatch): - monkeypatch.setattr("ceph_volume.util.device.disk.blkid", - lambda path: {'PARTLABEL': ""}) disk = device.Device("/dev/sda") assert disk.is_ceph_disk_member assert not disk.available @@ -422,9 +418,10 @@ class TestCephDiskDevice(object): disk = device.Device("/dev/sda") assert disk.available - def test_is_member_lsblk(self, device_info, ceph_partlabel): - lsblk = {"PARTLABEL": ceph_partlabel} - device_info(lsblk=lsblk) + @pytest.mark.usefixtures("lsblk_ceph_disk_member", + "disable_kernel_queries", + "disable_lvm_queries") + def test_is_member_lsblk(self): disk = device.CephDiskDevice(device.Device("/dev/sda")) assert disk.is_member is True @@ -436,20 +433,23 @@ class TestCephDiskDevice(object): assert disk.type == 'unknown' - def test_type_blkid(self, device_info, ceph_partlabel): - expected = ceph_partlabel.split()[-1].split('.')[-1] - lsblk = {"PARTLABEL": ""} - blkid = {"PARTLABEL": ceph_partlabel} - device_info(lsblk=lsblk, blkid=blkid) + ceph_types = ['data', 'wal', 'db', 'lockbox', 'journal', 'block'] + + @pytest.mark.usefixtures("blkid_ceph_disk_member", + "disable_kernel_queries", + "disable_lvm_queries") + def test_type_blkid(self, monkeypatch, device_info, ceph_partlabel): + monkeypatch.setattr("ceph_volume.util.device.disk.lsblk", + lambda path: {'PARTLABEL': ''}) disk = device.CephDiskDevice(device.Device("/dev/sda")) - assert disk.type == expected + assert disk.type in self.ceph_types + @pytest.mark.usefixtures("blkid_ceph_disk_member", + "lsblk_ceph_disk_member", + "disable_kernel_queries", + "disable_lvm_queries") def test_type_lsblk(self, device_info, ceph_partlabel): - expected = ceph_partlabel.split()[-1].split('.')[-1] - lsblk = {"PARTLABEL": ceph_partlabel} - blkid = {"PARTLABEL": ''} - device_info(lsblk=lsblk, blkid=blkid) disk = device.CephDiskDevice(device.Device("/dev/sda")) - assert disk.type == expected + assert disk.type in self.ceph_types diff --git a/src/ceph-volume/ceph_volume/util/constants.py b/src/ceph-volume/ceph_volume/util/constants.py index ac2832482e142..3ec819ec3a0b1 100644 --- a/src/ceph-volume/ceph_volume/util/constants.py +++ b/src/ceph-volume/ceph_volume/util/constants.py @@ -23,11 +23,24 @@ ceph_disk_guids = { 'cafecafe-9b03-4f30-b4c6-35865ceff106': {'type': 'block', 'encrypted': True, 'encryption_type': 'luks'}, '166418da-c469-4022-adf4-b30afd37f176': {'type': 'block.db', 'encrypted': True, 'encryption_type': 'luks'}, '86a32090-3647-40b9-bbbd-38d8c573aa86': {'type': 'block.wal', 'encrypted': True, 'encryption_type': 'luks'}, - '4fbd7e29-9d25-41b8-afd0-35865ceff05d': {'type': 'osd', 'encrypted': True, 'encryption_type': 'luks'}, + '4fbd7e29-9d25-41b8-afd0-35865ceff05d': {'type': 'data', 'encrypted': True, 'encryption_type': 'luks'}, # plain '45b0969e-9b03-4f30-b4c6-5ec00ceff106': {'type': 'journal', 'encrypted': True, 'encryption_type': 'plain'}, 'cafecafe-9b03-4f30-b4c6-5ec00ceff106': {'type': 'block', 'encrypted': True, 'encryption_type': 'plain'}, '93b0052d-02d9-4d8a-a43b-33a3ee4dfbc3': {'type': 'block.db', 'encrypted': True, 'encryption_type': 'plain'}, '306e8683-4fe2-4330-b7c0-00a917c16966': {'type': 'block.wal', 'encrypted': True, 'encryption_type': 'plain'}, - '4fbd7e29-9d25-41b8-afd0-5ec00ceff05d': {'type': 'osd', 'encrypted': True, 'encryption_type': 'plain'}, + '4fbd7e29-9d25-41b8-afd0-5ec00ceff05d': {'type': 'data', 'encrypted': True, 'encryption_type': 'plain'}, + # regular guids that differ from plain + 'fb3aabf9-d25f-47cc-bf5e-721d1816496b': {'type': 'lockbox', 'encrypted': False, 'encryption_type': None}, + '30cd0809-c2b2-499c-8879-2d6b78529876': {'type': 'block.db', 'encrypted': False, 'encryption_type': None}, + '5ce17fce-4087-4169-b7ff-056cc58473f9': {'type': 'block.wal', 'encrypted': False, 'encryption_type': None}, + '4fbd7e29-9d25-41b8-afd0-062c0ceff05d': {'type': 'data', 'encrypted': False, 'encryption_type': None}, + 'cafecafe-9b03-4f30-b4c6-b4b80ceff106': {'type': 'block', 'encrypted': False, 'encryption_type': None}, + # multipath + '01b41e1b-002a-453c-9f17-88793989ff8f': {'type': 'block.wal', 'encrypted': False, 'encryption_type': None}, + 'ec6d6385-e346-45dc-be91-da2a7c8b3261': {'type': 'block.wal', 'encrypted': False, 'encryption_type': None}, + '45b0969e-8ae0-4982-bf9d-5a8d867af560': {'type': 'journal', 'encrypted': False, 'encryption_type': None}, + '4fbd7e29-8ae0-4982-bf9d-5a8d867af560': {'type': 'data', 'encrypted': False, 'encryption_type': None}, + '7f4a666a-16f3-47a2-8445-152ef4d03f6c': {'type': 'lockbox', 'encrypted': False, 'encryption_type': None}, + 'cafecafe-8ae0-4982-bf9d-5a8d867af560': {'type': 'block', 'encrypted': False, 'encryption_type': None}, }