Puppet Function: simplib::module_metadata::assert
- Defined in:
- functions/module_metadata/assert.pp
- Function type:
- Puppet Language
Overview
Fails a compile if the client system is not compatible with the module’s ‘metadata.json`
15 16 17 18 19 20 21 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 |
# File 'functions/module_metadata/assert.pp', line 15
function simplib::module_metadata::assert (
String[1] $module_name,
Optional[Struct[{
enable => Optional[Boolean],
blacklist => Optional[Array[Variant[String[1], Hash[String[1], Variant[String[1], Array[String[1]]]]]]],
blacklist_validation => Optional[Struct[{
enable => Optional[Boolean],
options => Optional[Struct[{
release_match => Enum['none','full','major']
}]]
}]],
os_validation => Optional[Struct[{
enable => Optional[Boolean],
options => Optional[Struct[{
release_match => Enum['none','full','major']
}]]
}]]
}]] $options = simplib::lookup('simplib::assert_metadata::options', { 'default_value' => undef })
) {
$_default_options = {
'enable' => true,
'blacklist_validation' => {
'enable' => true
},
'os_validation' => {
'enable' => true
}
}
if $options {
$_options = deep_merge($_default_options, $options)
}
else {
$_options = $_default_options
}
if $_options['enable'] {
$_module_metadata = load_module_metadata($module_name)
if empty($_module_metadata) {
fail("Could not find metadata for module '${module_name}'")
}
if $_options['blacklist_validation']['enable'] and $_options['blacklist'] {
if simplib::module_metadata::os_blacklisted($_module_metadata, $_options['blacklist'], $_options['blacklist_validation']['options']) {
$_caller = simplib::caller()
fail("OS '${facts['os']['name']} ${facts['os']['release']['full']}' is not supported at '$_caller'")
}
}
if $_options['os_validation']['enable'] {
unless simplib::module_metadata::os_supported($_module_metadata, $_options['os_validation']['options']) {
fail("OS '${facts['os']['name']} ${facts['os']['release']['full']}' is not supported by '${module_name}'")
}
}
}
}
|