Example #1
0
    def _create_thin_pool(device_list, pool_name):
        vg = lvm.vgCreate(TestLvm.VG_P + "_" + pool_name)

        for d in device_list:
            vg.extend(d)

        vg.createLvThinpool(pool_name, vg.getSize() / 2, 0, 0, lvm.THIN_DISCARDS_PASSDOWN, 1)
        return vg
Example #2
0
	def _create_thick_lv(device_list, name):
		vg = lvm.vgCreate(TestLvm.VG_P + "_" + name)

		for d in device_list:
			vg.extend(d)

		vg.createLvLinear(name, vg.getSize() / 2)
		vg.close()
		vg = None
	def _create_thin_pool(device_list, pool_name):
		vg = lvm.vgCreate(TestLvm.VG_P + "_" + pool_name)

		for d in device_list:
			vg.extend(d)

		vg.createLvThinpool(
			pool_name, vg.getSize() / 2, 0, 0, lvm.THIN_DISCARDS_PASSDOWN, 1)
		return vg
	def _create_thick_lv(device_list, name):
		vg = lvm.vgCreate(TestLvm.VG_P + "_" + name)

		for d in device_list:
			vg.extend(d)

		vg.createLvLinear(name, vg.getSize() / 2)
		vg.close()
		vg = None
Example #5
0
def add_devices_to_localstorage(devices):
    """Initializes KD volume group: Creates vg if it not exists, activates it
    if not active. Adds devices to VG.
    """
    all_names = lvm.listVgNames()
    if KD_VG_NAME not in all_names:
        vg = lvm.vgCreate(KD_VG_NAME)
    else:
        vg = lvm.vgOpen(KD_VG_NAME, 'w')
    try:
        pvs = {item.getName(): item for item in vg.listPVs()}
        lv = None
        for dev in devices:
            if dev in pvs:
                continue
            lvm.pvCreate(dev)
            vg.extend(dev)
            new_pv = [
                item for item in vg.listPVs() if item.getName() == dev
            ][0]
            pvs[dev] = new_pv
        for item in vg.listLVs():
            if item.getName() == KD_LV_NAME:
                lv = item
                break
        #dev = os.path.join('/dev', KD_VG_NAME, KD_LV_NAME)
        if not os.path.isdir(LOCAL_STORAGE_MOUNT_POINT):
            os.makedirs(LOCAL_STORAGE_MOUNT_POINT)

        if not lv:
            lv = vg.createLvLinear(KD_LV_NAME, vg.getFreeSize())
            dev = lv.getProperty('lv_path')[0]
            ok, message = make_fs(dev)
            if not ok:
                return ERROR, {'message': message}
        else:
            dev = lv.getProperty('lv_path')[0]
            if vg.getFreeSize():
                lv.resize(lv.getSize() + vg.getFreeSize())
        if not is_mounted(LOCAL_STORAGE_MOUNT_POINT):
            ok, message = mount(dev, LOCAL_STORAGE_MOUNT_POINT)
            if not ok:
                return ERROR, {'message': message}
        extend_fs_size(LOCAL_STORAGE_MOUNT_POINT)
        pv_info = {
            key: {'size': item.getDevSize()}
            for key, item in pvs.iteritems()
        }

    finally:
        vg.close()
    make_permanent_mount(dev, LOCAL_STORAGE_MOUNT_POINT)

    return OK, {
        'lsUsage': get_fs_usage(LOCAL_STORAGE_MOUNT_POINT),
        'PV': pv_info
    }
Example #6
0
	def testLvMisc(self):
		#Need to look at lack of vg_write in vg create

		#For this to work cleanly we will remove an existing lv & vg and then
		#put it back so that the test framework can clean it up.
		vg_name_list = lvm.listVgNames()

		if len(vg_name_list):
			vg_name = vg_name_list[0]

			vg = lvm.vgOpen(vg_name, "w")

			vg_mda_copies = vg.getProperty('vg_mda_copies')
			vg.setProperty('vg_mda_copies', vg_mda_copies[0])

			pvs = vg.listPVs()
			lvs = vg.listLVs()

			pe_devices = []
			for p in pvs:
				pe_devices.append(p.getName())

			self.assertEquals(len(lvs), 1)

			lv = lvs[0]

			lv_name = lv.getName()
			lv_size = lv.getSize()

			lv.remove()
			lv = None

			vg.reduce(pe_devices[0])

			vg.remove()
			vg.close()

			nvg = lvm.vgCreate(vg_name)
			for p in pe_devices:
				nvg.extend(p)

			#2MiB extent size
			new_extent = 1024 * 1024 * 2

			nvg.setExtentSize(new_extent)
			self.assertEqual(nvg.getExtentSize(), new_extent)

			v = nvg.createLvLinear(lv_name, lv_size)

			lv_find_name = nvg.lvFromName(lv_name)
			lv_find_uuid = nvg.lvFromUuid(v.getUuid())

			self.assertTrue(lv_find_name.getName() == v.getName())
			self.assertTrue(lv_find_uuid.getUuid() == v.getUuid())

			nvg.close()
Example #7
0
    def testLvMisc(self):
        #Need to look at lack of vg_write in vg create

        #For this to work cleanly we will remove an existing lv & vg and then
        #put it back so that the test framework can clean it up.
        vg_name_list = lvm.listVgNames()

        if len(vg_name_list):
            vg_name = vg_name_list[0]

            vg = lvm.vgOpen(vg_name, "w")

            vg_mda_copies = vg.getProperty('vg_mda_copies')
            vg.setProperty('vg_mda_copies', vg_mda_copies[0])

            pvs = vg.listPVs()
            lvs = vg.listLVs()

            pe_devices = []
            for p in pvs:
                pe_devices.append(p.getName())

            self.assertEquals(len(lvs), 1)

            lv = lvs[0]

            lv_name = lv.getName()
            lv_size = lv.getSize()

            lv.remove()
            lv = None

            vg.reduce(pe_devices[0])

            vg.remove()
            vg.close()

            nvg = lvm.vgCreate(vg_name)
            for p in pe_devices:
                nvg.extend(p)

            #2MiB extent size
            new_extent = 1024 * 1024 * 2

            nvg.setExtentSize(new_extent)
            self.assertEqual(nvg.getExtentSize(), new_extent)

            v = nvg.createLvLinear(lv_name, lv_size)

            lv_find_name = nvg.lvFromName(lv_name)
            lv_find_uuid = nvg.lvFromUuid(v.getUuid())

            self.assertTrue(lv_find_name.getName() == v.getName())
            self.assertTrue(lv_find_uuid.getUuid() == v.getUuid())

            nvg.close()
Example #8
0
	def _createThick(self, device_list):
		vg = lvm.vgCreate('full_vg')

		for d in device_list:
			vg.extend(d)

		new_extent = 1024 * 1024 * 2
		vg.setExtentSize(new_extent)
		self.assertEqual(vg.getExtentSize(), new_extent)

		vg.createLvLinear('thick_lv', vg.getSize()/2)
		vg.close()
		vg = None
Example #9
0
def thinpool_LV():

    device = '/dev/sdd'
    vg_name = 'TEST_VG'
    lv_pool = 'TEST_POOL'
    lv_thin = 'TEST_THIN'

    lvm.pvCreate(device)

    vg = lvm.vgCreate(vg_name)

    vg.extend('/dev/sdd')

    pv_list = vg.listPVs()
    for pv in pv_list:
        print 'PV name: ', pv.getName(), ' ID: ', pv.getUuid(
        ), 'Size: ', pv.getSize()
    lv = vg.createLvThinpool(lv_pool, 1024 * 1024 * 1024)
    lv2 = vg.createLvThin(lv.getName(), lv_thin, 1024 * 1024 * 1024 * 1024)

    print lv2.deactivate()
    print lv2.getAttr()
    print lv.deactivate()
    print lv.getAttr()
    raw_input('acticate?')
    print lv.activate()
    print lv.getAttr()
    print lv2.activate()
    print lv2.getAttr()

    vg.close()
    raw_input('??')

    #vg.reduce('/dev/sdd')

    vg = lvm.vgOpen(vg_name, 'w')
    lv = vg.lvFromName(lv_thin)
    lv.remove()

    lv = vg.lvFromName(lv_pool)
    lv.remove()

    vg.remove()

    lvm.configReload()

    lvm.pvRemove(device)

    return True
Example #10
0
def vg_create(vg_name, devices=[]):
    """
    creates a volume group in LVM
    """

    if vg_exists(vg_name):
        return True

    log.info("Creating VG %s" % vg_name)
    vg = lvm.vgCreate(vg_name)

    for d in devices:
        vg.extend(d)

    vg.close()

    return vg
Example #11
0
	def setUp(self):
		device_list = self._get_pv_devices()

		#Make sure our prepare script is doing as expected.
		self.assertTrue(len(device_list) >= 4)

		vg_names = lvm.listVgNames()

		#If we don't have any volume groups lets setup one for
		#those tests that are expecting one
		if len(vg_names) == 0:
			self._createThick([device_list[TestLvm.FULL_PV]])

			vg = lvm.vgCreate('thin_vg')
			vg.extend(device_list[TestLvm.THIN_PV_A])
			vg.extend(device_list[TestLvm.THIN_PV_B])
			vg.createLvThinpool('thin_pool', vg.getSize()/2, 0, 0,
					lvm.THIN_DISCARDS_PASSDOWN, 1)
			vg.createLvThin('thin_pool', 'thin_lv', vg.getSize()/3)
			vg.close()
			vg = None
Example #12
0
	def test_vg_reduce(self):
		# Test the case where we try to reduce a vg where the last PV has
		# no metadata copies.  In this case the reduce should fail.
		vg_name = TestLvm.VG_P + 'reduce_test'

		device_names = TestLvm._get_pv_device_names()

		for d in device_names:
			lvm.pvRemove(d)

		lvm.pvCreate(device_names[0], 0, 0)  # Size all, pvmetadatacopies 0
		lvm.pvCreate(device_names[1])
		lvm.pvCreate(device_names[2])
		lvm.pvCreate(device_names[3])

		vg = lvm.vgCreate(vg_name)

		vg.extend(device_names[3])
		vg.extend(device_names[2])
		vg.extend(device_names[1])
		vg.extend(device_names[0])
		vg.close()

		vg = None

		vg = lvm.vgOpen(vg_name, 'w')

		vg.reduce(device_names[3])
		vg.reduce(device_names[2])

		self.assertRaises(lvm.LibLVMError, vg.reduce, device_names[1])

		vg.close()
		vg = None

		vg = lvm.vgOpen(vg_name, 'w')
		vg.remove()
		vg.close()
	def test_vg_reduce(self):
		# Test the case where we try to reduce a vg where the last PV has
		# no metadata copies.  In this case the reduce should fail.
		vg_name = TestLvm.VG_P + 'reduce_test'

		device_names = TestLvm._get_pv_device_names()

		for d in device_names:
			lvm.pvRemove(d)

		lvm.pvCreate(device_names[0], 0, 0)  # Size all, pvmetadatacopies 0
		lvm.pvCreate(device_names[1])
		lvm.pvCreate(device_names[2])
		lvm.pvCreate(device_names[3])

		vg = lvm.vgCreate(vg_name)

		vg.extend(device_names[3])
		vg.extend(device_names[2])
		vg.extend(device_names[1])
		vg.extend(device_names[0])
		vg.close()

		vg = None

		vg = lvm.vgOpen(vg_name, 'w')

		vg.reduce(device_names[3])
		vg.reduce(device_names[2])

		self.assertRaises(lvm.LibLVMError, vg.reduce, device_names[1])

		vg.close()
		vg = None

		vg = lvm.vgOpen(vg_name, 'w')
		vg.remove()
		vg.close()
Example #14
0
def normal_LV():

    lvm.pvCreate(device)

    vg = lvm.vgCreate(vg_name)

    vg.extend('/dev/sdd')

    pv_list = vg.listPVs()
    for pv in pv_list:
        print 'PV name: ', pv.getName(), ' ID: ', pv.getUuid(
        ), 'Size: ', pv.getSize()
    lv = vg.createLvLinear(lv_name, 1024 * 1024 * 1024)

    print lv.deactivate()
    print lv.getAttr()
    raw_input('acticate?')
    print lv.activate()
    print lv.getAttr()

    vg.close()
    raw_input('??')

    #vg.reduce('/dev/sdd')

    vg = lvm.vgOpen(vg_name, 'w')
    lv = vg.lvFromName(lv_name)
    lv.remove()

    vg.remove()

    lvm.configReload()

    lvm.pvRemove(device)

    return True
Example #15
0
def vg_create(req, name, path):
    vg = lvm.vgCreate(name)
    vg.extend(path)
    vg.close()
    return [{}]