]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-volume: adjust tests for empty PARTLABEL fields
authorJan Fajerski <jfajerski@suse.com>
Tue, 30 Jul 2019 15:29:09 +0000 (17:29 +0200)
committerJan Fajerski <jfajerski@suse.com>
Fri, 2 Aug 2019 09:43:42 +0000 (11:43 +0200)
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 <jfajerski@suse.com>
(cherry picked from commit bb29110c3c6e081568231131c70522dee6d12bb5)

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

index aaf0fb30a15a381600340ae6513ce2ee4519bb53..fad7df44e305dfa2960f4cb45339dc19522228a0 100644 (file)
@@ -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=[
index 01291335c9cc201a81cdca518f3c9b6c446e4166..3a098d7ed2d416b73d8addce9beb395985e19eae 100644 (file)
@@ -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
index ac2832482e1427b5e93c2ab1fafe073149dd4acd..3ec819ec3a0b1f696cf1e2d658d0807422c46774 100644 (file)
@@ -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},
 }