Method: PuppetDB::ParserHelper#facts_query

Defined in:
lib/puppetdb/parser_helper.rb

#facts_query(query, facts = nil) ⇒ Array

Create a query for facts on nodes matching a query string

Parameters:

  • query (String)

    the query string to parse

  • facts (Array) (defaults to: nil)

    an array of facts to get

Returns:

  • (Array)

    the PuppetDB query



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/puppetdb/parser_helper.rb', line 20

def facts_query(query, facts = nil)
  nodequery = parse(query, :facts)
  if facts.nil?
    nodequery
  else
    factquery = ['or', *facts.collect { |f|
       if (f =~ /^\/(.+)\/$/)
          ['~', 'name', f.scan(/^\/(.+)\/$/).last.first]
       else
          ['=', 'name', f]
       end
    }]
    if nodequery
      ['and', nodequery, factquery]
    else
      factquery
    end
  end
end