Skip to content

Commit dddbcb9

Browse files
committed
fix: there is no kmod-kvdo on EL10 and later
Cause: The blivet module adds `kmod-kvdo` as a required package on platforms that do not have the pacakge. Consequence: The package fails to be installed on EL10 and causes the role to fail with an error. Fix: Ensure `kmod-kvdo` is not added as a required package on EL10. Result: The storage role does not give an error when using VDO on EL10 and later. Signed-off-by: Rich Megginson <[email protected]>
1 parent e7e9a65 commit dddbcb9

File tree

4 files changed

+20
-5
lines changed

4 files changed

+20
-5
lines changed

library/blivet.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,11 @@
309309
when creating a disk volume (that is, a whole disk filesystem)
310310
type: dict
311311
default: {}
312+
uses_kmod_kvdo:
313+
description:
314+
- bool - set if platform uses_kmod_kvdo
315+
type: bool
316+
default: false
312317
author:
313318
- David Lehman (@dwlehman)
314319
'''
@@ -604,7 +609,9 @@ def required_packages(self):
604609
if self._volume.get('encryption'):
605610
packages.extend(get_format('luks').packages)
606611
if self._volume.get('compression') or self._volume.get('deduplication'):
607-
packages.extend(['vdo', 'kmod-kvdo'])
612+
packages.append('vdo')
613+
if uses_kmod_kvdo:
614+
packages.append('kmod-kvdo')
608615
return packages
609616

610617
@property
@@ -2376,7 +2383,9 @@ def run_module():
23762383
pool_defaults=dict(type='dict', required=False),
23772384
volume_defaults=dict(type='dict', required=False),
23782385
use_partitions=dict(type='bool', required=False),
2379-
diskvolume_mkfs_option_map=dict(type='dict', required=False, default={}))
2386+
diskvolume_mkfs_option_map=dict(type='dict', required=False, default={}),
2387+
uses_kmod_kvdo=dict(type='bool', required=False, default=False),
2388+
)
23802389

23812390
# comment this out if not generating module docs
23822391
# mod_arg_str = generate_module_doc(module_args)
@@ -2434,6 +2443,9 @@ def run_module():
24342443
if 'volume_defaults' in module.params:
24352444
volume_defaults = module.params['volume_defaults']
24362445

2446+
global uses_kmod_kvdo
2447+
uses_kmod_kvdo = module.params['uses_kmod_kvdo']
2448+
24372449
b = Blivet()
24382450
b.reset()
24392451
fstab = FSTab(b)

tasks/main-blivet.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
pool_defaults: "{{ storage_pool_defaults }}"
2828
volume_defaults: "{{ storage_volume_defaults }}"
2929
packages_only: true
30+
uses_kmod_kvdo: "{{ __storage_uses_kmod_kvdo }}"
3031
register: package_info
3132
when: storage_skip_checks is not defined or
3233
not "packages_installed" in storage_skip_checks
@@ -93,6 +94,7 @@
9394
# yamllint disable-line rule:line-length
9495
diskvolume_mkfs_option_map: "{{ __storage_blivet_diskvolume_mkfs_option_map | d(omit) }}"
9596
# yamllint enable rule:line-length
97+
uses_kmod_kvdo: "{{ __storage_uses_kmod_kvdo }}"
9698
register: blivet_output
9799

98100
- name: Workaround for udev issue on some platforms

tests/tests_create_lvmvdo_then_remove.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,6 @@
2121
set_fact:
2222
storage_skip_checks:
2323
- blivet_available
24-
- "{{ (lookup('env',
25-
'SYSTEM_ROLES_REMOVE_CLOUD_INIT') in ['', 'false']) |
26-
ternary('packages_installed', '') }}"
2724
- service_facts
2825

2926
- name: Gather package facts

vars/main.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ __storage_required_facts:
1313
__storage_required_facts_subsets: "{{ ['!all', '!min'] +
1414
__storage_required_facts }}"
1515

16+
# Set flag for blivet to know if there is a kmod-kvdo package
17+
__storage_uses_kmod_kvdo: "{{ __storage_is_rh_distro and
18+
ansible_facts['distribution_major_version'] | int < 10 }}"
19+
1620
# BEGIN - DO NOT EDIT THIS BLOCK - rh distros variables
1721
# Ansible distribution identifiers that the role treats like RHEL
1822
__storage_rh_distros:

0 commit comments

Comments
 (0)