class Object
Public Instance Methods
parser()
click to toggle source
# File lib/puppet/functions/query_nodes.rb, line 30 def parser @parser ||= PuppetDB::Parser.new end
puppetdb()
click to toggle source
# File lib/puppet/functions/query_nodes.rb, line 34 def puppetdb @uri ||= URI(Puppet::Util::Puppetdb.config.server_urls.first) @puppetdb ||= PuppetDB::Connection.new( @uri.host, @uri.port, @uri.scheme == 'https' ) end
puppetdb_lookup_key(key, options, context)
click to toggle source
# File lib/puppet/functions/puppetdb_lookup_key.rb, line 15 def puppetdb_lookup_key(key, options, context) return context.cached_value(key) if context.cache_has_key(key) if !key.end_with?('::_nodequery') && nodequery = call_function('lookup', "#{key}::_nodequery", 'merge' => 'first', 'default_value' => nil) # Support specifying the query in a few different ways query, fact, sort = case nodequery when Hash then [nodequery['query'], nodequery['fact'], nodequery['sort']] when Array then nodequery else [nodequery.to_s, nil, nil] end paramz = [query, fact].compact result = call_function('query_nodes', *paramz) result.sort! if sort context.cache(key, result) else context.not_found end end
query_facts(query, facts)
click to toggle source
# File lib/puppet/functions/query_facts.rb, line 28 def query_facts(query, facts) facts = facts.map { |fact| fact.match(/\./) ? fact.split('.') : fact } facts_for_query = facts.map { |fact| fact.is_a?(Array) ? fact.first : fact } uri = URI(Puppet::Util::Puppetdb.config.server_urls.first) puppetdb = PuppetDB::Connection.new(uri.host, uri.port, uri.scheme == 'https') parser = PuppetDB::Parser.new query = parser.facts_query query, facts_for_query if query.is_a? String parser.facts_hash(puppetdb.query(:facts, query, :extract => [:certname, :name, :value]), facts) end
query_nodes(query)
click to toggle source
# File lib/puppet/functions/query_nodes.rb, line 43 def query_nodes(query) query = parser.parse(query, :nodes) if query.is_a? String puppetdb.query(:nodes, query, :extract => :certname).collect do |n| n['certname'] end end
query_nodes_fact(query, fact)
click to toggle source
# File lib/puppet/functions/query_nodes.rb, line 50 def query_nodes_fact(query, fact) fact_for_query = fact.split('.').first query = parser.facts_query(query, [fact_for_query]) response = puppetdb.query(:facts, query, :extract => :value) if fact.split('.').size > 1 parser.extract_nested_fact(response, fact.split('.')[1..-1]) else response.collect { |f| f['value'] } end end