@ -211,7 +211,14 @@ import re
from ansible . module_utils . basic import AnsibleModule
decimal_point = re . compile ( r " ( \ d+) " )
LVOL_ENV_VARS = dict (
# make sure we use the C locale when running lvol-related commands
LANG = ' C ' ,
LC_ALL = ' C ' ,
LC_MESSAGES = ' C ' ,
LC_CTYPE = ' C ' ,
)
def mkversion ( major , minor , patch ) :
@ -224,7 +231,7 @@ def parse_lvs(data):
parts = line . strip ( ) . split ( ' ; ' )
lvs . append ( {
' name ' : parts [ 0 ] . replace ( ' [ ' , ' ' ) . replace ( ' ] ' , ' ' ) ,
' size ' : int( decimal_point . match ( parts [ 1 ] ) . group ( 1 ) ) ,
' size ' : float( parts [ 1 ] ) ,
' active ' : ( parts [ 2 ] [ 4 ] == ' a ' ) ,
' thinpool ' : ( parts [ 2 ] [ 0 ] == ' t ' ) ,
' thinvol ' : ( parts [ 2 ] [ 0 ] == ' V ' ) ,
@ -238,9 +245,9 @@ def parse_vgs(data):
parts = line . strip ( ) . split ( ' ; ' )
vgs . append ( {
' name ' : parts [ 0 ] ,
' size ' : int( decimal_point . match ( parts [ 1 ] ) . group ( 1 ) ) ,
' free ' : int( decimal_point . match ( parts [ 2 ] ) . group ( 1 ) ) ,
' ext_size ' : int( decimal_point . match ( parts [ 3 ] ) . group ( 1 ) )
' size ' : float( parts [ 1 ] ) ,
' free ' : float( parts [ 2 ] ) ,
' ext_size ' : float ( parts [ 3 ] )
} )
return vgs
@ -278,6 +285,8 @@ def main():
) ,
)
module . run_command_environ_update = LVOL_ENV_VARS
# Determine if the "--yes" option should be used
version_found = get_lvm_version ( module )
if version_found is None :
@ -354,7 +363,7 @@ def main():
# Get information on volume group requested
vgs_cmd = module . get_bin_path ( " vgs " , required = True )
rc , current_vgs , err = module . run_command (
" %s --noheadings - o vg_name,size,free,vg_extent_size --units %s --separator ' ; ' %s " % ( vgs_cmd , unit , vg ) )
" %s --noheadings - -nosuffix - o vg_name,size,free,vg_extent_size --units %s --separator ' ; ' %s " % ( vgs_cmd , unit , vg ) )
if rc != 0 :
if state == ' absent ' :
@ -507,10 +516,10 @@ def main():
else :
# resize LV based on absolute values
tool = None
if in t( size ) > this_lv [ ' size ' ] :
if floa t( size ) > this_lv [ ' size ' ] :
tool = module . get_bin_path ( " lvextend " , required = True )
elif shrink and in t( size ) < this_lv [ ' size ' ] :
if in t( size ) == 0 :
elif shrink and floa t( size ) < this_lv [ ' size ' ] :
if floa t( size ) == 0 :
module . fail_json ( msg = " Sorry, no shrinking of %s to 0 permitted. " % ( this_lv [ ' name ' ] ) )
if not force :
module . fail_json ( msg = " Sorry, no shrinking of %s without force=yes. " % ( this_lv [ ' name ' ] ) )