Class: OctocatalogDiff::Facts::JSON

Inherits:
Object
  • Object
show all
Defined in:
lib/octocatalog-diff/facts/json.rb

Overview

Deal with facts in JSON files

Class Method Summary collapse

Class Method Details

.fact_retriever(options = {}, node = '') ⇒ Hash

Returns Facts.

Parameters:

  • options (Hash) (defaults to: {})

    Options hash specifically for this fact type.

    • :fact_file_string [String] => Fact data as a string

  • node (String) (defaults to: '')

    Node name (overrides node name from fact data)

Returns:

  • (Hash)

    Facts


15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/octocatalog-diff/facts/json.rb', line 15

def self.fact_retriever(options = {}, node = '')
  facts = ::JSON.parse(options.fetch(:fact_file_string))

  if facts.keys.include?('name') && facts.keys.include?('values') && facts['values'].is_a?(Hash)
    # If you saved the output of something like
    # `puppet facts find $(hostname)` the structure will already be a
    # {'name' => <fqdn>, 'values' => <hash of facts>}. We do nothing
    # here because we don't want to double-encode.
  else
    facts = { 'name' => node, 'values' => facts }
  end

  facts['name'] = node unless node.empty?
  facts['name'] = facts['values'].fetch('fqdn', 'unknown.node') if facts['name'].empty?
  facts
end