Puppet Function: simplib::module_metadata::os_supported
- Defined in:
- functions/module_metadata/os_supported.pp
- Function type:
- Puppet Language
Overview
Returns whether or not the passed module is supported per the module’s metadata.json.
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'functions/module_metadata/os_supported.pp', line 22
function simplib::module_metadata::os_supported (
Hash $module_metadata,
Optional[Struct[{
release_match => Enum['none','full','major']
}]] $options = undef
) >> Boolean {
$_default_options = { 'release_match' => 'none' }
if $options {
$_options = deep_merge($_default_options, $options)
}
else {
$_options = $_default_options
}
if !$module_metadata['operatingsystem_support'] or empty($module_metadata['operatingsystem_support']) {
debug("'operatingsystem_support' was not found in module '${module_name}'")
$result = true
}
unless ($facts['os']['name'] in $module_metadata['operatingsystem_support'].map |Simplib::Puppet::Metadata::OS_support $os_info| { $os_info['operatingsystem'] }) {
$result = false
}
unless defined('$result') {
$result = $module_metadata['operatingsystem_support'].reduce(true) |$memo, Simplib::Puppet::Metadata::OS_support $os_info| {
if $os_info['operatingsystem'] == $facts['os']['name'] {
$memo and case $_options['release_match'] {
'full': {
!$os_info['operatingsystemrelease'] or ($facts['os']['release']['full'] in $os_info['operatingsystemrelease'])
}
'major': {
if $os_info['operatingsystemrelease'] {
$_os_major_releases = $os_info['operatingsystemrelease'].map |$os_release| {
split($os_release, '\.')[0]
}
$facts['os']['release']['major'] in $_os_major_releases
}
else { true }
}
default: { true }
}
}
else { true and $memo }
}
}
unless defined('$result') { $result = true }
$result
}
|