def method_missing(method_name, *args, &block)
args = args[0]
args = {} if args.nil?
action = method_name.to_s
@stats.reset
validate_request(action, args)
batch_mode = args.include?(:batch_size) || @batch_mode
batch_size = args.delete(:batch_size) || @batch_size
batch_sleep_time = args.delete(:batch_sleep_time) || @batch_sleep_time
batch_mode = (batch_mode && Integer(batch_size) > 0)
if @limit_targets
target_nodes = pick_nodes_from_discovered(@limit_targets)
Log.debug("Picked #{target_nodes.join(',')} as limited target(s)")
custom_request(action, args, target_nodes, {"identity" => /^(#{target_nodes.join('|')})$/}, &block)
elsif batch_mode
call_agent_batched(action, args, options, batch_size, batch_sleep_time, &block)
else
call_agent(action, args, options, :auto, &block)
end
end