X-Git-Url: https://review.fuel-infra.org/gitweb?a=blobdiff_plain;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 + + + + + + + + + + +
+ + + + + + + + + + +
ModuleMCollective::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 +

+ +
+ + +
+ +
+

Methods

+ +
+ const_missing   + discovered   + empty_filter?   + printrpc   + printrpcstats   + rpcclient   + rpcoptions   + stats   +
+
+ +
+ + + + +
+ +
+

Classes and Modules

+ + Class MCollective::RPC::ActionRunner
+Class MCollective::RPC::Agent
+Class MCollective::RPC::Audit
+Class MCollective::RPC::Client
+Class MCollective::RPC::Helpers
+Class MCollective::RPC::Progress
+Class MCollective::RPC::Reply
+Class MCollective::RPC::Request
+Class MCollective::RPC::Result
+Class MCollective::RPC::Stats
+ +
+ + + + + + + + +
+

Public Class methods

+ +
+ + + + +
+

[Source]

+
+
+     # 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. +

+

[Source]

+
+
+     # 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. +

+

[Source]

+
+
+     # File lib/mcollective/rpc.rb, line 99
+ 99:     def self.stats(stats)
+100:       @@stats = stats
+101:     end
+
+
+
+
+ +

Public Instance methods

+ +
+ + + + +
+

+Wrapper for MCollective::Util.empty_filter? +to make clients less fugly to write - ticket 18 +

+

[Source]

+
+
+     # 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. +

+

[Source]

+
+
+     # 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 +

+

[Source]

+
+
+     # 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. +

+

[Source]

+
+
+    # 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 +

+

[Source]

+
+
+    # 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
+
+
+
+
+ + +
+ + +
+ + +
+

[Validate]

+
+ + + \ No newline at end of file