Class | MCollective::Application::Rpc |
In: |
plugins/mcollective/application/rpc.rb
|
Parent: | MCollective::Application |
As we‘re taking arguments on the command line we need a way to input booleans, true on the cli is a string so this method will take the ddl, find all arguments that are supposed to be boolean and if they are the strings "true"/"yes" or "false"/"no" turn them into the matching boolean
# File plugins/mcollective/application/rpc.rb, line 68 68: def booleanish_to_boolean(arguments, ddl) 69: arguments.keys.each do |key| 70: if ddl[:input].keys.include?(key) 71: if ddl[:input][key][:type] == :boolean 72: arguments[key] = true if arguments[key] == "true" 73: arguments[key] = true if arguments[key] == "yes" 74: arguments[key] = true if arguments[key] == "1" 75: arguments[key] = false if arguments[key] == "false" 76: arguments[key] = false if arguments[key] == "no" 77: arguments[key] = false if arguments[key] == "0" 78: end 79: end 80: end 81: rescue 82: true 83: end
# File plugins/mcollective/application/rpc.rb, line 85 85: def main 86: if configuration[:no_results] 87: configuration[:arguments][:process_results] = false 88: 89: mc = rpcclient(configuration[:agent]) 90: 91: booleanish_to_boolean(configuration[:arguments], mc.ddl.action_interface(configuration[:action])) unless mc.ddl.nil? 92: 93: mc.agent_filter(configuration[:agent]) 94: 95: puts "Request sent with id: " + mc.send(configuration[:action], configuration[:arguments]) 96: else 97: mc = rpcclient(configuration[:agent]) 98: 99: booleanish_to_boolean(configuration[:arguments], mc.ddl.action_interface(configuration[:action])) unless mc.ddl.nil? 100: 101: mc.agent_filter(configuration[:agent]) 102: mc.discover :verbose => true 103: 104: printrpc mc.send(configuration[:action], configuration[:arguments]) 105: 106: printrpcstats :caption => "#{configuration[:agent]}##{configuration[:action]} call stats" 107: end 108: end
# File plugins/mcollective/application/rpc.rb, line 28 28: def post_option_parser(configuration) 29: # handle the alternative format that optparse cant parse 30: unless (configuration.include?(:agent) && configuration.include?(:action)) 31: if ARGV.length >= 2 32: configuration[:agent] = ARGV[0] 33: ARGV.delete_at(0) 34: 35: configuration[:action] = ARGV[0] 36: ARGV.delete_at(0) 37: 38: ARGV.each do |v| 39: if v =~ /^(.+?)=(.+)$/ 40: configuration[:arguments] = [] unless configuration.include?(:arguments) 41: configuration[:arguments] << v 42: else 43: STDERR.puts("Could not parse --arg #{v}") 44: end 45: end 46: else 47: STDERR.puts("No agent, action and arguments specified") 48: exit! 49: end 50: end 51: 52: # convert arguments to symbols for keys to comply with simplerpc conventions 53: args = configuration[:arguments].clone 54: configuration[:arguments] = {} 55: 56: args.each do |v| 57: if v =~ /^(.+?)=(.+)$/ 58: configuration[:arguments][$1.to_sym] = $2 59: end 60: end 61: end