Sha256: 311172edf2aa369e3b1b744edcfeb4a6bb757e30915cf5b4dba4be76e51c31c6
Contents?: true
Size: 1.68 KB
Versions: 3
Compression:
Stored size: 1.68 KB
Contents
class MCollective::Application::Facts<MCollective::Application description "Reports on usage for a specific fact" def post_option_parser(configuration) configuration[:fact] = ARGV.shift if ARGV.size > 0 end def validate_configuration(configuration) raise "Please specify a fact to report for" unless configuration.include?(:fact) end def show_single_fact_report(fact, facts, verbose=false) puts("Report for fact: #{fact}\n\n") facts = stringify_facts_hash(facts) 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 def stringify_facts_hash(facts) res = Hash.new([]) facts.each { |k, v| res[k.to_s] += v } res end def main rpcutil = rpcclient("rpcutil") rpcutil.progress = false facts = {} rpcutil.get_fact(:fact => configuration[:fact]) do |resp| begin value = resp[:body][:data][:value].to_s if resp[:body][:data].include?(: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 end
Version data entries
3 entries across 3 versions & 1 rubygems