summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Grover <agrover@redhat.com>2012-10-01 22:16:15 -0700
committerAndy Grover <agrover@redhat.com>2012-10-02 08:29:42 -0700
commitd3b693e4ef788e8f9e44b80ddc1ba21921d9a6fd (patch)
tree50d7b8550c2703997c4970ce85bb2ad2b7d6395f
parent7e1154d22fd693701c539f1da96f8205c84be9b8 (diff)
downloadlvm2-for-upstream.tar.gz
lvm2-for-upstream.tar.xz
lvm2-for-upstream.zip
python-lvm: Add example code for python-lvm.for-upstream
Basic example code for using python-lvm. Originally written by agrover but fixed and improved by tasleson. Signed-off-by: Andy Grover <agrover@redhat.com>
-rw-r--r--liblvm/python/example.py107
1 files changed, 107 insertions, 0 deletions
diff --git a/liblvm/python/example.py b/liblvm/python/example.py
new file mode 100644
index 00000000..940716bd
--- /dev/null
+++ b/liblvm/python/example.py
@@ -0,0 +1,107 @@
+#-----------------------------
+#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(h, vg_name):
+ #Open read only
+ vg = h.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(h):
+ free_space = 0
+ rc = None
+
+ vg_names = l.listVgNames()
+ for v in vg_names:
+ vg = h.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(h):
+ vg_name = find_vg_with_free_space(h)
+
+ print 'Using volume group ', vg_name, ' for example'
+
+ if vg_name:
+ vg = h.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)
+
+ #Try to rename
+ lv.rename("python_lvm_ok_to_be_removed_shortly")
+ print 'LV name= ', lv.getName()
+
+ lv.deactivate()
+ lv.remove()
+
+ vg.close()
+ else:
+ print 'No free space available to create demo lv!'
+
+if __name__ == '__main__':
+ #Create a new LVM instance
+ l = lvm.Liblvm()
+
+ #What version
+ print 'lvm version=', l.getVersion()
+
+ #Get a list of volume group names
+ vg_names = l.listVgNames()
+
+ #For each volume group display some information about each of them
+ for vg_i in vg_names:
+ print_vg(l, vg_i)
+
+ #Demo creating a logical volume
+ create_delete_logical_volume(l)
+
+ #Close
+ l.close()