]>
git.proxmox.com Git - ceph.git/blob - ceph/src/ceph-volume/ceph_volume/tests/devices/lvm/test_prepare.py
2 from ceph_volume
.devices
import lvm
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
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
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
25 class TestPrepareDevice(object):
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
)
35 class TestGetClusterFsid(object):
37 def test_fsid_is_passed_in(self
, factory
):
38 args
= factory(cluster_fsid
='aaaa-1111')
39 prepare_obj
= lvm
.prepare
.Prepare([])
40 prepare_obj
.args
= args
41 assert prepare_obj
.get_cluster_fsid() == 'aaaa-1111'
43 def test_fsid_is_read_from_ceph_conf(self
, factory
, conf_ceph_stub
):
44 conf_ceph_stub('[global]\nfsid = bbbb-2222')
45 prepare_obj
= lvm
.prepare
.Prepare([])
46 prepare_obj
.args
= factory(cluster_fsid
=None)
47 assert prepare_obj
.get_cluster_fsid() == 'bbbb-2222'
50 class TestPrepare(object):
52 def test_main_spits_help_with_no_arguments(self
, capsys
):
53 lvm
.prepare
.Prepare([]).main()
54 stdout
, stderr
= capsys
.readouterr()
55 assert 'Prepare an OSD by assigning an ID and FSID' in stdout
57 def test_main_shows_full_help(self
, capsys
):
58 with pytest
.raises(SystemExit):
59 lvm
.prepare
.Prepare(argv
=['--help']).main()
60 stdout
, stderr
= capsys
.readouterr()
61 assert 'Use the filestore objectstore' in stdout
62 assert 'Use the bluestore objectstore' in stdout
63 assert 'A physical device or logical' in stdout
65 def test_excludes_filestore_bluestore_flags(self
, capsys
, device_info
):
67 with pytest
.raises(SystemExit):
68 lvm
.prepare
.Prepare(argv
=['--data', '/dev/sdfoo', '--filestore', '--bluestore']).main()
69 stdout
, stderr
= capsys
.readouterr()
70 expected
= 'Cannot use --filestore (filestore) with --bluestore (bluestore)'
71 assert expected
in stdout
73 def test_excludes_other_filestore_bluestore_flags(self
, capsys
, device_info
):
75 with pytest
.raises(SystemExit):
76 lvm
.prepare
.Prepare(argv
=[
77 '--bluestore', '--data', '/dev/sdfoo',
78 '--journal', '/dev/sf14',
80 stdout
, stderr
= capsys
.readouterr()
81 expected
= 'Cannot use --bluestore (bluestore) with --journal (filestore)'
82 assert expected
in stdout
84 def test_excludes_block_and_journal_flags(self
, capsys
, device_info
):
86 with pytest
.raises(SystemExit):
87 lvm
.prepare
.Prepare(argv
=[
88 '--bluestore', '--data', '/dev/sdfoo', '--block.db', 'vg/ceph1',
89 '--journal', '/dev/sf14',
91 stdout
, stderr
= capsys
.readouterr()
92 expected
= 'Cannot use --block.db (bluestore) with --journal (filestore)'
93 assert expected
in stdout
95 def test_journal_is_required_with_filestore(self
, is_root
, monkeypatch
, device_info
):
96 monkeypatch
.setattr("os.path.exists", lambda path
: True)
98 with pytest
.raises(SystemExit) as error
:
99 lvm
.prepare
.Prepare(argv
=['--filestore', '--data', '/dev/sdfoo']).main()
100 expected
= '--journal is required when using --filestore'
101 assert expected
in str(error
)
104 class TestGetJournalLV(object):
106 @pytest.mark
.parametrize('arg', ['', '///', None, '/dev/sda1'])
107 def test_no_journal_on_invalid_path(self
, monkeypatch
, arg
):
108 monkeypatch
.setattr(lvm
.prepare
.api
, 'get_lv', lambda **kw
: False)
109 prepare
= lvm
.prepare
.Prepare([])
110 assert prepare
.get_lv(arg
) is None
112 def test_no_journal_lv_found(self
, monkeypatch
):
113 # patch it with 0 so we know we are getting to get_lv
114 monkeypatch
.setattr(lvm
.prepare
.api
, 'get_lv', lambda **kw
: 0)
115 prepare
= lvm
.prepare
.Prepare([])
116 assert prepare
.get_lv('vg/lv') == 0
119 class TestActivate(object):
121 def test_main_spits_help_with_no_arguments(self
, capsys
):
122 lvm
.activate
.Activate([]).main()
123 stdout
, stderr
= capsys
.readouterr()
124 assert 'Activate OSDs by discovering them with' in stdout
126 def test_main_shows_full_help(self
, capsys
):
127 with pytest
.raises(SystemExit):
128 lvm
.activate
.Activate(argv
=['--help']).main()
129 stdout
, stderr
= capsys
.readouterr()
130 assert 'optional arguments' in stdout
131 assert 'positional arguments' in stdout