Method: Bolt::PuppetDB::Client#fact_values

Defined in:
lib/bolt/puppetdb/client.rb

#fact_values(certnames = [], facts = []) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/bolt/puppetdb/client.rb', line 47

def fact_values(certnames = [], facts = [])
  return {} if certnames.empty? || facts.empty?

  certnames.uniq!
  name_query = certnames.map { |c| ["=", "certname", c] }
  name_query.insert(0, "or")

  facts_query = facts.map { |f| ["=", "path", f] }
  facts_query.insert(0, "or")

  query = ['and', name_query, facts_query]

  @logger.debug("Querying certnames")
  result = make_query(query, 'fact-contents')
  result.map! { |h| h.delete_if { |k, _v| %w[environment name].include?(k) } }
  result.group_by { |c| c['certname'] }
end