X-Git-Url: https://review.fuel-infra.org/gitweb?a=blobdiff_plain;ds=sidebyside;f=doc%2Fclasses%2FMCollective%2FRPC.html;fp=doc%2Fclasses%2FMCollective%2FRPC.html;h=23c2f741692ec70af8d4c5023b8df5433965c4a5;hb=d1f1649ba43c5cbc43c4beb2380096ba051d646a;hp=0000000000000000000000000000000000000000;hpb=8a3fe7daeecccf43dd71c59371c5005400d35101;p=packages%2Fprecise%2Fmcollective.git diff --git a/doc/classes/MCollective/RPC.html b/doc/classes/MCollective/RPC.html new file mode 100644 index 0000000..23c2f74 --- /dev/null +++ b/doc/classes/MCollective/RPC.html @@ -0,0 +1,539 @@ + + + + +
+Module | +MCollective::RPC | +
In: | +
+
+ lib/mcollective/rpc.rb
+
+ + + lib/mcollective/rpc/actionrunner.rb + + + + lib/mcollective/rpc/reply.rb + + + + lib/mcollective/rpc/progress.rb + + + + lib/mcollective/rpc/agent.rb + + + + lib/mcollective/rpc/request.rb + + + + lib/mcollective/rpc/audit.rb + + + + lib/mcollective/rpc/stats.rb + + + + lib/mcollective/rpc/result.rb + + + + lib/mcollective/rpc/client.rb + + + + lib/mcollective/rpc/helpers.rb + + + |
+
+Toolset to create a standard interface of client and agent using an RPC metaphor, standard compliant agents will make it +easier to create generic clients like web interfaces etc +
+ ++ # File lib/mcollective/rpc.rb, line 175 +175: def self.const_missing(const_name) +176: super unless const_name == :DDL +177: +178: Log.warn("MCollective::RPC::DDL is deprecatd, please use MCollective::DDL instead") +179: MCollective::DDL +180: end ++
+means for other classes to drop discovered +hosts into this module its a bit hacky but needed so that the mixin methods +like printrpcstats can easily get access to +it without users having to pass it around in params. +
+ ++ # File lib/mcollective/rpc.rb, line 107 +107: def self.discovered(discovered) +108: @@discovered = discovered +109: end ++
+means for other classes to drop stats into +this module its a bit hacky but needed so that the mixin methods like printrpcstats can easily get access to it +without users having to pass it around in params. +
+ ++ # File lib/mcollective/rpc.rb, line 99 + 99: def self.stats(stats) +100: @@stats = stats +101: end ++
+Wrapper for MCollective::Util.empty_filter? +to make clients less fugly to write - ticket 18 +
+ ++ # File lib/mcollective/rpc.rb, line 167 +167: def empty_filter?(options) +168: if options.include?(:filter) +169: Util.empty_filter?(options[:filter]) +170: else +171: Util.empty_filter?(options) +172: end +173: end ++
+Prints the result of an RPC call. +
++In the default quiet mode - no flattening or verbose - only results that +produce an error will be printed +
++To get details of each result run with the -v command line option. +
+ ++ # File lib/mcollective/rpc.rb, line 146 +146: def printrpc(result, flags = {}) +147: verbose = @options[:verbose] rescue verbose = false +148: verbose = flags[:verbose] || verbose +149: flatten = flags[:flatten] || false +150: format = @options[:output_format] +151: forced_mode = @options[:force_display_mode] || false +152: +153: result_text = Helpers.rpcresults(result, {:verbose => verbose, :flatten => flatten, :format => format, :force_display_mode => forced_mode}) +154: +155: if result.is_a?(Array) && format == :console +156: puts "\n%s\n" % [ result_text ] +157: else +158: # when we get just one result to print dont pad them all with +159: # blank spaces etc, just print the individual result with no +160: # padding +161: puts result_text unless result_text == "" +162: end +163: end ++
+Prints stats, requires stats to be saved from elsewhere using the MCollective::RPC.stats method. +
++If you‘ve passed -v on the command line a detailed stat block will be +printed, else just a one liner. +
++You can pass flags into it: +
++ printrpcstats :caption => "Foo", :summarize => true ++
+This will use "Foo" as the caption to the stats in verbose mode and print out any +aggregate summary information if present +
+ ++ # File lib/mcollective/rpc.rb, line 123 +123: def printrpcstats(flags={}) +124: return unless @options[:output_format] == :console +125: +126: flags = {:summarize => false, :caption => "rpc stats"}.merge(flags) +127: +128: verbose = @options[:verbose] rescue verbose = false +129: +130: begin +131: stats = @@stats +132: rescue +133: puts("no stats to display") +134: return +135: end +136: +137: puts stats.report(flags[:caption], flags[:summarize], verbose) +138: end ++
+Wrapper to create clients, supposed to be used as a mixin: +
++include MCollective::RPC +
++exim = rpcclient("exim") printrpc exim.mailq +
++or +
++rpcclient("exim") do |exim| +
++ printrpc exim.mailq ++
+end +
++It will take a few flags: +
++ :configfile => "etc/client.cfg" + :options => options + :exit_on_failure => true ++
+Options would be a build up options hash from the Optionparser you can use the rpcoptions helper to create this +
++:exit_on_failure is true by default, and causes the application to exit if +there is a failure constructing the RPC client. Set +this flag to false to cause an Exception to be raised instead. +
+ ++ # File lib/mcollective/rpc.rb, line 60 +60: def rpcclient(agent, flags = {}) +61: configfile = flags[:configfile] || "/etc/mcollective/client.cfg" +62: options = flags[:options] || nil +63: +64: if flags.key?(:exit_on_failure) +65: exit_on_failure = flags[:exit_on_failure] +66: else +67: # We exit on failure by default for CLI-friendliness +68: exit_on_failure = true +69: end +70: +71: begin +72: if options +73: rpc = Client.new(agent, :configfile => options[:config], :options => options) +74: @options = rpc.options +75: else +76: rpc = Client.new(agent, :configfile => configfile) +77: @options = rpc.options +78: end +79: rescue Exception => e +80: if exit_on_failure +81: puts("Could not create RPC client: #{e}") +82: exit! +83: else +84: raise e +85: end +86: end +87: +88: if block_given? +89: yield(rpc) +90: else +91: return rpc +92: end +93: end ++
+Creates a standard options hash, pass in a block to add extra headings etc +see Optionparser +
+ ++ # File lib/mcollective/rpc.rb, line 21 +21: def rpcoptions +22: oparser = MCollective::Optionparser.new({:verbose => false, :progress_bar => true}, "filter") +23: +24: options = oparser.parse do |parser, options| +25: if block_given? +26: yield(parser, options) +27: end +28: +29: Helpers.add_simplerpc_options(parser, options) +30: end +31: +32: return options +33: end ++