Class: MCollective::Application::Facts

Inherits:
MCollective::Application show all
Defined in:
lib/mcollective/application/facts.rb

Instance Method Summary collapse

Methods inherited from MCollective::Application

[], []=, #application_cli_arguments, #application_description, #application_failure, #application_options, application_options, #application_parse_options, #application_usage, #clioptions, #configuration, description, #disconnect, exclude_argument_sections, #halt, #halt_code, #help, intialize_application_options, option, #options, #rpcclient, #run, usage, #validate_cli_options, #validate_option

Methods included from RPC

const_missing, discovered, #empty_filter?, #printrpc, #printrpcstats, #rpcclient, #rpcoptions, stats

Instance Method Details

#mainObject



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/mcollective/application/facts.rb', line 31

def main
  rpcutil = rpcclient("rpcutil")
  rpcutil.progress = false

  facts = {}

  rpcutil.get_fact(:fact => configuration[:fact]) do |resp|
    begin
      value = resp[:body][:data][:value]
      if value
        if facts.include?(value)
          facts[value] << resp[:senderid]
        else
          facts[value] = [ resp[:senderid] ]
        end
      end
    rescue Exception => e
      STDERR.puts "Could not parse facts for #{resp[:senderid]}: #{e.class}: #{e}"
    end
  end

  if facts.empty?
    puts "No values found for fact #{configuration[:fact]}\n"
  else
    show_single_fact_report(configuration[:fact], facts, options[:verbose])
  end

  printrpcstats

  halt rpcutil.stats
end

#post_option_parser(configuration) ⇒ Object



4
5
6
# File 'lib/mcollective/application/facts.rb', line 4

def post_option_parser(configuration)
  configuration[:fact] = ARGV.shift if ARGV.size > 0
end

#show_single_fact_report(fact, facts, verbose = false) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/mcollective/application/facts.rb', line 12

def show_single_fact_report(fact, facts, verbose=false)
  puts("Report for fact: #{fact}\n\n")

  field_size = MCollective::Util.field_size(facts.keys)
  facts.keys.sort.each do |k|
    printf("        %-#{field_size}s found %d times\n", k, facts[k].size)

    if verbose
      puts

      facts[k].sort.each do |f|
        puts("            #{f}")
      end

      puts
    end
  end
end

#validate_configuration(configuration) ⇒ Object



8
9
10
# File 'lib/mcollective/application/facts.rb', line 8

def validate_configuration(configuration)
  raise "Please specify a fact to report for" unless configuration.include?(:fact)
end