From ecdd835b6c98e36d51c2784358d3a7c79fc7175f Mon Sep 17 00:00:00 2001 From: Tuan-Anh Hoang-Vu Date: Sun, 11 Mar 2018 22:33:51 +0000 Subject: [PATCH] Fixed lvol ValueError with float size. --- lib/ansible/modules/system/lvol.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/lib/ansible/modules/system/lvol.py b/lib/ansible/modules/system/lvol.py index 9be8e69ac33..3f02d7a2fd4 100644 --- a/lib/ansible/modules/system/lvol.py +++ b/lib/ansible/modules/system/lvol.py @@ -208,6 +208,7 @@ EXAMPLES = ''' ''' import re +import locale from ansible.module_utils.basic import AnsibleModule @@ -224,7 +225,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': locale.atof(parts[1]), 'active': (parts[2][4] == 'a'), 'thinpool': (parts[2][0] == 't'), 'thinvol': (parts[2][0] == 'V'), @@ -238,9 +239,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': locale.atof(parts[1]), + 'free': locale.atof(parts[2]), + 'ext_size': locale.atof(parts[3]) }) return vgs @@ -354,7 +355,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 +508,10 @@ def main(): else: # resize LV based on absolute values tool = None - if float(size) > this_lv['size']: + if locale.atof(size) > this_lv['size']: tool = module.get_bin_path("lvextend", required=True) - elif shrink and float(size) < this_lv['size']: - if float(size) == 0: + elif shrink and locale.atof(size) < this_lv['size']: + if locale.atof(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']))