# # 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 . # #----------------------------- # 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()