|
|
@ -208,11 +208,17 @@ EXAMPLES = '''
|
|
|
|
'''
|
|
|
|
'''
|
|
|
|
|
|
|
|
|
|
|
|
import re
|
|
|
|
import re
|
|
|
|
import locale
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
from ansible.module_utils.basic import AnsibleModule
|
|
|
|
from ansible.module_utils.basic import AnsibleModule
|
|
|
|
|
|
|
|
|
|
|
|
locale.setlocale(locale.LC_ALL, '')
|
|
|
|
|
|
|
|
|
|
|
|
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):
|
|
|
|
def mkversion(major, minor, patch):
|
|
|
@ -225,7 +231,7 @@ def parse_lvs(data):
|
|
|
|
parts = line.strip().split(';')
|
|
|
|
parts = line.strip().split(';')
|
|
|
|
lvs.append({
|
|
|
|
lvs.append({
|
|
|
|
'name': parts[0].replace('[', '').replace(']', ''),
|
|
|
|
'name': parts[0].replace('[', '').replace(']', ''),
|
|
|
|
'size': locale.atof(parts[1]),
|
|
|
|
'size': float(parts[1]),
|
|
|
|
'active': (parts[2][4] == 'a'),
|
|
|
|
'active': (parts[2][4] == 'a'),
|
|
|
|
'thinpool': (parts[2][0] == 't'),
|
|
|
|
'thinpool': (parts[2][0] == 't'),
|
|
|
|
'thinvol': (parts[2][0] == 'V'),
|
|
|
|
'thinvol': (parts[2][0] == 'V'),
|
|
|
@ -239,9 +245,9 @@ def parse_vgs(data):
|
|
|
|
parts = line.strip().split(';')
|
|
|
|
parts = line.strip().split(';')
|
|
|
|
vgs.append({
|
|
|
|
vgs.append({
|
|
|
|
'name': parts[0],
|
|
|
|
'name': parts[0],
|
|
|
|
'size': locale.atof(parts[1]),
|
|
|
|
'size': float(parts[1]),
|
|
|
|
'free': locale.atof(parts[2]),
|
|
|
|
'free': float(parts[2]),
|
|
|
|
'ext_size': locale.atof(parts[3])
|
|
|
|
'ext_size': float(parts[3])
|
|
|
|
})
|
|
|
|
})
|
|
|
|
return vgs
|
|
|
|
return vgs
|
|
|
|
|
|
|
|
|
|
|
@ -279,6 +285,8 @@ def main():
|
|
|
|
),
|
|
|
|
),
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
module.run_command_environ_update = LVOL_ENV_VARS
|
|
|
|
|
|
|
|
|
|
|
|
# Determine if the "--yes" option should be used
|
|
|
|
# Determine if the "--yes" option should be used
|
|
|
|
version_found = get_lvm_version(module)
|
|
|
|
version_found = get_lvm_version(module)
|
|
|
|
if version_found is None:
|
|
|
|
if version_found is None:
|
|
|
@ -340,7 +348,7 @@ def main():
|
|
|
|
size = size[0:-1]
|
|
|
|
size = size[0:-1]
|
|
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
try:
|
|
|
|
locale.atof(size)
|
|
|
|
float(size)
|
|
|
|
if not size[0].isdigit():
|
|
|
|
if not size[0].isdigit():
|
|
|
|
raise ValueError()
|
|
|
|
raise ValueError()
|
|
|
|
except ValueError:
|
|
|
|
except ValueError:
|
|
|
@ -508,10 +516,10 @@ def main():
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
# resize LV based on absolute values
|
|
|
|
# resize LV based on absolute values
|
|
|
|
tool = None
|
|
|
|
tool = None
|
|
|
|
if locale.atof(size) > this_lv['size']:
|
|
|
|
if float(size) > this_lv['size']:
|
|
|
|
tool = module.get_bin_path("lvextend", required=True)
|
|
|
|
tool = module.get_bin_path("lvextend", required=True)
|
|
|
|
elif shrink and locale.atof(size) < this_lv['size']:
|
|
|
|
elif shrink and float(size) < this_lv['size']:
|
|
|
|
if locale.atof(size) == 0:
|
|
|
|
if float(size) == 0:
|
|
|
|
module.fail_json(msg="Sorry, no shrinking of %s to 0 permitted." % (this_lv['name']))
|
|
|
|
module.fail_json(msg="Sorry, no shrinking of %s to 0 permitted." % (this_lv['name']))
|
|
|
|
if not force:
|
|
|
|
if not force:
|
|
|
|
module.fail_json(msg="Sorry, no shrinking of %s without force=yes." % (this_lv['name']))
|
|
|
|
module.fail_json(msg="Sorry, no shrinking of %s without force=yes." % (this_lv['name']))
|
|
|
|