def test_filestore_systemd(self, is_root, volumes, monkeypatch, capture): fake_enable = Capture() fake_start_osd = Capture() monkeypatch.setattr('ceph_volume.util.system.device_is_mounted', lambda *a, **kw: True) monkeypatch.setattr('ceph_volume.util.system.chown', lambda *a, **kw: True) monkeypatch.setattr('ceph_volume.process.run', lambda *a, **kw: True) monkeypatch.setattr(activate.systemctl, 'enable_volume', fake_enable) monkeypatch.setattr(activate.systemctl, 'start_osd', fake_start_osd) JournalVolume = api.Volume( lv_name='journal', lv_path='/dev/vg/journal', lv_uuid='000', lv_tags=','.join([ "ceph.cluster_name=ceph", "ceph.journal_device=/dev/vg/journal", "ceph.journal_uuid=000", "ceph.type=journal", "ceph.osd_id=0","ceph.osd_fsid=1234"]) ) DataVolume = api.Volume( lv_name='data', lv_path='/dev/vg/data', lv_tags="ceph.cluster_name=ceph,ceph.journal_device=/dev/vg/journal,ceph.journal_uuid=000,ceph.type=data,ceph.osd_id=0,ceph.osd_fsid=1234") volumes.append(DataVolume) volumes.append(JournalVolume) monkeypatch.setattr(api, 'Volumes', lambda: volumes) args = Args(osd_id=None, osd_fsid='1234', no_systemd=False, filestore=True) activate.Activate([]).activate(args) assert fake_enable.calls != [] assert fake_start_osd.calls != []
def test_bluestore_systemd_autodetect(self, is_root, volumes, monkeypatch, capture): fake_enable = Capture() fake_start_osd = Capture() monkeypatch.setattr('ceph_volume.util.system.path_is_mounted', lambda *a, **kw: True) monkeypatch.setattr('ceph_volume.util.system.chown', lambda *a, **kw: True) monkeypatch.setattr('ceph_volume.process.run', lambda *a, **kw: True) monkeypatch.setattr(activate.systemctl, 'enable_volume', fake_enable) monkeypatch.setattr(activate.systemctl, 'start_osd', fake_start_osd) DataVolume = api.Volume( lv_name='data', lv_path='/dev/vg/data', lv_tags= "ceph.cluster_name=ceph,,ceph.journal_uuid=000,ceph.type=block,ceph.osd_id=0,ceph.osd_fsid=1234" ) volumes.append(DataVolume) monkeypatch.setattr(api, 'Volumes', lambda: volumes) args = Args(osd_id=None, osd_fsid='1234', no_systemd=False, bluestore=True, auto_detect_objectstore=False) activate.Activate([]).activate(args) assert fake_enable.calls != [] assert fake_start_osd.calls != []
def test_filestore_no_systemd_autodetect(self, is_root, monkeypatch, capture): monkeypatch.setattr('ceph_volume.configuration.load', lambda: None) fake_enable = Capture() fake_start_osd = Capture() monkeypatch.setattr('ceph_volume.util.system.device_is_mounted', lambda *a, **kw: True) monkeypatch.setattr('ceph_volume.util.system.chown', lambda *a, **kw: True) monkeypatch.setattr('ceph_volume.process.run', lambda *a, **kw: True) monkeypatch.setattr(activate.systemctl, 'enable_volume', fake_enable) monkeypatch.setattr(activate.systemctl, 'start_osd', fake_start_osd) JournalVolume = api.Volume( lv_name='journal', lv_path='/dev/vg/journal', lv_uuid='000', lv_tags=','.join([ "ceph.cluster_name=ceph", "ceph.journal_device=/dev/vg/journal", "ceph.journal_uuid=000", "ceph.type=journal", "ceph.osd_id=0", "ceph.osd_fsid=1234"]) ) DataVolume = api.Volume( lv_name='data', lv_path='/dev/vg/data', lv_uuid='001', lv_tags="ceph.cluster_name=ceph,ceph.journal_device=/dev/vg/" + \ "journal,ceph.journal_uuid=000,ceph.type=data," + \ "ceph.osd_id=0,ceph.osd_fsid=1234") volumes = [] volumes.append(DataVolume) volumes.append(JournalVolume) monkeypatch.setattr(api, 'get_lvs', lambda **kwargs: deepcopy(volumes)) args = Args(osd_id=None, osd_fsid='1234', no_systemd=True, filestore=True, auto_detect_objectstore=True) activate.Activate([]).activate(args) assert fake_enable.calls == [] assert fake_start_osd.calls == []
def test_bluestore_no_systemd(self, is_root, monkeypatch, capture): monkeypatch.setattr('ceph_volume.configuration.load', lambda: None) fake_enable = Capture() fake_start_osd = Capture() monkeypatch.setattr('ceph_volume.util.system.path_is_mounted', lambda *a, **kw: True) monkeypatch.setattr('ceph_volume.util.system.chown', lambda *a, **kw: True) monkeypatch.setattr('ceph_volume.process.run', lambda *a, **kw: True) monkeypatch.setattr(activate.systemctl, 'enable_volume', fake_enable) monkeypatch.setattr(activate.systemctl, 'start_osd', fake_start_osd) DataVolume = api.Volume( lv_name='data', lv_path='/dev/vg/data', lv_tags="ceph.cluster_name=ceph,,ceph.journal_uuid=000," + \ "ceph.type=block,ceph.osd_id=0,ceph.osd_fsid=1234") volumes = [] volumes.append(DataVolume) monkeypatch.setattr(api, 'get_lvs', lambda **kwargs: deepcopy(volumes)) args = Args(osd_id=None, osd_fsid='1234', no_systemd=True, bluestore=True) activate.Activate([]).activate(args) assert fake_enable.calls == [] assert fake_start_osd.calls == []
def test_no_osd_id_no_matching_fsid(self, is_root, volumes, monkeypatch, capture): FooVolume = api.Volume(lv_name='foo', lv_path='/dev/vg/foo', lv_tags="ceph.osd_fsid=11234") volumes.append(FooVolume) monkeypatch.setattr(api, 'Volumes', lambda: volumes) monkeypatch.setattr(activate, 'activate_filestore', capture) args = Args(osd_id=None, osd_fsid='1234') with pytest.raises(RuntimeError): activate.Activate([]).activate(args)
def test_no_osd_id_matches_fsid_bluestore(self, is_root, volumes, monkeypatch, capture): FooVolume = api.Volume(lv_name='foo', lv_path='/dev/vg/foo', lv_tags="ceph.osd_fsid=1234") volumes.append(FooVolume) monkeypatch.setattr(api, 'Volumes', lambda: volumes) monkeypatch.setattr(activate, 'activate_bluestore', capture) args = Args(osd_id=None, osd_fsid='1234', bluestore=True) activate.Activate([]).activate(args) assert capture.calls[0]['args'][0] == [FooVolume]
def test_does_not_detect_osds(self, capsys, is_root, capture, monkeypatch): monkeypatch.setattr('ceph_volume.devices.lvm.activate.direct_report', lambda: {}) args = ['--all'] activation = activate.Activate(args) activation.main() out, err = capsys.readouterr() assert 'Was unable to find any OSDs to activate' in out assert 'Verify OSDs are present with ' in out
def test_uses_bluestore(self, capture): args = ['--bluestore', '0', 'asdf-ljh-asdf'] activation = activate.Activate(args) activation.activate = capture activation.main() parsed_args = capture.calls[0]['args'][0] assert parsed_args.filestore is False assert parsed_args.bluestore is True
def test_detects_running_osds(self, capsys, is_root, capture, monkeypatch): monkeypatch.setattr('ceph_volume.devices.lvm.activate.direct_report', lambda: direct_report) monkeypatch.setattr('ceph_volume.devices.lvm.activate.systemctl.osd_is_active', lambda x: True) args = ['--all'] activation = activate.Activate(args) activation.main() out, err = capsys.readouterr() assert 'a8789a96ce8b process is active. Skipping activation' in out assert 'b8218eaa1634 process is active. Skipping activation' in out
def test_detects_osds_to_activate_no_systemd(self, is_root, capture, monkeypatch): monkeypatch.setattr('ceph_volume.devices.lvm.activate.direct_report', lambda: direct_report) args = ['--all', '--no-systemd'] activation = activate.Activate(args) activation.activate = capture activation.main() calls = sorted(capture.calls, key=lambda x: x['kwargs']['osd_id']) assert calls[0]['kwargs']['osd_id'] == '0' assert calls[0]['kwargs']['osd_fsid'] == '957d22b7-24ce-466a-9883-b8218eaa1634' assert calls[1]['kwargs']['osd_id'] == '1' assert calls[1]['kwargs']['osd_fsid'] == 'd0f3e4ad-e52a-4520-afc0-a8789a96ce8b'
def test_no_osd_id_no_osd_fsid(self, is_root): args = Args(osd_id=None, osd_fsid=None) with pytest.raises(RuntimeError) as result: activate.Activate([]).activate(args) assert result.value.args[0] == 'Please provide both osd_id and osd_fsid'
def test_osd_id_no_osd_fsid(self, is_root): args = Args(osd_id=42, osd_fsid=None) with pytest.raises(RuntimeError) as result: activate.Activate([]).activate(args) assert result.value.args[0] == 'could not activate osd.42, please provide the osd_fsid too'