]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/ceph-volume/ceph_volume/tests/devices/lvm/test_activate.py
import 15.2.5
[ceph.git] / ceph / src / ceph-volume / ceph_volume / tests / devices / lvm / test_activate.py
index cfa7de8e8c415bd2569ad10952276465ae367a48..33e0ed32b619a51a00839b57f9c175c6a2a305d0 100644 (file)
@@ -1,4 +1,5 @@
 import pytest
+from copy import deepcopy
 from ceph_volume.devices.lvm import activate
 from ceph_volume.api import lvm as api
 from ceph_volume.tests.conftest import Capture
@@ -22,34 +23,42 @@ class TestActivate(object):
     # test the negative side effect with an actual functional run, so we must
     # setup a perfect scenario for this test to check it can really work
     # with/without osd_id
-    def test_no_osd_id_matches_fsid(self, is_root, volumes, monkeypatch, capture):
-        FooVolume = api.Volume(lv_name='foo', lv_path='/dev/vg/foo', lv_tags="ceph.osd_fsid=1234")
+    def test_no_osd_id_matches_fsid(self, is_root, monkeypatch, capture):
+        FooVolume = api.Volume(lv_name='foo', lv_path='/dev/vg/foo',
+                               lv_tags="ceph.osd_fsid=1234")
+        volumes = []
         volumes.append(FooVolume)
-        monkeypatch.setattr(api, 'Volumes', lambda: volumes)
+        monkeypatch.setattr(api, 'get_lvs', lambda **kwargs: volumes)
         monkeypatch.setattr(activate, 'activate_filestore', capture)
         args = Args(osd_id=None, osd_fsid='1234', filestore=True)
         activate.Activate([]).activate(args)
         assert capture.calls[0]['args'][0] == [FooVolume]
 
-    def test_no_osd_id_matches_fsid_bluestore(self, is_root, volumes, monkeypatch, capture):
-        FooVolume = api.Volume(lv_name='foo', lv_path='/dev/vg/foo', lv_tags="ceph.osd_fsid=1234")
+    def test_no_osd_id_matches_fsid_bluestore(self, is_root, monkeypatch, capture):
+        FooVolume = api.Volume(lv_name='foo', lv_path='/dev/vg/foo',
+                               lv_tags="ceph.osd_fsid=1234")
+        volumes = []
         volumes.append(FooVolume)
-        monkeypatch.setattr(api, 'Volumes', lambda: volumes)
+        monkeypatch.setattr(api, 'get_lvs', lambda **kwargs: volumes)
         monkeypatch.setattr(activate, 'activate_bluestore', capture)
         args = Args(osd_id=None, osd_fsid='1234', bluestore=True)
         activate.Activate([]).activate(args)
         assert capture.calls[0]['args'][0] == [FooVolume]
 
-    def test_no_osd_id_no_matching_fsid(self, is_root, volumes, monkeypatch, capture):
-        FooVolume = api.Volume(lv_name='foo', lv_path='/dev/vg/foo', lv_tags="ceph.osd_fsid=11234")
+    def test_no_osd_id_no_matching_fsid(self, is_root, monkeypatch, capture):
+        FooVolume = api.Volume(lv_name='foo', lv_path='/dev/vg/foo',
+                               lv_tags="ceph.osd_fsid=1111")
+        volumes = []
         volumes.append(FooVolume)
-        monkeypatch.setattr(api, 'Volumes', lambda: volumes)
+        monkeypatch.setattr(api, 'get_lvs', lambda **kwargs: [])
+        monkeypatch.setattr(api, 'get_first_lv', lambda **kwargs: [])
         monkeypatch.setattr(activate, 'activate_filestore', capture)
-        args = Args(osd_id=None, osd_fsid='1234')
+
+        args = Args(osd_id=None, osd_fsid='2222')
         with pytest.raises(RuntimeError):
             activate.Activate([]).activate(args)
 
-    def test_filestore_no_systemd(self, is_root, volumes, monkeypatch, capture):
+    def test_filestore_no_systemd(self, is_root, monkeypatch, capture):
         monkeypatch.setattr('ceph_volume.configuration.load', lambda: None)
         fake_enable = Capture()
         fake_start_osd = Capture()
@@ -70,16 +79,21 @@ class TestActivate(object):
         DataVolume = api.Volume(
             lv_name='data',
             lv_path='/dev/vg/data',
-            lv_tags="ceph.cluster_name=ceph,ceph.journal_device=/dev/vg/journal,ceph.journal_uuid=000,ceph.type=data,ceph.osd_id=0,ceph.osd_fsid=1234")
+            lv_uuid='001',
+            lv_tags="ceph.cluster_name=ceph,ceph.journal_device=/dev/vg/" + \
+                    "journal,ceph.journal_uuid=000,ceph.type=data," + \
+                    "ceph.osd_id=0,ceph.osd_fsid=1234")
+        volumes = []
         volumes.append(DataVolume)
         volumes.append(JournalVolume)
-        monkeypatch.setattr(api, 'Volumes', lambda: volumes)
+        monkeypatch.setattr(api, 'get_lvs', lambda **kwargs: deepcopy(volumes))
+
         args = Args(osd_id=None, osd_fsid='1234', no_systemd=True, filestore=True)
         activate.Activate([]).activate(args)
         assert fake_enable.calls == []
         assert fake_start_osd.calls == []
 
-    def test_filestore_no_systemd_autodetect(self, is_root, volumes, monkeypatch, capture):
+    def test_filestore_no_systemd_autodetect(self, is_root, monkeypatch, capture):
         monkeypatch.setattr('ceph_volume.configuration.load', lambda: None)
         fake_enable = Capture()
         fake_start_osd = Capture()
@@ -100,16 +114,22 @@ class TestActivate(object):
         DataVolume = api.Volume(
             lv_name='data',
             lv_path='/dev/vg/data',
-            lv_tags="ceph.cluster_name=ceph,ceph.journal_device=/dev/vg/journal,ceph.journal_uuid=000,ceph.type=data,ceph.osd_id=0,ceph.osd_fsid=1234")
+            lv_uuid='001',
+            lv_tags="ceph.cluster_name=ceph,ceph.journal_device=/dev/vg/" + \
+                    "journal,ceph.journal_uuid=000,ceph.type=data," + \
+                    "ceph.osd_id=0,ceph.osd_fsid=1234")
+        volumes = []
         volumes.append(DataVolume)
         volumes.append(JournalVolume)
-        monkeypatch.setattr(api, 'Volumes', lambda: volumes)
-        args = Args(osd_id=None, osd_fsid='1234', no_systemd=True, filestore=True, auto_detect_objectstore=True)
+        monkeypatch.setattr(api, 'get_lvs', lambda **kwargs: deepcopy(volumes))
+
+        args = Args(osd_id=None, osd_fsid='1234', no_systemd=True,
+                    filestore=True, auto_detect_objectstore=True)
         activate.Activate([]).activate(args)
         assert fake_enable.calls == []
         assert fake_start_osd.calls == []
 
-    def test_filestore_systemd_autodetect(self, is_root, volumes, monkeypatch, capture):
+    def test_filestore_systemd_autodetect(self, is_root, monkeypatch, capture):
         fake_enable = Capture()
         fake_start_osd = Capture()
         monkeypatch.setattr('ceph_volume.configuration.load', lambda: None)
@@ -130,16 +150,22 @@ class TestActivate(object):
         DataVolume = api.Volume(
             lv_name='data',
             lv_path='/dev/vg/data',
-            lv_tags="ceph.cluster_name=ceph,ceph.journal_device=/dev/vg/journal,ceph.journal_uuid=000,ceph.type=data,ceph.osd_id=0,ceph.osd_fsid=1234")
+            lv_uuid='001',
+            lv_tags="ceph.cluster_name=ceph,ceph.journal_device=/dev/vg/" + \
+                    "journal,ceph.journal_uuid=000,ceph.type=data," + \
+                    "ceph.osd_id=0,ceph.osd_fsid=1234")
+        volumes = []
         volumes.append(DataVolume)
         volumes.append(JournalVolume)
-        monkeypatch.setattr(api, 'Volumes', lambda: volumes)
-        args = Args(osd_id=None, osd_fsid='1234', no_systemd=False, filestore=True, auto_detect_objectstore=False)
+        monkeypatch.setattr(api, 'get_lvs', lambda **kwargs: deepcopy(volumes))
+
+        args = Args(osd_id=None, osd_fsid='1234', no_systemd=False,
+                    filestore=True, auto_detect_objectstore=False)
         activate.Activate([]).activate(args)
         assert fake_enable.calls != []
         assert fake_start_osd.calls != []
 
-    def test_filestore_systemd(self, is_root, volumes, monkeypatch, capture):
+    def test_filestore_systemd(self, is_root, monkeypatch, capture):
         fake_enable = Capture()
         fake_start_osd = Capture()
         monkeypatch.setattr('ceph_volume.configuration.load', lambda: None)
@@ -160,16 +186,22 @@ class TestActivate(object):
         DataVolume = api.Volume(
             lv_name='data',
             lv_path='/dev/vg/data',
-            lv_tags="ceph.cluster_name=ceph,ceph.journal_device=/dev/vg/journal,ceph.journal_uuid=000,ceph.type=data,ceph.osd_id=0,ceph.osd_fsid=1234")
+            lv_uuid='001',
+            lv_tags="ceph.cluster_name=ceph,ceph.journal_device=/dev/vg/" + \
+                    "journal,ceph.journal_uuid=000,ceph.type=data," + \
+                    "ceph.osd_id=0,ceph.osd_fsid=1234")
+        volumes = []
         volumes.append(DataVolume)
         volumes.append(JournalVolume)
-        monkeypatch.setattr(api, 'Volumes', lambda: volumes)
-        args = Args(osd_id=None, osd_fsid='1234', no_systemd=False, filestore=True)
+        monkeypatch.setattr(api, 'get_lvs', lambda **kwargs: deepcopy(volumes))
+
+        args = Args(osd_id=None, osd_fsid='1234', no_systemd=False,
+                    filestore=True)
         activate.Activate([]).activate(args)
         assert fake_enable.calls != []
         assert fake_start_osd.calls != []
 
-    def test_bluestore_no_systemd(self, is_root, volumes, monkeypatch, capture):
+    def test_bluestore_no_systemd(self, is_root, monkeypatch, capture):
         fake_enable = Capture()
         fake_start_osd = Capture()
         monkeypatch.setattr('ceph_volume.util.system.path_is_mounted', lambda *a, **kw: True)
@@ -180,15 +212,18 @@ class TestActivate(object):
         DataVolume = api.Volume(
             lv_name='data',
             lv_path='/dev/vg/data',
-            lv_tags="ceph.cluster_name=ceph,,ceph.journal_uuid=000,ceph.type=block,ceph.osd_id=0,ceph.osd_fsid=1234")
+            lv_tags="ceph.cluster_name=ceph,,ceph.journal_uuid=000," + \
+                    "ceph.type=block,ceph.osd_id=0,ceph.osd_fsid=1234")
+        volumes = []
         volumes.append(DataVolume)
-        monkeypatch.setattr(api, 'Volumes', lambda: volumes)
+        monkeypatch.setattr(api, 'get_lvs', lambda **kwargs: deepcopy(volumes))
+
         args = Args(osd_id=None, osd_fsid='1234', no_systemd=True, bluestore=True)
         activate.Activate([]).activate(args)
         assert fake_enable.calls == []
         assert fake_start_osd.calls == []
 
-    def test_bluestore_systemd(self, is_root, volumes, monkeypatch, capture):
+    def test_bluestore_systemd(self, is_root, monkeypatch, capture):
         fake_enable = Capture()
         fake_start_osd = Capture()
         monkeypatch.setattr('ceph_volume.util.system.path_is_mounted', lambda *a, **kw: True)
@@ -199,15 +234,19 @@ class TestActivate(object):
         DataVolume = api.Volume(
             lv_name='data',
             lv_path='/dev/vg/data',
-            lv_tags="ceph.cluster_name=ceph,,ceph.journal_uuid=000,ceph.type=block,ceph.osd_id=0,ceph.osd_fsid=1234")
+            lv_tags="ceph.cluster_name=ceph,,ceph.journal_uuid=000," + \
+                    "ceph.type=block,ceph.osd_id=0,ceph.osd_fsid=1234")
+        volumes = []
         volumes.append(DataVolume)
-        monkeypatch.setattr(api, 'Volumes', lambda: volumes)
-        args = Args(osd_id=None, osd_fsid='1234', no_systemd=False, bluestore=True)
+        monkeypatch.setattr(api, 'get_lvs', lambda **kwargs: deepcopy(volumes))
+
+        args = Args(osd_id=None, osd_fsid='1234', no_systemd=False,
+                    bluestore=True)
         activate.Activate([]).activate(args)
         assert fake_enable.calls != []
         assert fake_start_osd.calls != []
 
-    def test_bluestore_no_systemd_autodetect(self, is_root, volumes, monkeypatch, capture):
+    def test_bluestore_no_systemd_autodetect(self, is_root, monkeypatch, capture):
         fake_enable = Capture()
         fake_start_osd = Capture()
         monkeypatch.setattr('ceph_volume.util.system.path_is_mounted', lambda *a, **kw: True)
@@ -218,29 +257,39 @@ class TestActivate(object):
         DataVolume = api.Volume(
             lv_name='data',
             lv_path='/dev/vg/data',
-            lv_tags="ceph.cluster_name=ceph,,ceph.block_uuid=000,ceph.type=block,ceph.osd_id=0,ceph.osd_fsid=1234")
+            lv_tags="ceph.cluster_name=ceph,,ceph.block_uuid=000," + \
+                    "ceph.type=block,ceph.osd_id=0,ceph.osd_fsid=1234")
+        volumes = []
         volumes.append(DataVolume)
-        monkeypatch.setattr(api, 'Volumes', lambda: volumes)
-        args = Args(osd_id=None, osd_fsid='1234', no_systemd=True, bluestore=True, auto_detect_objectstore=True)
+        monkeypatch.setattr(api, 'get_lvs', lambda **kwargs: deepcopy(volumes))
+
+        args = Args(osd_id=None, osd_fsid='1234', no_systemd=True,
+                    bluestore=True, auto_detect_objectstore=True)
         activate.Activate([]).activate(args)
         assert fake_enable.calls == []
         assert fake_start_osd.calls == []
 
-    def test_bluestore_systemd_autodetect(self, is_root, volumes, monkeypatch, capture):
+    def test_bluestore_systemd_autodetect(self, is_root, monkeypatch, capture):
         fake_enable = Capture()
         fake_start_osd = Capture()
-        monkeypatch.setattr('ceph_volume.util.system.path_is_mounted', lambda *a, **kw: True)
-        monkeypatch.setattr('ceph_volume.util.system.chown', lambda *a, **kw: True)
+        monkeypatch.setattr('ceph_volume.util.system.path_is_mounted',
+                            lambda *a, **kw: True)
+        monkeypatch.setattr('ceph_volume.util.system.chown', lambda *a, **kw:
+                            True)
         monkeypatch.setattr('ceph_volume.process.run', lambda *a, **kw: True)
         monkeypatch.setattr(activate.systemctl, 'enable_volume', fake_enable)
         monkeypatch.setattr(activate.systemctl, 'start_osd', fake_start_osd)
         DataVolume = api.Volume(
             lv_name='data',
             lv_path='/dev/vg/data',
-            lv_tags="ceph.cluster_name=ceph,,ceph.journal_uuid=000,ceph.type=block,ceph.osd_id=0,ceph.osd_fsid=1234")
+            lv_tags="ceph.cluster_name=ceph,,ceph.journal_uuid=000," + \
+                    "ceph.type=block,ceph.osd_id=0,ceph.osd_fsid=1234")
+        volumes = []
         volumes.append(DataVolume)
-        monkeypatch.setattr(api, 'Volumes', lambda: volumes)
-        args = Args(osd_id=None, osd_fsid='1234', no_systemd=False, bluestore=True, auto_detect_objectstore=False)
+        monkeypatch.setattr(api, 'get_lvs', lambda **kwargs: deepcopy(volumes))
+
+        args = Args(osd_id=None, osd_fsid='1234', no_systemd=False,
+                    bluestore=True, auto_detect_objectstore=False)
         activate.Activate([]).activate(args)
         assert fake_enable.calls != []
         assert fake_start_osd.calls != []