This repository has been archived by the owner on Nov 18, 2017. It is now read-only.
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
synced from lvm2. Signed-off-by: Andy Grover <agrover@redhat.com>
- Loading branch information
Andy Grover
committed
Oct 15, 2012
1 parent
fcb712b
commit cc8aa53
Showing
2 changed files
with
120 additions
and
104 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,120 @@ | |||
# | |||
# Copyright (C) 2012 Red Hat, Inc. All rights reserved. | |||
# | |||
# This file is part of LVM2. | |||
# | |||
# This program is free software: you can redistribute it and/or modify | |||
# it under the terms of the GNU Lesser General Public License as published by | |||
# the Free Software Foundation, either version 2.1 of the License, or | |||
# (at your option) any later version. | |||
# | |||
# This program is distributed in the hope that it will be useful, | |||
# but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
# GNU Lesser General Public License for more details. | |||
# | |||
# You should have received a copy of the GNU Lesser General Public License | |||
# along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
# | |||
#----------------------------- | |||
# Python example code: | |||
#----------------------------- | |||
|
|||
import lvm | |||
|
|||
# Note: This example will create a logical unit, tag it and | |||
# delete it, don't run this on production box! | |||
|
|||
#Dump information about PV | |||
def print_pv(pv): | |||
print 'PV name: ', pv.getName(), ' ID: ', pv.getUuid(), 'Size: ', pv.getSize() | |||
|
|||
|
|||
#Dump some information about a specific volume group | |||
def print_vg(vg_name): | |||
#Open read only | |||
vg = lvm.vgOpen(vg_name, 'r') | |||
|
|||
print 'Volume group:', vg_name, 'Size: ', vg.getSize() | |||
|
|||
#Retrieve a list of Physical volumes for this volume group | |||
pv_list = vg.listPVs() | |||
|
|||
#Print out the physical volumes | |||
for p in pv_list: | |||
print_pv(p) | |||
|
|||
#Get a list of logical volumes in this volume group | |||
lv_list = vg.listLVs() | |||
if len(lv_list): | |||
for l in lv_list: | |||
print 'LV name: ', l.getName(), ' ID: ', l.getUuid() | |||
else: | |||
print 'No logical volumes present!' | |||
|
|||
vg.close() | |||
|
|||
#Returns the name of a vg with space available | |||
def find_vg_with_free_space(): | |||
free_space = 0 | |||
rc = None | |||
|
|||
vg_names = lvm.listVgNames() | |||
for v in vg_names: | |||
vg = lvm.vgOpen(v, 'r') | |||
c_free = vg.getFreeSize() | |||
if c_free > free_space: | |||
free_space = c_free | |||
rc = v | |||
vg.close() | |||
|
|||
return rc | |||
|
|||
#Walk through the volume groups and fine one with space in which we can | |||
#create a new logical volume | |||
def create_delete_logical_volume(): | |||
vg_name = find_vg_with_free_space() | |||
|
|||
print 'Using volume group ', vg_name, ' for example' | |||
|
|||
if vg_name: | |||
vg = lvm.vgOpen(vg_name, 'w') | |||
lv = vg.createLvLinear('python_lvm_ok_to_delete', vg.getFreeSize()) | |||
|
|||
if lv: | |||
print 'New lv, id= ', lv.getUuid() | |||
|
|||
#Create a tag | |||
lv.addTag('Demo_tag') | |||
|
|||
#Get the tags | |||
tags = lv.getTags() | |||
for t in tags: | |||
#Remove tag | |||
lv.removeTag(t) | |||
|
|||
lv.deactivate() | |||
|
|||
#Try to rename | |||
lv.rename("python_lvm_renamed") | |||
print 'LV name= ', lv.getName() | |||
lv.remove() | |||
|
|||
vg.close() | |||
else: | |||
print 'No free space available to create demo lv!' | |||
|
|||
if __name__ == '__main__': | |||
#What version | |||
print 'lvm version=', lvm.getVersion() | |||
|
|||
#Get a list of volume group names | |||
vg_names = lvm.listVgNames() | |||
|
|||
#For each volume group display some information about each of them | |||
for vg_i in vg_names: | |||
print_vg(vg_i) | |||
|
|||
#Demo creating a logical volume | |||
create_delete_logical_volume() | |||
|