]>
git.proxmox.com Git - ceph.git/blob - ceph/src/ceph-volume/ceph_volume/tests/devices/lvm/test_zap.py
2 from ceph_volume
.api
import lvm
as api
3 from ceph_volume
.devices
.lvm
import zap
6 class TestFindAssociatedDevices(object):
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'
12 lv_name
='volume1', lv_uuid
='y', lv_path
='/dev/VolGroup/lv', vg_name
='vg', lv_tags
=tags
)
14 with pytest
.raises(RuntimeError):
15 zap
.find_associated_devices(osd_id
=10)
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'
21 lv_name
='volume1', lv_uuid
='y', lv_path
='/dev/VolGroup/lv', vg_name
='vg', lv_tags
=tags
)
23 with pytest
.raises(RuntimeError):
24 zap
.find_associated_devices(osd_fsid
='aaaa-lkjh')
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'
30 lv_name
='volume1', lv_uuid
='y', lv_path
='/dev/VolGroup/lv', vg_name
='vg', lv_tags
=tags
)
32 with pytest
.raises(RuntimeError):
33 zap
.find_associated_devices(osd_id
='9', osd_fsid
='aaaa-lkjh')
35 def test_no_ceph_lvs_found(self
, volumes
, monkeypatch
):
36 monkeypatch
.setattr(zap
.api
, 'Volumes', lambda: volumes
)
38 lv_name
='volume1', lv_uuid
='y', lv_path
='/dev/VolGroup/lv', lv_tags
='')
40 with pytest
.raises(RuntimeError):
41 zap
.find_associated_devices(osd_id
=100)
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'
47 lv_name
='volume1', lv_uuid
='y', vg_name
='', lv_path
='/dev/VolGroup/lv', lv_tags
=tags
)
49 result
= zap
.find_associated_devices(osd_id
='0')
50 assert result
[0].abspath
== '/dev/VolGroup/lv'
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'
56 lv_name
='volume1', lv_uuid
='y', vg_name
='', lv_path
='/dev/VolGroup/lv', lv_tags
=tags
)
58 result
= zap
.find_associated_devices(osd_fsid
='asdf-lkjh')
59 assert result
[0].abspath
== '/dev/VolGroup/lv'
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'
65 lv_name
='volume1', lv_uuid
='y', vg_name
='', lv_path
='/dev/VolGroup/lv', lv_tags
=tags
)
67 result
= zap
.find_associated_devices(osd_id
='0', osd_fsid
='asdf-lkjh')
68 assert result
[0].abspath
== '/dev/VolGroup/lv'
71 class TestEnsureAssociatedLVs(object):
73 def test_nothing_is_found(self
, volumes
):
74 result
= zap
.ensure_associated_lvs(volumes
)
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'
80 lv_name
='volume1', lv_uuid
='y', vg_name
='', lv_path
='/dev/VolGroup/data', lv_tags
=tags
)
82 result
= zap
.ensure_associated_lvs(volumes
)
83 assert result
== ['/dev/VolGroup/data']
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'
88 lv_name
='volume1', lv_uuid
='y', vg_name
='', lv_path
='/dev/VolGroup/block', lv_tags
=tags
)
90 result
= zap
.ensure_associated_lvs(volumes
)
91 assert result
== ['/dev/VolGroup/block']
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'
97 lv_name
='volume1', lv_uuid
='y', vg_name
='', lv_path
='/dev/VolGroup/block', lv_tags
=tags
)
99 result
= zap
.ensure_associated_lvs(volumes
)
100 assert '/dev/sdb1' in result
101 assert '/dev/VolGroup/block' in result
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'
106 lv_name
='volume1', lv_uuid
='y', vg_name
='', lv_path
='/dev/VolGroup/lv', lv_tags
=tags
)
108 result
= zap
.ensure_associated_lvs(volumes
)
109 assert result
== ['/dev/VolGroup/lv']
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'
115 lv_name
='volume%s' % i
, lv_uuid
='y', vg_name
='', lv_path
='/dev/VolGroup/lv%s' % i
, lv_tags
=tags
)
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
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'
126 lv_name
='volume%s' % i
, lv_uuid
='y', vg_name
='', lv_path
='/dev/VolGroup/lv%s' % i
, lv_tags
=tags
)
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
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'
137 lv_name
='volume%s' % i
, lv_uuid
='y', vg_name
='', lv_path
='/dev/VolGroup/lv%s' % i
, lv_tags
=tags
)
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
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
148 lv_name
='volume%s' % _type
, lv_uuid
='y', vg_name
='', lv_path
='/dev/VolGroup/lv%s' % _type
, lv_tags
=tags
)
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