def test_lvpath(self): with namedTemporaryDir() as tmpdir: lvm = FakeLVM(tmpdir) vg_name = 'foo' lv_name = 'bar' expected = os.path.join(tmpdir, 'dev', vg_name, lv_name) self.assertEqual(expected, lvm.lvPath(vg_name, lv_name))
def test_getreaddelay(self): with namedTemporaryDir() as tmpdir: lvm = FakeLVM(tmpdir) with MonkeyPatchScope([(blockSD, 'lvm', lvm)]): manifest = make_blocksd(tmpdir, lvm) vg_name = manifest.sdUUID make_file(lvm.lvPath(vg_name, 'metadata')) self.assertIsInstance(manifest.getReadDelay(), float)
def test_getvsize_inactive_lv(self): # Tests the path when the device file is not present with namedTemporaryDir() as tmpdir: lvm = FakeLVM(tmpdir) with MonkeyPatchScope([(blockSD, 'lvm', lvm)]): manifest = make_blocksd(tmpdir, lvm) lv_name = str(uuid.uuid4()) lvm.createLV(manifest.sdUUID, lv_name, VOLSIZE / MB) self.assertEqual(VOLSIZE, manifest.getVSize('<imgUUID>', lv_name))
def test_getvsize_active_lv(self): # Tests the path when the device file is present with namedTemporaryDir() as tmpdir: manifest = make_blocksd_manifest(tmpdir) lvm = FakeLVM(tmpdir) vg_name = make_vg(lvm, manifest) lv_name = str(uuid.uuid4()) lvm.createLV(vg_name, lv_name, VOLSIZE) lvm.fake_lv_symlink_create(vg_name, lv_name) with MonkeyPatchScope([(blockSD, 'lvm', lvm)]): self.assertEqual(VOLSIZE, manifest.getVSize('<imgUUID>', lv_name))
def test_metaslot_selection(self): with namedTemporaryDir() as tmpdir: lvm = FakeLVM(tmpdir) with MonkeyPatchScope([(blockSD, 'lvm', lvm)]): manifest = make_blocksd(tmpdir, lvm) lvs = ('0b6287f0-3679-4c4d-8be5-9bbfe3ec9c1f', 'ea13af29-b64a-4d1a-b35f-3e6ab15c3b04') for lv, offset in zip(lvs, [4, 7]): lvm.createLV(manifest.sdUUID, lv, VOLSIZE) tag = blockVolume.TAG_PREFIX_MD + str(offset) lvm.addtag(manifest.sdUUID, lv, tag) with manifest.acquireVolumeMetadataSlot(None, 1) as mdSlot: self.assertEqual(mdSlot, 5)
def test_getblocksize_defaults(self): with namedTemporaryDir() as tmpdir: lvm = FakeLVM(tmpdir) with MonkeyPatchScope([(blockSD, 'lvm', lvm)]): manifest = make_blocksd(tmpdir, lvm) self.assertEquals(512, manifest.logBlkSize) self.assertEquals(512, manifest.phyBlkSize)
def test_metaslot_lock(self): with namedTemporaryDir() as tmpdir: lvm = FakeLVM(tmpdir) with MonkeyPatchScope([(blockSD, 'lvm', lvm)]): manifest = make_blocksd(tmpdir, lvm) with manifest.acquireVolumeMetadataSlot(None, 1): acquired = manifest._lvTagMetaSlotLock.acquire(False) self.assertFalse(acquired)
def test_getmetaparam(self): with namedTemporaryDir() as tmpdir: lvm = FakeLVM(tmpdir) with MonkeyPatchScope([(blockSD, 'lvm', lvm)]): metadata = {sd.DMDK_VERSION: 3} manifest = make_blocksd(tmpdir, lvm, metadata=metadata) metadata[sd.DMDK_SDUUID] = manifest.sdUUID self.assertEquals(manifest.sdUUID, manifest.getMetaParam(sd.DMDK_SDUUID))
def test_getblocksize(self): with namedTemporaryDir() as tmpdir: lvm = FakeLVM(tmpdir) with MonkeyPatchScope([(blockSD, 'lvm', lvm)]): metadata = { sd.DMDK_VERSION: 3, blockSD.DMDK_LOGBLKSIZE: 2048, blockSD.DMDK_PHYBLKSIZE: 1024 } manifest = make_blocksd(tmpdir, lvm, metadata=metadata) self.assertEquals(2048, manifest.logBlkSize) self.assertEquals(1024, manifest.phyBlkSize)
def test_lv_size_rounding(self): vg_name = 'foo' lv_name = 'bar' devices = ['360014054d75cb132d474c0eae9825766'] with namedTemporaryDir() as tmpdir: lvm = FakeLVM(tmpdir) lvm.createVG(vg_name, devices, blockSD.STORAGE_UNREADY_DOMAIN_TAG, blockSD.VG_METADATASIZE) lvm.createLV(vg_name, lv_name, sc.VG_EXTENT_SIZE_MB - 1) lv = lvm.getLV(vg_name, lv_name) self.assertEqual(sc.VG_EXTENT_SIZE_MB * MB, int(lv.size))
def fake_block_env(obj=None): with namedTemporaryDir() as tmpdir: lvm = FakeLVM(tmpdir) fake_sdc = FakeStorageDomainCache() with MonkeyPatchScope([ (blockSD, 'lvm', lvm), (blockVolume, 'lvm', lvm), (volume_artifacts, 'lvm', lvm), (sd, 'storage_repository', tmpdir), (volume, 'sdCache', fake_sdc), ]): sd_manifest = make_blocksd_manifest(tmpdir, lvm) fake_sdc.domains[sd_manifest.sdUUID] = FakeSD(sd_manifest) yield FakeEnv(sd_manifest, lvm=lvm)
def base_config(self): """ Create a simple volume group from a single 10G LUN. lvm.createVG('1ffead52-7363-4968-a8c7-3bc34504d452', ['360014054d75cb132d474c0eae9825766'], blockSD.STORAGE_UNREADY_DOMAIN_TAG, blockSD.VG_METADATASIZE) print lvm.getVG('1ffead52-7363-4968-a8c7-3bc34504d452') VG(uuid='15hlPF-V3eG-F9Cp-SGtu-4Mq0-28Do-HC806y', name='1ffead52-7363-4968-a8c7-3bc34504d452', attr=VG_ATTR(permission='w', resizeable='z', exported='-', partial='-', allocation='n', clustered='-'), size='10334765056', free='10334765056', extent_size='134217728', extent_count='77', free_count='77', tags=('RHAT_storage_domain_UNREADY',), vg_mda_size='134217728', vg_mda_free='67107328', lv_count='0', pv_count='1', pv_name=('/dev/mapper/360014054d75cb132d474c0eae9825766',), writeable=True, partial='OK') print lvm.getPV('360014054d75cb132d474c0eae9825766') PV(uuid='fIRjbD-usOA-tYgW-b2Uz-oUly-AJ49-bMMjYe', name='/dev/mapper/360014054d75cb132d474c0eae9825766', size='10334765056', vg_name='1ffead52-7363-4968-a8c7-3bc34504d452', vg_uuid='15hlPF-V3eG-F9Cp-SGtu-4Mq0-28Do-HC806y', pe_start='138412032', pe_count='77', pe_alloc_count='0', mda_count='2', dev_size='10737418240', guid='360014054d75cb132d474c0eae9825766') """ with namedTemporaryDir() as tmpdir: lvm = FakeLVM(tmpdir) lvm.createVG(self.VG_NAME, self.DEVICES, blockSD.STORAGE_UNREADY_DOMAIN_TAG, blockSD.VG_METADATASIZE) yield lvm
def fake_block_env(obj=None, sd_version=3): with namedTemporaryDir() as tmpdir: lvm = FakeLVM(tmpdir) fake_sdc = FakeStorageDomainCache() with MonkeyPatchScope([ (blockSD, 'lvm', lvm), (blockVolume, 'lvm', lvm), (volume_artifacts, 'lvm', lvm), (sd, 'storage_repository', tmpdir), (volume, 'sdCache', fake_sdc), (hsm, 'sdCache', fake_sdc), ]): sd_manifest = make_blocksd_manifest(tmpdir, lvm, sd_version=sd_version) fake_sdc.domains[sd_manifest.sdUUID] = FakeSD(sd_manifest) try: yield FakeBlockEnv(tmpdir, sd_manifest, fake_sdc, lvm) finally: oop.stop()
def test_bad_args(self, exception, fn, args): with namedTemporaryDir() as tmpdir: lvm = FakeLVM(tmpdir) lvm_fn = getattr(lvm, fn) self.assertRaises(exception, lvm_fn, *args)