Puppet Function: simplib::module_metadata::assert

Defined in:
functions/module_metadata/assert.pp
Function type:
Puppet Language

Overview

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 }))None

Fails a compile if the client system is not compatible with the module’s ‘metadata.json`

Parameters:

  • module_name (String[1])

    The name of the module that should be checked

  • options (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'] }]] }]] }]]) (defaults to: simplib::lookup('simplib::assert_metadata::options', { 'default_value' => undef }))

    Options to control the assertion behavior

    @see $simplib::module_metadata::os_blacklist::options @see $simplib::module_metadata::os_supported::options

Returns:

  • (None)


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}'")
      }
    }
  }
}