Puppet Function: classification::validate_facts

Defined in:
functions/validate_facts.pp
Function type:
Puppet Language

Summary

Validate a hash of facts against trusted values calculated from the certname.

Overview

classification::validate_facts(Hash $untrusted_facts, Hash $calculated_facts, Array $fact_names)Array

Validate a hash of facts against trusted values calculated from the certname.

Examples:

$classification_calculated_trusted = $parsed_classification + {
  hostname => $hostname,
}

$classification_facts_to_validate = [
  'hostname',
  'version',
  'group',
  'function',
  'number',
  'number_string',
  'context',
  'stage',
]

$classification_fact_differences = classification::validate_facts(
  $facts['classification'],
  $classification_calculated_trusted,
  $classification_facts_to_validate,
)

Parameters:

  • untrusted_facts (Hash)

    A hash of untrusted facts

  • calculated_facts (Hash)

    A hash of trusted facts

  • fact_names (Array)

    An array of fact names to validate

Returns:

  • (Array)

    An array of strings documenting any facts that don’t match their trusted values



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'functions/validate_facts.pp', line 31

function classification::validate_facts(
  Hash $untrusted_facts,
  Hash $calculated_facts,
  Array $fact_names,
  ) >> Array {
  $differences = delete_undef_values($fact_names.map |$fact_name| {
    $untrusted_value = String($untrusted_facts[$fact_name])
    $trusted_value = String($calculated_facts[$fact_name])

    if $untrusted_value != $trusted_value {
      "    ${fact_name}: '${untrusted_value}' != '${trusted_value}'"
    } else {
      undef
    }
  })

  $differences
}