From a017f0f61841f57bd868b11be8de8ba1d72d9637 Mon Sep 17 00:00:00 2001 From: David Lehman Date: Tue, 14 Jul 2020 18:03:35 -0400 Subject: [PATCH 1/3] Pass -F to mke2fs for whole disks in RHEL7. --- library/blivet.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/library/blivet.py b/library/blivet.py index 6541e415..7a663400 100644 --- a/library/blivet.py +++ b/library/blivet.py @@ -118,6 +118,7 @@ LIB_IMP_ERR = traceback.format_exc() from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.common import sys_info if BLIVET_PACKAGE: blivet_flags.debug = True @@ -450,6 +451,20 @@ def _get_device_id(self): def _type_check(self): return self._device.raw_device.is_disk + def _get_format(self): + fmt = super(BlivetDiskVolume, self)._get_format() + # pass -F to mke2fs on whole disks in RHEL7 + if self._volume['fs_type'] in ('ext2', 'ext3', 'ext4') and \ + sys_info.get_distribution().lower() in ('redhat', 'centos') and \ + sys_info.get_distribution_version().startswith('7.'): + if fmt.create_options: + fmt.create_options += " " + else: + fmt.create_options = "" + fmt.create_options += "-F" + + return fmt + def _create(self): self._reformat() From 2ac22b58eff9c57eedd841d3129b586ea22ab86f Mon Sep 17 00:00:00 2001 From: Pavel Cahyna Date: Thu, 20 Aug 2020 23:00:30 +0200 Subject: [PATCH 2/3] Generalize mkfs parameters: list them in vars --- library/blivet.py | 14 ++++++++------ tasks/main-blivet.yml | 1 + vars/CentOS_7.yml | 4 ++++ vars/RedHat_7.yml | 4 ++++ 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/library/blivet.py b/library/blivet.py index 7a663400..f83224bb 100644 --- a/library/blivet.py +++ b/library/blivet.py @@ -118,7 +118,6 @@ LIB_IMP_ERR = traceback.format_exc() from ansible.module_utils.basic import AnsibleModule -from ansible.module_utils.common import sys_info if BLIVET_PACKAGE: blivet_flags.debug = True @@ -454,14 +453,13 @@ def _type_check(self): def _get_format(self): fmt = super(BlivetDiskVolume, self)._get_format() # pass -F to mke2fs on whole disks in RHEL7 - if self._volume['fs_type'] in ('ext2', 'ext3', 'ext4') and \ - sys_info.get_distribution().lower() in ('redhat', 'centos') and \ - sys_info.get_distribution_version().startswith('7.'): + mkfs_options = mkfs_option_map.get(self._volume['fs_type']) + if mkfs_options: if fmt.create_options: fmt.create_options += " " else: fmt.create_options = "" - fmt.create_options += "-F" + fmt.create_options += mkfs_options return fmt @@ -1126,7 +1124,8 @@ def run_module(): packages_only=dict(type='bool', required=False, default=False), disklabel_type=dict(type='str', required=False, default=None), safe_mode=dict(type='bool', required=False, default=True), - use_partitions=dict(type='bool', required=False, default=True)) + use_partitions=dict(type='bool', required=False, default=True), + mkfs_option_map=dict(type='dict', required=False, default={})) # seed the result dict in the object result = dict( @@ -1162,6 +1161,9 @@ def run_module(): global safe_mode safe_mode = module.params['safe_mode'] + global mkfs_option_map + mkfs_option_map = module.params['mkfs_option_map'] + b = Blivet() b.reset() fstab = FSTab(b) diff --git a/tasks/main-blivet.yml b/tasks/main-blivet.yml index 0dc27ccd..fec3f4d9 100644 --- a/tasks/main-blivet.yml +++ b/tasks/main-blivet.yml @@ -108,6 +108,7 @@ use_partitions: "{{ storage_use_partitions }}" disklabel_type: "{{ storage_disklabel_type }}" safe_mode: "{{ storage_safe_mode }}" + mkfs_option_map: "{{ __storage_blivet_mkfs_option_map|default(omit) }}" register: blivet_output - debug: diff --git a/vars/CentOS_7.yml b/vars/CentOS_7.yml index af7ed4af..7c13da56 100644 --- a/vars/CentOS_7.yml +++ b/vars/CentOS_7.yml @@ -6,3 +6,7 @@ blivet_package_list: - libblockdev-lvm - libblockdev-mdraid - libblockdev-swap +__storage_blivet_mkfs_option_map: + ext2: '-F' + ext3: '-F' + ext4: '-F' diff --git a/vars/RedHat_7.yml b/vars/RedHat_7.yml index af7ed4af..7c13da56 100644 --- a/vars/RedHat_7.yml +++ b/vars/RedHat_7.yml @@ -6,3 +6,7 @@ blivet_package_list: - libblockdev-lvm - libblockdev-mdraid - libblockdev-swap +__storage_blivet_mkfs_option_map: + ext2: '-F' + ext3: '-F' + ext4: '-F' From c22e0c8c829603442bfbe451f02efdfc18b67be2 Mon Sep 17 00:00:00 2001 From: Pavel Cahyna Date: Fri, 21 Aug 2020 12:54:08 +0200 Subject: [PATCH 3/3] Rename the mkfs option map More descriptive name both for Ansible and Python variables, and add documentation --- library/blivet.py | 12 ++++++++---- tasks/main-blivet.yml | 2 +- vars/CentOS_7.yml | 3 ++- vars/RedHat_7.yml | 3 ++- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/library/blivet.py b/library/blivet.py index f83224bb..cb48e716 100644 --- a/library/blivet.py +++ b/library/blivet.py @@ -35,6 +35,10 @@ description: - boolean indicating that we should fail rather than implicitly/automatically removing devices or formatting + diskvolume_mkfs_option_map: + description: + - dict which maps filesystem names to additional mkfs options that should be used + when creating a disk volume (that is, a whole disk filesystem) author: - David Lehman (dlehman@redhat.com) @@ -453,7 +457,7 @@ def _type_check(self): def _get_format(self): fmt = super(BlivetDiskVolume, self)._get_format() # pass -F to mke2fs on whole disks in RHEL7 - mkfs_options = mkfs_option_map.get(self._volume['fs_type']) + mkfs_options = diskvolume_mkfs_option_map.get(self._volume['fs_type']) if mkfs_options: if fmt.create_options: fmt.create_options += " " @@ -1125,7 +1129,7 @@ def run_module(): disklabel_type=dict(type='str', required=False, default=None), safe_mode=dict(type='bool', required=False, default=True), use_partitions=dict(type='bool', required=False, default=True), - mkfs_option_map=dict(type='dict', required=False, default={})) + diskvolume_mkfs_option_map=dict(type='dict', required=False, default={})) # seed the result dict in the object result = dict( @@ -1161,8 +1165,8 @@ def run_module(): global safe_mode safe_mode = module.params['safe_mode'] - global mkfs_option_map - mkfs_option_map = module.params['mkfs_option_map'] + global diskvolume_mkfs_option_map + diskvolume_mkfs_option_map = module.params['diskvolume_mkfs_option_map'] b = Blivet() b.reset() diff --git a/tasks/main-blivet.yml b/tasks/main-blivet.yml index fec3f4d9..cdef16cb 100644 --- a/tasks/main-blivet.yml +++ b/tasks/main-blivet.yml @@ -108,7 +108,7 @@ use_partitions: "{{ storage_use_partitions }}" disklabel_type: "{{ storage_disklabel_type }}" safe_mode: "{{ storage_safe_mode }}" - mkfs_option_map: "{{ __storage_blivet_mkfs_option_map|default(omit) }}" + diskvolume_mkfs_option_map: "{{ __storage_blivet_diskvolume_mkfs_option_map|d(omit) }}" register: blivet_output - debug: diff --git a/vars/CentOS_7.yml b/vars/CentOS_7.yml index 7c13da56..f23e3d76 100644 --- a/vars/CentOS_7.yml +++ b/vars/CentOS_7.yml @@ -6,7 +6,8 @@ blivet_package_list: - libblockdev-lvm - libblockdev-mdraid - libblockdev-swap -__storage_blivet_mkfs_option_map: +# additional options for mkfs when creating a disk volume (whole disk fs) +__storage_blivet_diskvolume_mkfs_option_map: ext2: '-F' ext3: '-F' ext4: '-F' diff --git a/vars/RedHat_7.yml b/vars/RedHat_7.yml index 7c13da56..f23e3d76 100644 --- a/vars/RedHat_7.yml +++ b/vars/RedHat_7.yml @@ -6,7 +6,8 @@ blivet_package_list: - libblockdev-lvm - libblockdev-mdraid - libblockdev-swap -__storage_blivet_mkfs_option_map: +# additional options for mkfs when creating a disk volume (whole disk fs) +__storage_blivet_diskvolume_mkfs_option_map: ext2: '-F' ext3: '-F' ext4: '-F'