allow floating point input for size vale
This commit is contained in:
parent
ebbd7748b1
commit
f4be5c6382
1 changed files with 16 additions and 18 deletions
|
@ -21,8 +21,8 @@
|
|||
DOCUMENTATION = '''
|
||||
---
|
||||
author:
|
||||
- "Jeroen Hoekx (@jhoekx)"
|
||||
- "Alexander Bulimov (@abulimov)"
|
||||
- "Jeroen Hoekx (@jhoekx)"
|
||||
- "Alexander Bulimov (@abulimov)"
|
||||
module: lvol
|
||||
short_description: Configure LVM logical volumes
|
||||
description:
|
||||
|
@ -42,7 +42,8 @@ options:
|
|||
- The size of the logical volume, according to lvcreate(8) --size, by
|
||||
default in megabytes or optionally with one of [bBsSkKmMgGtTpPeE] units; or
|
||||
according to lvcreate(8) --extents as a percentage of [VG|PVS|FREE];
|
||||
resizing is not supported with percentages.
|
||||
resizing is not supported with percentages. Float values must begin
|
||||
with a digit.
|
||||
state:
|
||||
choices: [ "present", "absent" ]
|
||||
default: present
|
||||
|
@ -95,6 +96,7 @@ decimal_point = re.compile(r"(\.|,)")
|
|||
def mkversion(major, minor, patch):
|
||||
return (1000 * 1000 * int(major)) + (1000 * int(minor)) + int(patch)
|
||||
|
||||
|
||||
def parse_lvs(data):
|
||||
lvs = []
|
||||
for line in data.splitlines():
|
||||
|
@ -122,7 +124,7 @@ def main():
|
|||
argument_spec=dict(
|
||||
vg=dict(required=True),
|
||||
lv=dict(required=True),
|
||||
size=dict(),
|
||||
size=dict(type='str'),
|
||||
opts=dict(type='str'),
|
||||
state=dict(choices=["absent", "present"], default='present'),
|
||||
force=dict(type='bool', default='no'),
|
||||
|
@ -167,23 +169,19 @@ def main():
|
|||
size_opt = 'l'
|
||||
size_unit = ''
|
||||
|
||||
if not '%' in size:
|
||||
# LVCREATE(8) -L --size option unit
|
||||
elif size[-1].isalpha():
|
||||
if size[-1].lower() in 'bskmgtpe':
|
||||
size_unit = size[-1].lower()
|
||||
if size[0:-1].isdigit():
|
||||
size = int(size[0:-1])
|
||||
else:
|
||||
module.fail_json(msg="Bad size specification for unit %s" % size_unit)
|
||||
size_opt = 'L'
|
||||
else:
|
||||
module.fail_json(msg="Size unit should be one of [bBsSkKmMgGtTpPeE]")
|
||||
# when no unit, megabytes by default
|
||||
elif size.isdigit():
|
||||
size = int(size)
|
||||
else:
|
||||
module.fail_json(msg="Bad size specification")
|
||||
size_unit = size[-1].lower()
|
||||
size = size[0:-1]
|
||||
|
||||
try:
|
||||
float(size)
|
||||
if not size[0].isdigit(): raise ValueError()
|
||||
except ValueError:
|
||||
module.fail_json(msg="Bad size specification of '%s'" % size)
|
||||
|
||||
# when no unit, megabytes by default
|
||||
if size_opt == 'l':
|
||||
unit = 'm'
|
||||
else:
|
||||
|
|
Loading…
Reference in a new issue