More statvfs info for mount facts rebase 12073 (#25454)

* Add more mount point statvfs info including sizes

Based on https://github.com/ansible/ansible/pull/12073

facts.utils.get_mount_size() now returns a dict of most
of the posix statvfs data, including block_size and inode
counts.

Update the facts.hardware classes that use get_mount_size() to
use the new info by mount_info.update(mount_statvfs_inof) to merge.

* add back unit tests for LinuxHardware mount/fs facts

* add test cases for facts.utils.get_mount_size
This commit is contained in:
Adrian Likins 2017-06-13 15:31:41 -04:00 committed by GitHub
parent 3bba43a487
commit 56b7483b85
10 changed files with 591 additions and 46 deletions

View file

@ -47,13 +47,24 @@ def get_file_lines(path):
def get_mount_size(mountpoint):
size_total = None
size_available = None
mount_size = {}
try:
statvfs_result = os.statvfs(mountpoint)
size_total = statvfs_result.f_frsize * statvfs_result.f_blocks
size_available = statvfs_result.f_frsize * (statvfs_result.f_bavail)
mount_size['size_total'] = statvfs_result.f_frsize * statvfs_result.f_blocks
mount_size['size_available'] = statvfs_result.f_frsize * (statvfs_result.f_bavail)
# Block total/available/used
mount_size['block_size'] = statvfs_result.f_bsize
mount_size['block_total'] = statvfs_result.f_blocks
mount_size['block_available'] = statvfs_result.f_bavail
mount_size['block_used'] = mount_size['block_total'] - mount_size['block_available']
# Inode total/available/used
mount_size['inode_total'] = statvfs_result.f_files
mount_size['inode_available'] = statvfs_result.f_favail
mount_size['inode_used'] = mount_size['inode_total'] - mount_size['inode_available']
except OSError:
pass
return size_total, size_available
return mount_size