diff --git a/filter_plugins/fallback_space_check.py b/filter_plugins/fallback_space_check.py new file mode 100755 index 0000000..bd68b37 --- /dev/null +++ b/filter_plugins/fallback_space_check.py @@ -0,0 +1,66 @@ +#!/usr/bin/python3 + +# bigboot_size: "{{ bigboot_size_expansion_mb[:-2] | int | get_block_size_up }}" + +class FilterModule (object): + def filters (self): + return { + 'bigboot_fallback_size': self.bigboot_fallback_size, + 'moo': self.moo, + } + + def bigboot_fallback_size(self, fallback_size): + return ('{}{}'.format(fallback_size, 'M')) + + def moo(self, a_variable): + a_new_variable = (str(a_variable) + '~~~~MOOOOOOOOOOOOOOOOOOOOOOOOO! => ' + '%s' % type(a_variable)) + return a_new_variable + + + +# import shutil +# import os + +# def check_mount_space(mount_path, min_space_gb=1): +# try: +# # Get disk usage statistics for the mount point +# disk_usage = shutil.disk_usage(mount_path) + +# # Convert bytes to gigabytes +# free_space_gb = disk_usage.free / (1024 ** 3) + +# print(f"Mount point: {mount_path}") +# print(f"Free space: {free_space_gb:.2f} GB") + +# if free_space_gb > min_space_gb: +# print("✓ More than 1GB available") +# return True +# else: +# print("✗ Less than 1GB available") +# return False + +# except Exception as e: +# print(f"Error checking {mount_path}: {str(e)}") +# return False + +# def check_all_mounts(): +# # Read mount points from /proc/mounts +# with open('/proc/mounts', 'r') as f: +# mounts = f.readlines() + +# results = [] +# for mount in mounts: +# # Split the mount line and get the mount point (second field) +# mount_point = mount.split()[1] + +# # Skip some virtual filesystems +# if mount_point.startswith(('/proc', '/sys', '/dev', '/run')): +# continue + +# results.append(check_mount_space(mount_point)) + +# return results + +# if __name__ == "__main__": +# print("Checking mount points for available space...") +# check_all_mounts() diff --git a/tasks/capture_lv_device_details.yml b/tasks/capture_lv_device_details.yml index 831d806..b2275ca 100644 --- a/tasks/capture_lv_device_details.yml +++ b/tasks/capture_lv_device_details.yml @@ -47,6 +47,10 @@ # that: bigboot_lv_info.size_available > bigboot_expansion_diff | int # fail_msg: There is not enough space available for LV shrinking. +- name: Copy size target to temporary variable + ansible.builtin.set_fact: + bigboot_size_target_fallback: "{{ bigboot_size_target | human_to_bytes }}" + - name: Check for available space and fallback if needed ansible.builtin.include_tasks: check_space_fallback.yml @@ -58,8 +62,8 @@ # ansible.builtin.debug: # msg: "{{ bigboot_lv_shrink_size | int | human_readable(unit='M') }}" -# - name: Kill the play -# ansible.builtin.meta: end_host +- name: Kill the play + ansible.builtin.meta: end_host - name: Capture logical volume name ansible.builtin.shell: diff --git a/tasks/check_space_fallback.yml b/tasks/check_space_fallback.yml index 0101e5f..5af957e 100644 --- a/tasks/check_space_fallback.yml +++ b/tasks/check_space_fallback.yml @@ -1,20 +1,12 @@ --- -- name: Debug bigboot_size_target - ansible.builtin.debug: - var: bigboot_size_target - -- name: Convert size target to bytes - ansible.builtin.set_fact: - bigboot_size_target: "{{ bigboot_size_target | human_to_bytes }}" - - name: Debug bigboot_expansion_diff ansible.builtin.debug: - msg: "{{ bigboot_expansion_diff }} + {{ bigboot_size_target }}" + msg: "{{ bigboot_expansion_diff }} + {{ bigboot_size_target_fallback }}" - name: Fail if /boot can't expand to at least 1GB ansible.builtin.assert: - that: bigboot_size_target | human_to_bytes > 1073741824 - fail_msg: "{{ bigboot_size_target | int | human_readable(unit='M') }} is less than the minimum of 1GB for /boot" + that: bigboot_size_target_fallback | human_to_bytes > 1073741824 + fail_msg: "{{ bigboot_size_target_fallback | int | human_readable(unit='M') }} is less than the minimum of 1GB for /boot" - name: Verify available space and re-check if needed block: @@ -26,12 +18,12 @@ rescue: - name: Decrement size target by .25G ansible.builtin.set_fact: - bigboot_size_target: "{{ bigboot_size_target | human_to_bytes - 262144000 }}" + bigboot_size_target_fallback: "{{ bigboot_size_target_fallback | human_to_bytes - 262144000 }}" - name: Update required expansion space ansible.builtin.set_fact: bigboot_expansion_diff: - "{{ bigboot_size_target | human_to_bytes - bigboot_boot_partsize | human_to_bytes }}" + "{{ bigboot_size_target_fallback | human_to_bytes - bigboot_boot_partsize | human_to_bytes }}" - name: Re-check disk space - RESCUE ansible.builtin.include_tasks: check_space_fallback.yml