assert stdout == '\n'
def test_type_and_path_are_reported(self, capsys):
- lvm.listing.pretty_report({0: [{'type': 'data', 'path': '/dev/sda1'}]})
+ lvm.listing.pretty_report({0: [
+ {'type': 'data', 'path': '/dev/sda1', 'devices': ['/dev/sda']}
+ ]})
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'}]})
+ lvm.listing.pretty_report({0: [
+ {'type': 'data', 'path': '/dev/sda1', 'devices': ['/dev/sda']}
+ ]})
stdout, stderr = capsys.readouterr()
assert '====== osd.0 =======' in stdout
{0: [{
'type': 'data',
'path': '/dev/sda1',
- 'tags': {'ceph.osd_id': '0'}
+ 'tags': {'ceph.osd_id': '0'},
+ 'devices': ['/dev/sda'],
}]}
)
stdout, stderr = capsys.readouterr()
assert 'osd id' in stdout
+ def test_devices_are_comma_separated(self, capsys):
+ lvm.listing.pretty_report({0: [
+ {'type': 'data', 'path': '/dev/sda1', 'devices': ['/dev/sda', '/dev/sdb1']}
+ ]})
+ stdout, stderr = capsys.readouterr()
+ assert '/dev/sda,/dev/sdb1' in stdout
+
class TestList(object):
# 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)
+ lv_name='lv', vg_name='VolGroup',
+ lv_uuid='aaaa', 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'
+ assert result['0'][0]['devices'] == []
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)
+ lv_name='lv', vg_name='VolGroup', lv_path='/dev/VolGroup/lv',
+ lv_uuid='aaa', 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'
+
+ def test_report_a_ceph_lv_with_devices(self, volumes, monkeypatch):
+ tags = 'ceph.osd_id=0,ceph.journal_uuid=x,ceph.type=data'
+ lv = api.Volume(
+ lv_name='lv', vg_name='VolGroup',
+ lv_uuid='aaaa', lv_path='/dev/VolGroup/lv', lv_tags=tags
+ )
+ volumes.append(lv)
+ monkeypatch.setattr(lvm.listing.api, 'Volumes', lambda: volumes)
+ listing = lvm.listing.List([])
+ listing._pvs = [
+ {'lv_uuid': 'aaaa', 'pv_name': '/dev/sda1', 'pv_tags': '', 'pv_uuid': ''},
+ {'lv_uuid': 'aaaa', 'pv_name': '/dev/sdb1', 'pv_tags': '', 'pv_uuid': ''},
+ ]
+ result = listing.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'
+ assert result['0'][0]['devices'] == ['/dev/sda1', '/dev/sdb1']
+
+ def test_report_a_ceph_lv_with_no_matching_devices(self, volumes, monkeypatch):
+ tags = 'ceph.osd_id=0,ceph.journal_uuid=x,ceph.type=data'
+ lv = api.Volume(
+ lv_name='lv', vg_name='VolGroup',
+ lv_uuid='aaaa', lv_path='/dev/VolGroup/lv', lv_tags=tags
+ )
+ volumes.append(lv)
+ monkeypatch.setattr(lvm.listing.api, 'Volumes', lambda: volumes)
+ listing = lvm.listing.List([])
+ listing._pvs = [
+ {'lv_uuid': 'ffff', 'pv_name': '/dev/sda1', 'pv_tags': '', 'pv_uuid': ''},
+ {'lv_uuid': 'ffff', 'pv_name': '/dev/sdb1', 'pv_tags': '', 'pv_uuid': ''},
+ ]
+ result = listing.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'
+ assert result['0'][0]['devices'] == []
+
+
+class TestListingPVs(object):
+
+ def setup(self):
+ self.default_pvs = [
+ {'lv_uuid': 'ffff', 'pv_name': '/dev/sda1', 'pv_tags': '', 'pv_uuid': ''},
+ {'lv_uuid': 'ffff', 'pv_name': '/dev/sdb1', 'pv_tags': '', 'pv_uuid': ''},
+ ]
+
+ def test_pvs_is_unset(self, monkeypatch):
+ monkeypatch.setattr(lvm.listing.api, 'get_api_pvs', lambda: self.default_pvs)
+ listing = lvm.listing.List([])
+ assert listing.pvs == self.default_pvs
+
+ def test_pvs_is_set(self, monkeypatch):
+ # keep it patched so that we can fail if this gets returned
+ monkeypatch.setattr(lvm.listing.api, 'get_api_pvs', lambda: self.default_pvs)
+ listing = lvm.listing.List([])
+ listing._pvs = []
+ assert listing.pvs == []