mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
New lvol option: shrink. (#2135)
If shrink is set to false and size is lower than current lv size, dont try to shrink logical volume.
This commit is contained in:
parent
b8aa2ff9a7
commit
daefbdad5c
1 changed files with 13 additions and 2 deletions
|
@ -73,6 +73,12 @@ options:
|
||||||
description:
|
description:
|
||||||
- Comma separated list of physical volumes e.g. /dev/sda,/dev/sdb
|
- Comma separated list of physical volumes e.g. /dev/sda,/dev/sdb
|
||||||
required: false
|
required: false
|
||||||
|
shrink:
|
||||||
|
version_added: "2.2"
|
||||||
|
description:
|
||||||
|
- shrink if current size is higher than size requested
|
||||||
|
required: false
|
||||||
|
default: yes
|
||||||
notes:
|
notes:
|
||||||
- Filesystems on top of the volume are not resized.
|
- Filesystems on top of the volume are not resized.
|
||||||
'''
|
'''
|
||||||
|
@ -111,6 +117,9 @@ EXAMPLES = '''
|
||||||
# Reduce the logical volume to 512m
|
# Reduce the logical volume to 512m
|
||||||
- lvol: vg=firefly lv=test size=512 force=yes
|
- lvol: vg=firefly lv=test size=512 force=yes
|
||||||
|
|
||||||
|
# Set the logical volume to 512m and do not try to shrink if size is lower than current one
|
||||||
|
- lvol: vg=firefly lv=test size=512 shrink=no
|
||||||
|
|
||||||
# Remove the logical volume.
|
# Remove the logical volume.
|
||||||
- lvol: vg=firefly lv=test state=absent force=yes
|
- lvol: vg=firefly lv=test state=absent force=yes
|
||||||
|
|
||||||
|
@ -168,6 +177,7 @@ def main():
|
||||||
opts=dict(type='str'),
|
opts=dict(type='str'),
|
||||||
state=dict(choices=["absent", "present"], default='present'),
|
state=dict(choices=["absent", "present"], default='present'),
|
||||||
force=dict(type='bool', default='no'),
|
force=dict(type='bool', default='no'),
|
||||||
|
shrink=dict(type='bool', default='yes'),
|
||||||
snapshot=dict(type='str', default=None),
|
snapshot=dict(type='str', default=None),
|
||||||
pvs=dict(type='str')
|
pvs=dict(type='str')
|
||||||
),
|
),
|
||||||
|
@ -190,6 +200,7 @@ def main():
|
||||||
opts = module.params['opts']
|
opts = module.params['opts']
|
||||||
state = module.params['state']
|
state = module.params['state']
|
||||||
force = module.boolean(module.params['force'])
|
force = module.boolean(module.params['force'])
|
||||||
|
shrink = module.boolean(module.params['shrink'])
|
||||||
size_opt = 'L'
|
size_opt = 'L'
|
||||||
size_unit = 'm'
|
size_unit = 'm'
|
||||||
snapshot = module.params['snapshot']
|
snapshot = module.params['snapshot']
|
||||||
|
@ -328,7 +339,7 @@ def main():
|
||||||
tool = module.get_bin_path("lvextend", required=True)
|
tool = module.get_bin_path("lvextend", required=True)
|
||||||
else:
|
else:
|
||||||
module.fail_json(msg="Logical Volume %s could not be extended. Not enough free space left (%s%s required / %s%s available)" % (this_lv['name'], (size_requested - this_lv['size']), unit, size_free, unit))
|
module.fail_json(msg="Logical Volume %s could not be extended. Not enough free space left (%s%s required / %s%s available)" % (this_lv['name'], (size_requested - this_lv['size']), unit, size_free, unit))
|
||||||
elif this_lv['size'] > size_requested + this_vg['ext_size']: # more than an extent too large
|
elif shrink and this_lv['size'] > size_requested + this_vg['ext_size']: # more than an extent too large
|
||||||
if size_requested == 0:
|
if size_requested == 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']))
|
||||||
elif not force:
|
elif not force:
|
||||||
|
@ -358,7 +369,7 @@ def main():
|
||||||
tool = None
|
tool = None
|
||||||
if int(size) > this_lv['size']:
|
if int(size) > this_lv['size']:
|
||||||
tool = module.get_bin_path("lvextend", required=True)
|
tool = module.get_bin_path("lvextend", required=True)
|
||||||
elif int(size) < this_lv['size']:
|
elif shrink and int(size) < this_lv['size']:
|
||||||
if int(size) == 0:
|
if int(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:
|
||||||
|
|
Loading…
Reference in a new issue