]> git.proxmox.com Git - ceph.git/blob - ceph/src/ceph-volume/ceph_volume/tests/devices/lvm/test_prepare.py
update sources to v12.2.4
[ceph.git] / ceph / src / ceph-volume / ceph_volume / tests / devices / lvm / test_prepare.py
1 import pytest
2 from ceph_volume.devices import lvm
3
4
5 class TestLVM(object):
6
7 def test_main_spits_help_with_no_arguments(self, capsys):
8 lvm.main.LVM([]).main()
9 stdout, stderr = capsys.readouterr()
10 assert 'Use LVM and LVM-based technologies like dmcache to deploy' in stdout
11
12 def test_main_shows_activate_subcommands(self, capsys):
13 lvm.main.LVM([]).main()
14 stdout, stderr = capsys.readouterr()
15 assert 'activate ' in stdout
16 assert 'Discover and mount' in stdout
17
18 def test_main_shows_prepare_subcommands(self, capsys):
19 lvm.main.LVM([]).main()
20 stdout, stderr = capsys.readouterr()
21 assert 'prepare ' in stdout
22 assert 'Format an LVM device' in stdout
23
24
25 class TestPrepareDevice(object):
26
27 def test_cannot_use_device(self):
28 with pytest.raises(RuntimeError) as error:
29 lvm.prepare.Prepare([]).prepare_device(
30 '/dev/var/foo', 'data', 'asdf', '0')
31 assert 'Cannot use device (/dev/var/foo)' in str(error)
32 assert 'A vg/lv path or an existing device is needed' in str(error)
33
34
35 class TestPrepare(object):
36
37 def test_main_spits_help_with_no_arguments(self, capsys):
38 lvm.prepare.Prepare([]).main()
39 stdout, stderr = capsys.readouterr()
40 assert 'Prepare an OSD by assigning an ID and FSID' in stdout
41
42 def test_main_shows_full_help(self, capsys):
43 with pytest.raises(SystemExit):
44 lvm.prepare.Prepare(argv=['--help']).main()
45 stdout, stderr = capsys.readouterr()
46 assert 'Use the filestore objectstore' in stdout
47 assert 'Use the bluestore objectstore' in stdout
48 assert 'A physical device or logical' in stdout
49
50 def test_excludes_filestore_bluestore_flags(self, capsys):
51 with pytest.raises(SystemExit):
52 lvm.prepare.Prepare(argv=['--data', '/dev/sdfoo', '--filestore', '--bluestore']).main()
53 stdout, stderr = capsys.readouterr()
54 expected = 'Cannot use --filestore (filestore) with --bluestore (bluestore)'
55 assert expected in stdout
56
57 def test_excludes_other_filestore_bluestore_flags(self, capsys):
58 with pytest.raises(SystemExit):
59 lvm.prepare.Prepare(argv=[
60 '--bluestore', '--data', '/dev/sdfoo',
61 '--journal', '/dev/sf14',
62 ]).main()
63 stdout, stderr = capsys.readouterr()
64 expected = 'Cannot use --bluestore (bluestore) with --journal (filestore)'
65 assert expected in stdout
66
67 def test_excludes_block_and_journal_flags(self, capsys):
68 with pytest.raises(SystemExit):
69 lvm.prepare.Prepare(argv=[
70 '--bluestore', '--data', '/dev/sdfoo', '--block.db', 'vg/ceph1',
71 '--journal', '/dev/sf14',
72 ]).main()
73 stdout, stderr = capsys.readouterr()
74 expected = 'Cannot use --block.db (bluestore) with --journal (filestore)'
75 assert expected in stdout
76
77
78 class TestGetJournalLV(object):
79
80 @pytest.mark.parametrize('arg', ['', '///', None, '/dev/sda1'])
81 def test_no_journal_on_invalid_path(self, monkeypatch, arg):
82 monkeypatch.setattr(lvm.prepare.api, 'get_lv', lambda **kw: False)
83 prepare = lvm.prepare.Prepare([])
84 assert prepare.get_lv(arg) is None
85
86 def test_no_journal_lv_found(self, monkeypatch):
87 # patch it with 0 so we know we are getting to get_lv
88 monkeypatch.setattr(lvm.prepare.api, 'get_lv', lambda **kw: 0)
89 prepare = lvm.prepare.Prepare([])
90 assert prepare.get_lv('vg/lv') == 0
91
92
93 class TestActivate(object):
94
95 def test_main_spits_help_with_no_arguments(self, capsys):
96 lvm.activate.Activate([]).main()
97 stdout, stderr = capsys.readouterr()
98 assert 'Activate OSDs by discovering them with' in stdout
99
100 def test_main_shows_full_help(self, capsys):
101 with pytest.raises(SystemExit):
102 lvm.activate.Activate(argv=['--help']).main()
103 stdout, stderr = capsys.readouterr()
104 assert 'optional arguments' in stdout
105 assert 'positional arguments' in stdout