class MCollective::Application::Facts

Public Instance Methods

main() click to toggle source
   # File lib/mcollective/application/facts.rb
31 def main
32   rpcutil = rpcclient("rpcutil")
33   rpcutil.progress = false
34 
35   facts = {}
36 
37   rpcutil.get_fact(:fact => configuration[:fact]) do |resp|
38     begin
39       value = resp[:body][:data][:value]
40       if value
41         if facts.include?(value)
42           facts[value] << resp[:senderid]
43         else
44           facts[value] = [ resp[:senderid] ]
45         end
46       end
47     rescue Exception => e
48       STDERR.puts "Could not parse facts for #{resp[:senderid]}: #{e.class}: #{e}"
49     end
50   end
51 
52   if facts.empty?
53     puts "No values found for fact #{configuration[:fact]}\n"
54   else
55     show_single_fact_report(configuration[:fact], facts, options[:verbose])
56   end
57 
58   printrpcstats
59 
60   halt rpcutil.stats
61 end
post_option_parser(configuration) click to toggle source
  # File lib/mcollective/application/facts.rb
4 def post_option_parser(configuration)
5   configuration[:fact] = ARGV.shift if ARGV.size > 0
6 end
show_single_fact_report(fact, facts, verbose=false) click to toggle source
   # File lib/mcollective/application/facts.rb
12 def show_single_fact_report(fact, facts, verbose=false)
13   puts("Report for fact: #{fact}\n\n")
14 
15   field_size = MCollective::Util.field_size(facts.keys)
16   facts.keys.sort.each do |k|
17     printf("        %-#{field_size}s found %d times\n", k, facts[k].size)
18 
19     if verbose
20       puts
21 
22       facts[k].sort.each do |f|
23         puts("            #{f}")
24       end
25 
26       puts
27     end
28   end
29 end
validate_configuration(configuration) click to toggle source
   # File lib/mcollective/application/facts.rb
 8 def validate_configuration(configuration)
 9   raise "Please specify a fact to report for" unless configuration.include?(:fact)
10 end