class yum ( |
Boolean $clean_old_kernels = true, |
Boolean $keep_kernel_devel = false, |
Hash[String, Variant[String, Integer, Boolean, Hash[String, Variant[String, Integer, Boolean]]]] $config_options = { }, |
Optional[Hash[String, Optional[Hash[String, Variant[String, Integer, Boolean]]]]] $repos = {}, |
Array[String] $managed_repos = [], |
Boolean $manage_os_default_repos = false, |
Array[String] $os_default_repos = [], |
Array[String] $repo_exclusions = [], |
) { $module_metadata = load_module_metadata($module_name) |
$supported_operatingsystems = $module_metadata['operatingsystem_support'] |
$supported_os_names = $supported_operatingsystems.map |$os| { |
$os['operatingsystem'] |
} unless member($supported_os_names, $::os['name']) { |
fail("${::os['name']} not supported") |
} $_managed_repos = $manage_os_default_repos ? { |
true => $managed_repos + $os_default_repos, |
default => $managed_repos, |
} unless empty($_managed_repos) or empty($repos) { |
$_managed_repos_minus_exclusions = $_managed_repos - $repo_exclusions |
$normalized_repos = yum::bool2num_hash_recursive($repos) $normalized_repos.each |$yumrepo, $attributes| { |
if member($_managed_repos_minus_exclusions, $yumrepo) { |
Resource['yumrepo'] { |
$yumrepo: * => $attributes, |
} |
} |
} |
} unless empty($config_options) { |
if has_key($config_options, 'installonly_limit') { |
assert_type(Variant[Integer, Hash[String, Integer]], $config_options['installonly_limit']) |$expected, $actual| { |
fail("The value or ensure for `\$yum::config_options[installonly_limit]` must be an Integer, but it is not.") |
} |
} $_normalized_config_options = $config_options.map |$key, $attrs| { |
$_ensure = $attrs ? { |
Hash => $attrs[ensure], |
default => $attrs, |
} $_normalized_ensure = $_ensure ? { |
Boolean => Hash({ ensure => bool2num($_ensure) }), # lint:ignore:unquoted_string_in_selector |
default => Hash({ ensure => $_ensure }), # lint:ignore:unquoted_string_in_selector |
} $_normalized_attrs = $attrs ? { |
Hash => merge($attrs, $_normalized_ensure), |
default => $_normalized_ensure, |
} Hash({ $key => $_normalized_attrs }) |
}.reduce |$memo, $cfg_opt_hash| { |
merge($memo, $cfg_opt_hash) |
} $_normalized_config_options.each |$config, $attributes| { |
Resource['yum::config'] { |
$config: * => $attributes, |
} |
} |
} unless defined(Yum::Config['installonly_limit']) { |
yum::config { 'installonly_limit': ensure => '3' } |
} $_clean_old_kernels_subscribe = $clean_old_kernels ? { |
true => Yum::Config['installonly_limit'], |
default => undef, |
} # cleanup old kernels |
ensure_packages(['yum-utils']) $_real_installonly_limit = $config_options['installonly_limit'] ? { |
Variant[String, Integer] => $config_options['installonly_limit'], |
Hash => $config_options['installonly_limit']['ensure'], |
default => '3', |