+++ /dev/null
-import pytest
-from ceph_volume.devices import lvm
-from ceph_volume.api import lvm as api
-
-
-class TestReadableTag(object):
-
- def test_dots_get_replaced(self):
- result = lvm.listing.readable_tag('ceph.foo')
- assert result == 'foo'
-
- def test_underscores_are_replaced_with_spaces(self):
- result = lvm.listing.readable_tag('ceph.long_tag')
- assert result == 'long tag'
-
-
-class TestPrettyReport(object):
-
- def test_is_empty(self, capsys):
- lvm.listing.pretty_report({})
- stdout, stderr = capsys.readouterr()
- assert stdout == '\n'
-
- def test_type_and_path_are_reported(self, capsys):
- lvm.listing.pretty_report({0: [{'type': 'data', 'path': '/dev/sda1'}]})
- stdout, stderr = capsys.readouterr()
- assert '[data] /dev/sda1' in stdout
-
- def test_osd_id_header_is_reported(self, capsys):
- lvm.listing.pretty_report({0: [{'type': 'data', 'path': '/dev/sda1'}]})
- stdout, stderr = capsys.readouterr()
- assert '====== osd.0 =======' in stdout
-
- def test_tags_are_included(self, capsys):
- lvm.listing.pretty_report(
- {0: [{
- 'type': 'data',
- 'path': '/dev/sda1',
- 'tags': {'ceph.osd_id': '0'}
- }]}
- )
- stdout, stderr = capsys.readouterr()
- assert 'osd id' in stdout
-
-
-class TestList(object):
-
- def test_empty_full_json_zero_exit_status(self, is_root, volumes, factory, capsys):
- args = factory(format='json', device=None)
- lvm.listing.List([]).list(args)
- stdout, stderr = capsys.readouterr()
- assert stdout == '{}\n'
-
- def test_empty_device_json_zero_exit_status(self, is_root, volumes, factory, capsys):
- args = factory(format='json', device='/dev/sda1')
- lvm.listing.List([]).list(args)
- stdout, stderr = capsys.readouterr()
- assert stdout == '{}\n'
-
- def test_empty_full_zero_exit_status(self, is_root, volumes, factory):
- args = factory(format='pretty', device=None)
- with pytest.raises(SystemExit):
- lvm.listing.List([]).list(args)
-
- def test_empty_device_zero_exit_status(self, is_root, volumes, factory):
- args = factory(format='pretty', device='/dev/sda1')
- with pytest.raises(SystemExit):
- lvm.listing.List([]).list(args)
-
-
-class TestFullReport(object):
-
- def test_no_ceph_lvs(self, volumes, monkeypatch):
- # ceph lvs are detected by looking into its tags
- osd = api.Volume(lv_name='volume1', lv_path='/dev/VolGroup/lv', lv_tags={})
- volumes.append(osd)
- monkeypatch.setattr(lvm.listing.api, 'Volumes', lambda: volumes)
- result = lvm.listing.List([]).full_report()
- assert result == {}
-
- def test_ceph_data_lv_reported(self, volumes, monkeypatch):
- tags = 'ceph.osd_id=0,ceph.journal_uuid=x,ceph.type=data'
- osd = api.Volume(
- lv_name='volume1', lv_uuid='y', lv_path='/dev/VolGroup/lv', lv_tags=tags)
- volumes.append(osd)
- monkeypatch.setattr(lvm.listing.api, 'Volumes', lambda: volumes)
- result = lvm.listing.List([]).full_report()
- assert result['0'][0]['name'] == 'volume1'
-
- def test_ceph_journal_lv_reported(self, volumes, monkeypatch):
- tags = 'ceph.osd_id=0,ceph.journal_uuid=x,ceph.type=data'
- journal_tags = 'ceph.osd_id=0,ceph.journal_uuid=x,ceph.type=journal'
- osd = api.Volume(
- lv_name='volume1', lv_uuid='y', lv_path='/dev/VolGroup/lv', lv_tags=tags)
- journal = api.Volume(
- lv_name='journal', lv_uuid='x', lv_path='/dev/VolGroup/journal', lv_tags=journal_tags)
- volumes.append(osd)
- volumes.append(journal)
- monkeypatch.setattr(lvm.listing.api, 'Volumes', lambda: volumes)
- result = lvm.listing.List([]).full_report()
- assert result['0'][0]['name'] == 'volume1'
- assert result['0'][1]['name'] == 'journal'
-
- def test_ceph_wal_lv_reported(self, volumes, monkeypatch):
- tags = 'ceph.osd_id=0,ceph.wal_uuid=x,ceph.type=data'
- wal_tags = 'ceph.osd_id=0,ceph.wal_uuid=x,ceph.type=wal'
- osd = api.Volume(
- lv_name='volume1', lv_uuid='y', lv_path='/dev/VolGroup/lv', lv_tags=tags)
- wal = api.Volume(
- lv_name='wal', lv_uuid='x', lv_path='/dev/VolGroup/wal', lv_tags=wal_tags)
- volumes.append(osd)
- volumes.append(wal)
- monkeypatch.setattr(lvm.listing.api, 'Volumes', lambda: volumes)
- result = lvm.listing.List([]).full_report()
- assert result['0'][0]['name'] == 'volume1'
- assert result['0'][1]['name'] == 'wal'
-
- def test_physical_journal_gets_reported(self, volumes, monkeypatch):
- tags = 'ceph.osd_id=0,ceph.journal_uuid=x,ceph.type=data'
- osd = api.Volume(
- lv_name='volume1', lv_uuid='y', lv_path='/dev/VolGroup/lv', lv_tags=tags)
- volumes.append(osd)
- monkeypatch.setattr(lvm.listing.api, 'Volumes', lambda: volumes)
- monkeypatch.setattr(lvm.listing.disk, 'get_device_from_partuuid', lambda x: '/dev/sda1')
- result = lvm.listing.List([]).full_report()
- assert result['0'][1]['path'] == '/dev/sda1'
- assert result['0'][1]['tags'] == {'PARTUUID': 'x'}
- assert result['0'][1]['type'] == 'journal'
-
- def test_physical_wal_gets_reported(self, volumes, monkeypatch):
- tags = 'ceph.osd_id=0,ceph.wal_uuid=x,ceph.type=data'
- osd = api.Volume(
- lv_name='volume1', lv_uuid='y', lv_path='/dev/VolGroup/lv', lv_tags=tags)
- volumes.append(osd)
- monkeypatch.setattr(lvm.listing.api, 'Volumes', lambda: volumes)
- monkeypatch.setattr(lvm.listing.disk, 'get_device_from_partuuid', lambda x: '/dev/sda1')
- result = lvm.listing.List([]).full_report()
- assert result['0'][1]['path'] == '/dev/sda1'
- assert result['0'][1]['tags'] == {'PARTUUID': 'x'}
- assert result['0'][1]['type'] == 'wal'
-
-
-class TestSingleReport(object):
-
- def test_not_a_ceph_lv(self, volumes, monkeypatch):
- # ceph lvs are detected by looking into its tags
- lv = api.Volume(
- lv_name='lv', vg_name='VolGroup', lv_path='/dev/VolGroup/lv', lv_tags={})
- volumes.append(lv)
- monkeypatch.setattr(lvm.listing.api, 'Volumes', lambda: volumes)
- result = lvm.listing.List([]).single_report('VolGroup/lv')
- assert result == {}
-
- def test_report_a_ceph_lv(self, volumes, monkeypatch):
- # ceph lvs are detected by looking into its tags
- tags = 'ceph.osd_id=0,ceph.journal_uuid=x,ceph.type=data'
- lv = api.Volume(
- lv_name='lv', vg_name='VolGroup', lv_path='/dev/VolGroup/lv', lv_tags=tags)
- volumes.append(lv)
- monkeypatch.setattr(lvm.listing.api, 'Volumes', lambda: volumes)
- result = lvm.listing.List([]).single_report('VolGroup/lv')
- assert result['0'][0]['name'] == 'lv'
- assert result['0'][0]['lv_tags'] == tags
- assert result['0'][0]['path'] == '/dev/VolGroup/lv'
-
- def test_report_a_ceph_journal_device(self, volumes, monkeypatch):
- # ceph lvs are detected by looking into its tags
- tags = 'ceph.osd_id=0,ceph.journal_uuid=x,ceph.type=data,ceph.journal_device=/dev/sda1'
- lv = api.Volume(
- lv_name='lv', vg_name='VolGroup', lv_path='/dev/VolGroup/lv', lv_tags=tags)
- volumes.append(lv)
- monkeypatch.setattr(lvm.listing.api, 'Volumes', lambda: volumes)
- result = lvm.listing.List([]).single_report('/dev/sda1')
- assert result['0'][0]['tags'] == {'PARTUUID': 'x'}
- assert result['0'][0]['type'] == 'journal'
- assert result['0'][0]['path'] == '/dev/sda1'