]> git.proxmox.com Git - ceph.git/blob - ceph/src/ceph-volume/ceph_volume/tests/devices/lvm/test_zap.py
update source to 12.2.11
[ceph.git] / ceph / src / ceph-volume / ceph_volume / tests / devices / lvm / test_zap.py
1 import pytest
2 from ceph_volume.api import lvm as api
3 from ceph_volume.devices.lvm import zap
4
5
6 class TestFindAssociatedDevices(object):
7
8 def test_no_lvs_found_that_match_id(self, volumes, monkeypatch, device_info):
9 monkeypatch.setattr(zap.api, 'Volumes', lambda: volumes)
10 tags = 'ceph.osd_id=9,ceph.journal_uuid=x,ceph.type=data'
11 osd = api.Volume(
12 lv_name='volume1', lv_uuid='y', lv_path='/dev/VolGroup/lv', vg_name='vg', lv_tags=tags)
13 volumes.append(osd)
14 with pytest.raises(RuntimeError):
15 zap.find_associated_devices(osd_id=10)
16
17 def test_no_lvs_found_that_match_fsid(self, volumes, monkeypatch, device_info):
18 monkeypatch.setattr(zap.api, 'Volumes', lambda: volumes)
19 tags = 'ceph.osd_id=9,ceph.osd_fsid=asdf-lkjh,ceph.journal_uuid=x,ceph.type=data'
20 osd = api.Volume(
21 lv_name='volume1', lv_uuid='y', lv_path='/dev/VolGroup/lv', vg_name='vg', lv_tags=tags)
22 volumes.append(osd)
23 with pytest.raises(RuntimeError):
24 zap.find_associated_devices(osd_fsid='aaaa-lkjh')
25
26 def test_no_lvs_found_that_match_id_fsid(self, volumes, monkeypatch, device_info):
27 monkeypatch.setattr(zap.api, 'Volumes', lambda: volumes)
28 tags = 'ceph.osd_id=9,ceph.osd_fsid=asdf-lkjh,ceph.journal_uuid=x,ceph.type=data'
29 osd = api.Volume(
30 lv_name='volume1', lv_uuid='y', lv_path='/dev/VolGroup/lv', vg_name='vg', lv_tags=tags)
31 volumes.append(osd)
32 with pytest.raises(RuntimeError):
33 zap.find_associated_devices(osd_id='9', osd_fsid='aaaa-lkjh')
34
35 def test_no_ceph_lvs_found(self, volumes, monkeypatch):
36 monkeypatch.setattr(zap.api, 'Volumes', lambda: volumes)
37 osd = api.Volume(
38 lv_name='volume1', lv_uuid='y', lv_path='/dev/VolGroup/lv', lv_tags='')
39 volumes.append(osd)
40 with pytest.raises(RuntimeError):
41 zap.find_associated_devices(osd_id=100)
42
43 def test_lv_is_matched_id(self, volumes, monkeypatch):
44 monkeypatch.setattr(zap.api, 'Volumes', lambda: volumes)
45 tags = 'ceph.osd_id=0,ceph.journal_uuid=x,ceph.type=data'
46 osd = api.Volume(
47 lv_name='volume1', lv_uuid='y', vg_name='', lv_path='/dev/VolGroup/lv', lv_tags=tags)
48 volumes.append(osd)
49 result = zap.find_associated_devices(osd_id='0')
50 assert result[0].abspath == '/dev/VolGroup/lv'
51
52 def test_lv_is_matched_fsid(self, volumes, monkeypatch):
53 monkeypatch.setattr(zap.api, 'Volumes', lambda: volumes)
54 tags = 'ceph.osd_id=0,ceph.osd_fsid=asdf-lkjh,ceph.journal_uuid=x,ceph.type=data'
55 osd = api.Volume(
56 lv_name='volume1', lv_uuid='y', vg_name='', lv_path='/dev/VolGroup/lv', lv_tags=tags)
57 volumes.append(osd)
58 result = zap.find_associated_devices(osd_fsid='asdf-lkjh')
59 assert result[0].abspath == '/dev/VolGroup/lv'
60
61 def test_lv_is_matched_id_fsid(self, volumes, monkeypatch):
62 monkeypatch.setattr(zap.api, 'Volumes', lambda: volumes)
63 tags = 'ceph.osd_id=0,ceph.osd_fsid=asdf-lkjh,ceph.journal_uuid=x,ceph.type=data'
64 osd = api.Volume(
65 lv_name='volume1', lv_uuid='y', vg_name='', lv_path='/dev/VolGroup/lv', lv_tags=tags)
66 volumes.append(osd)
67 result = zap.find_associated_devices(osd_id='0', osd_fsid='asdf-lkjh')
68 assert result[0].abspath == '/dev/VolGroup/lv'
69
70
71 class TestEnsureAssociatedLVs(object):
72
73 def test_nothing_is_found(self, volumes):
74 result = zap.ensure_associated_lvs(volumes)
75 assert result == []
76
77 def test_data_is_found(self, volumes):
78 tags = 'ceph.osd_id=0,ceph.osd_fsid=asdf-lkjh,ceph.journal_uuid=x,ceph.type=data'
79 osd = api.Volume(
80 lv_name='volume1', lv_uuid='y', vg_name='', lv_path='/dev/VolGroup/data', lv_tags=tags)
81 volumes.append(osd)
82 result = zap.ensure_associated_lvs(volumes)
83 assert result == ['/dev/VolGroup/data']
84
85 def test_block_is_found(self, volumes):
86 tags = 'ceph.osd_id=0,ceph.osd_fsid=asdf-lkjh,ceph.journal_uuid=x,ceph.type=block'
87 osd = api.Volume(
88 lv_name='volume1', lv_uuid='y', vg_name='', lv_path='/dev/VolGroup/block', lv_tags=tags)
89 volumes.append(osd)
90 result = zap.ensure_associated_lvs(volumes)
91 assert result == ['/dev/VolGroup/block']
92
93 def test_block_and_partition_are_found(self, volumes, monkeypatch):
94 monkeypatch.setattr(zap.disk, 'get_device_from_partuuid', lambda x: '/dev/sdb1')
95 tags = 'ceph.osd_id=0,ceph.osd_fsid=asdf-lkjh,ceph.journal_uuid=x,ceph.type=block'
96 osd = api.Volume(
97 lv_name='volume1', lv_uuid='y', vg_name='', lv_path='/dev/VolGroup/block', lv_tags=tags)
98 volumes.append(osd)
99 result = zap.ensure_associated_lvs(volumes)
100 assert '/dev/sdb1' in result
101 assert '/dev/VolGroup/block' in result
102
103 def test_journal_is_found(self, volumes):
104 tags = 'ceph.osd_id=0,ceph.osd_fsid=asdf-lkjh,ceph.journal_uuid=x,ceph.type=journal'
105 osd = api.Volume(
106 lv_name='volume1', lv_uuid='y', vg_name='', lv_path='/dev/VolGroup/lv', lv_tags=tags)
107 volumes.append(osd)
108 result = zap.ensure_associated_lvs(volumes)
109 assert result == ['/dev/VolGroup/lv']
110
111 def test_multiple_journals_are_found(self, volumes):
112 tags = 'ceph.osd_id=0,ceph.osd_fsid=asdf-lkjh,ceph.journal_uuid=x,ceph.type=journal'
113 for i in range(3):
114 osd = api.Volume(
115 lv_name='volume%s' % i, lv_uuid='y', vg_name='', lv_path='/dev/VolGroup/lv%s' % i, lv_tags=tags)
116 volumes.append(osd)
117 result = zap.ensure_associated_lvs(volumes)
118 assert '/dev/VolGroup/lv0' in result
119 assert '/dev/VolGroup/lv1' in result
120 assert '/dev/VolGroup/lv2' in result
121
122 def test_multiple_dbs_are_found(self, volumes):
123 tags = 'ceph.osd_id=0,ceph.osd_fsid=asdf-lkjh,ceph.journal_uuid=x,ceph.type=db'
124 for i in range(3):
125 osd = api.Volume(
126 lv_name='volume%s' % i, lv_uuid='y', vg_name='', lv_path='/dev/VolGroup/lv%s' % i, lv_tags=tags)
127 volumes.append(osd)
128 result = zap.ensure_associated_lvs(volumes)
129 assert '/dev/VolGroup/lv0' in result
130 assert '/dev/VolGroup/lv1' in result
131 assert '/dev/VolGroup/lv2' in result
132
133 def test_multiple_wals_are_found(self, volumes):
134 tags = 'ceph.osd_id=0,ceph.osd_fsid=asdf-lkjh,ceph.wal_uuid=x,ceph.type=wal'
135 for i in range(3):
136 osd = api.Volume(
137 lv_name='volume%s' % i, lv_uuid='y', vg_name='', lv_path='/dev/VolGroup/lv%s' % i, lv_tags=tags)
138 volumes.append(osd)
139 result = zap.ensure_associated_lvs(volumes)
140 assert '/dev/VolGroup/lv0' in result
141 assert '/dev/VolGroup/lv1' in result
142 assert '/dev/VolGroup/lv2' in result
143
144 def test_multiple_backing_devs_are_found(self, volumes):
145 for _type in ['journal', 'db', 'wal']:
146 tags = 'ceph.osd_id=0,ceph.osd_fsid=asdf-lkjh,ceph.wal_uuid=x,ceph.type=%s' % _type
147 osd = api.Volume(
148 lv_name='volume%s' % _type, lv_uuid='y', vg_name='', lv_path='/dev/VolGroup/lv%s' % _type, lv_tags=tags)
149 volumes.append(osd)
150 result = zap.ensure_associated_lvs(volumes)
151 assert '/dev/VolGroup/lvjournal' in result
152 assert '/dev/VolGroup/lvwal' in result
153 assert '/dev/VolGroup/lvdb' in result