]>
Commit | Line | Data |
---|---|---|
f64942e4 AA |
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 |