Call all the appropriate functions with the reply data received from RPC::Client
# File lib/mcollective/aggregate.rb, line 45 45: def call_functions(reply) 46: @functions.each do |function| 47: Log.debug("Calling aggregate function #{function} for result") 48: begin 49: function.process_result(reply[:data][function.output_name], reply) 50: rescue Exception => e 51: Log.error("Could not process aggregate function for '#{function.output_name}'. #{e.to_s}") 52: @failed << {:name => function.output_name, :type => :process_result} 53: @functions.delete(function) 54: end 55: end 56: end
Check if the function param is defined as an output for the action in the ddl
# File lib/mcollective/aggregate.rb, line 40 40: def contains_output?(output) 41: @ddl[:output].keys.include?(output) 42: end
Creates instances of the Aggregate functions and stores them in the function array. All aggregate call and summarize method calls operate on these function as a batch.
# File lib/mcollective/aggregate.rb, line 19 19: def create_functions 20: @ddl[:aggregate].each_with_index do |agg, i| 21: output = agg[:args][0] 22: 23: if contains_output?(output) 24: arguments = agg[:args][1] 25: format = (arguments.delete(:format) if arguments) || nil 26: begin 27: @functions << load_function(agg[:function]).new(output, arguments, format, @action) 28: rescue Exception => e 29: Log.error("Cannot create aggregate function '#{output}'. #{e.to_s}") 30: @failed << {:name => output, :type => :startup} 31: end 32: else 33: Log.error("Cannot create aggregate function '#{output}'. '#{output}' has not been specified as a valid ddl output.") 34: @failed << {:name => output, :type => :create} 35: end 36: end 37: end
Loads function from disk for use
# File lib/mcollective/aggregate.rb, line 76 76: def load_function(function_name) 77: function_name = function_name.to_s.capitalize 78: 79: PluginManager.loadclass("MCollective::Aggregate::#{function_name}") unless Aggregate.const_defined?(function_name) 80: Aggregate.const_get(function_name) 81: rescue Exception 82: raise "Aggregate function file '#{function_name.downcase}.rb' cannot be loaded" 83: end
Finalizes the function returning a result object
# File lib/mcollective/aggregate.rb, line 59 59: def summarize 60: summary = @functions.map do |function| 61: begin 62: function.summarize 63: rescue Exception => e 64: Log.error("Could not summarize aggregate result for '#{function.output_name}'. #{e.to_s}") 65: @failed << {:name => function.output_name, :type => :summarize} 66: nil 67: end 68: end 69: 70: summary.reject{|x| x.nil?}.sort do |x,y| 71: x.result[:output] <=> y.result[:output] 72: end 73: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.