mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Implement btrfs resize support (#4465)
* Implement btrfs resize support * Add changelog fragment for btrfs resize support Co-authored-by: Fabian Klemp <fabian.klemp@frequentis.com>
This commit is contained in:
parent
5ecac692de
commit
8ccc4d1fbb
3 changed files with 22 additions and 2 deletions
3
changelogs/fragments/4465-btrfs-resize.yml
Normal file
3
changelogs/fragments/4465-btrfs-resize.yml
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
minor_changes:
|
||||||
|
- filesystem - add support for resizing btrfs (https://github.com/ansible-collections/community.general/issues/4465).
|
|
@ -59,7 +59,7 @@ options:
|
||||||
resizefs:
|
resizefs:
|
||||||
description:
|
description:
|
||||||
- If C(yes), if the block device and filesystem size differ, grow the filesystem into the space.
|
- If C(yes), if the block device and filesystem size differ, grow the filesystem into the space.
|
||||||
- Supported for C(ext2), C(ext3), C(ext4), C(ext4dev), C(f2fs), C(lvm), C(xfs), C(ufs) and C(vfat) filesystems.
|
- Supported for C(btrfs), C(ext2), C(ext3), C(ext4), C(ext4dev), C(f2fs), C(lvm), C(xfs), C(ufs) and C(vfat) filesystems.
|
||||||
Attempts to resize other filesystem types will fail.
|
Attempts to resize other filesystem types will fail.
|
||||||
- XFS Will only grow if mounted. Currently, the module is based on commands
|
- XFS Will only grow if mounted. Currently, the module is based on commands
|
||||||
from C(util-linux) package to perform operations, so resizing of XFS is
|
from C(util-linux) package to perform operations, so resizing of XFS is
|
||||||
|
@ -331,6 +331,10 @@ class Reiserfs(Filesystem):
|
||||||
|
|
||||||
class Btrfs(Filesystem):
|
class Btrfs(Filesystem):
|
||||||
MKFS = 'mkfs.btrfs'
|
MKFS = 'mkfs.btrfs'
|
||||||
|
INFO = 'btrfs'
|
||||||
|
GROW = 'btrfs'
|
||||||
|
GROW_MAX_SPACE_FLAGS = ['filesystem', 'resize', 'max']
|
||||||
|
GROW_MOUNTPOINT_ONLY = True
|
||||||
|
|
||||||
def __init__(self, module):
|
def __init__(self, module):
|
||||||
super(Btrfs, self).__init__(module)
|
super(Btrfs, self).__init__(module)
|
||||||
|
@ -349,6 +353,19 @@ class Btrfs(Filesystem):
|
||||||
self.MKFS_FORCE_FLAGS = ['-f']
|
self.MKFS_FORCE_FLAGS = ['-f']
|
||||||
self.module.warn('Unable to identify mkfs.btrfs version (%r, %r)' % (stdout, stderr))
|
self.module.warn('Unable to identify mkfs.btrfs version (%r, %r)' % (stdout, stderr))
|
||||||
|
|
||||||
|
def get_fs_size(self, dev):
|
||||||
|
"""Return size in bytes of filesystem on device (integer)."""
|
||||||
|
mountpoint = dev.get_mountpoint()
|
||||||
|
if not mountpoint:
|
||||||
|
self.module.fail_json(msg="%s needs to be mounted for %s operations" % (dev, self.fstype))
|
||||||
|
|
||||||
|
dummy, stdout, dummy = self.module.run_command([self.module.get_bin_path(self.INFO),
|
||||||
|
'filesystem', 'usage', '-b', mountpoint], check_rc=True)
|
||||||
|
for line in stdout.splitlines():
|
||||||
|
if "Device size" in line:
|
||||||
|
return int(line.split()[-1])
|
||||||
|
raise ValueError(stdout)
|
||||||
|
|
||||||
|
|
||||||
class Ocfs2(Filesystem):
|
class Ocfs2(Filesystem):
|
||||||
MKFS = 'mkfs.ocfs2'
|
MKFS = 'mkfs.ocfs2'
|
||||||
|
|
|
@ -16,7 +16,7 @@ tested_filesystems:
|
||||||
ext3: {fssize: 10, grow: True}
|
ext3: {fssize: 10, grow: True}
|
||||||
ext2: {fssize: 10, grow: True}
|
ext2: {fssize: 10, grow: True}
|
||||||
xfs: {fssize: 20, grow: False} # grow requires a mounted filesystem
|
xfs: {fssize: 20, grow: False} # grow requires a mounted filesystem
|
||||||
btrfs: {fssize: 150, grow: False} # grow not implemented
|
btrfs: {fssize: 150, grow: False} # grow requires a mounted filesystem
|
||||||
reiserfs: {fssize: 33, grow: False} # grow not implemented
|
reiserfs: {fssize: 33, grow: False} # grow not implemented
|
||||||
vfat: {fssize: 20, grow: True}
|
vfat: {fssize: 20, grow: True}
|
||||||
ocfs2: {fssize: '{{ ocfs2_fssize }}', grow: False} # grow not implemented
|
ocfs2: {fssize: '{{ ocfs2_fssize }}', grow: False} # grow not implemented
|
||||||
|
|
Loading…
Reference in a new issue