Update version according to OSCI-856
[packages/precise/mcollective.git] / doc / classes / MCollective / RPC.html
1 <?xml version="1.0" encoding="iso-8859-1"?>
2 <!DOCTYPE html 
3      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
6 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7 <head>
8   <title>Module: MCollective::RPC</title>
9   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10   <meta http-equiv="Content-Script-Type" content="text/javascript" />
11   <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
12   <script type="text/javascript">
13   // <![CDATA[
14
15   function popupCode( url ) {
16     window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17   }
18
19   function toggleCode( id ) {
20     if ( document.getElementById )
21       elem = document.getElementById( id );
22     else if ( document.all )
23       elem = eval( "document.all." + id );
24     else
25       return false;
26
27     elemStyle = elem.style;
28     
29     if ( elemStyle.display != "block" ) {
30       elemStyle.display = "block"
31     } else {
32       elemStyle.display = "none"
33     }
34
35     return true;
36   }
37   
38   // Make codeblocks hidden by default
39   document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40   
41   // ]]>
42   </script>
43
44 </head>
45 <body>
46
47
48
49     <div id="classHeader">
50         <table class="header-table">
51         <tr class="top-aligned-row">
52           <td><strong>Module</strong></td>
53           <td class="class-name-in-header">MCollective::RPC</td>
54         </tr>
55         <tr class="top-aligned-row">
56             <td><strong>In:</strong></td>
57             <td>
58                 <a href="../../files/lib/mcollective/rpc_rb.html">
59                 lib/mcollective/rpc.rb
60                 </a>
61         <br />
62                 <a href="../../files/lib/mcollective/rpc/actionrunner_rb.html">
63                 lib/mcollective/rpc/actionrunner.rb
64                 </a>
65         <br />
66                 <a href="../../files/lib/mcollective/rpc/reply_rb.html">
67                 lib/mcollective/rpc/reply.rb
68                 </a>
69         <br />
70                 <a href="../../files/lib/mcollective/rpc/progress_rb.html">
71                 lib/mcollective/rpc/progress.rb
72                 </a>
73         <br />
74                 <a href="../../files/lib/mcollective/rpc/agent_rb.html">
75                 lib/mcollective/rpc/agent.rb
76                 </a>
77         <br />
78                 <a href="../../files/lib/mcollective/rpc/request_rb.html">
79                 lib/mcollective/rpc/request.rb
80                 </a>
81         <br />
82                 <a href="../../files/lib/mcollective/rpc/audit_rb.html">
83                 lib/mcollective/rpc/audit.rb
84                 </a>
85         <br />
86                 <a href="../../files/lib/mcollective/rpc/stats_rb.html">
87                 lib/mcollective/rpc/stats.rb
88                 </a>
89         <br />
90                 <a href="../../files/lib/mcollective/rpc/result_rb.html">
91                 lib/mcollective/rpc/result.rb
92                 </a>
93         <br />
94                 <a href="../../files/lib/mcollective/rpc/client_rb.html">
95                 lib/mcollective/rpc/client.rb
96                 </a>
97         <br />
98                 <a href="../../files/lib/mcollective/rpc/helpers_rb.html">
99                 lib/mcollective/rpc/helpers.rb
100                 </a>
101         <br />
102             </td>
103         </tr>
104
105         </table>
106     </div>
107   <!-- banner header -->
108
109   <div id="bodyContent">
110
111
112
113   <div id="contextContent">
114
115     <div id="description">
116       <p>
117 Toolset to create a standard interface of client and agent using an <a
118 href="RPC.html">RPC</a> metaphor, standard compliant agents will make it
119 easier to create generic clients like web interfaces etc
120 </p>
121
122     </div>
123
124
125    </div>
126
127     <div id="method-list">
128       <h3 class="section-bar">Methods</h3>
129
130       <div class="name-list">
131       <a href="#M000043">const_missing</a>&nbsp;&nbsp;
132       <a href="#M000039">discovered</a>&nbsp;&nbsp;
133       <a href="#M000042">empty_filter?</a>&nbsp;&nbsp;
134       <a href="#M000041">printrpc</a>&nbsp;&nbsp;
135       <a href="#M000040">printrpcstats</a>&nbsp;&nbsp;
136       <a href="#M000037">rpcclient</a>&nbsp;&nbsp;
137       <a href="#M000036">rpcoptions</a>&nbsp;&nbsp;
138       <a href="#M000038">stats</a>&nbsp;&nbsp;
139       </div>
140     </div>
141
142   </div>
143
144
145     <!-- if includes -->
146
147     <div id="section">
148
149     <div id="class-list">
150       <h3 class="section-bar">Classes and Modules</h3>
151
152       Class <a href="RPC/ActionRunner.html" class="link">MCollective::RPC::ActionRunner</a><br />
153 Class <a href="RPC/Agent.html" class="link">MCollective::RPC::Agent</a><br />
154 Class <a href="RPC/Audit.html" class="link">MCollective::RPC::Audit</a><br />
155 Class <a href="RPC/Client.html" class="link">MCollective::RPC::Client</a><br />
156 Class <a href="RPC/Helpers.html" class="link">MCollective::RPC::Helpers</a><br />
157 Class <a href="RPC/Progress.html" class="link">MCollective::RPC::Progress</a><br />
158 Class <a href="RPC/Reply.html" class="link">MCollective::RPC::Reply</a><br />
159 Class <a href="RPC/Request.html" class="link">MCollective::RPC::Request</a><br />
160 Class <a href="RPC/Result.html" class="link">MCollective::RPC::Result</a><br />
161 Class <a href="RPC/Stats.html" class="link">MCollective::RPC::Stats</a><br />
162
163     </div>
164
165
166
167
168       
169
170
171     <!-- if method_list -->
172     <div id="methods">
173       <h3 class="section-bar">Public Class methods</h3>
174
175       <div id="method-M000043" class="method-detail">
176         <a name="M000043"></a>
177
178         <div class="method-heading">
179           <a href="#M000043" class="method-signature">
180           <span class="method-name">const_missing</span><span class="method-args">(const_name)</span>
181           </a>
182         </div>
183       
184         <div class="method-description">
185           <p><a class="source-toggle" href="#"
186             onclick="toggleCode('M000043-source');return false;">[Source]</a></p>
187           <div class="method-source-code" id="M000043-source">
188 <pre>
189      <span class="ruby-comment cmt"># File lib/mcollective/rpc.rb, line 175</span>
190 175:     <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">const_missing</span>(<span class="ruby-identifier">const_name</span>)
191 176:       <span class="ruby-keyword kw">super</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">const_name</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:DDL</span>
192 177: 
193 178:       <span class="ruby-constant">Log</span>.<span class="ruby-identifier">warn</span>(<span class="ruby-value str">&quot;MCollective::RPC::DDL is deprecatd, please use MCollective::DDL instead&quot;</span>)
194 179:       <span class="ruby-constant">MCollective</span><span class="ruby-operator">::</span><span class="ruby-constant">DDL</span>
195 180:     <span class="ruby-keyword kw">end</span>
196 </pre>
197           </div>
198         </div>
199       </div>
200
201       <div id="method-M000039" class="method-detail">
202         <a name="M000039"></a>
203
204         <div class="method-heading">
205           <a href="#M000039" class="method-signature">
206           <span class="method-name">discovered</span><span class="method-args">(discovered)</span>
207           </a>
208         </div>
209       
210         <div class="method-description">
211           <p>
212 means for other classes to drop <a href="RPC.html#M000039">discovered</a>
213 hosts into this module its a bit hacky but needed so that the mixin methods
214 like <a href="RPC.html#M000040">printrpcstats</a> can easily get access to
215 it without users having to pass it around in params.
216 </p>
217           <p><a class="source-toggle" href="#"
218             onclick="toggleCode('M000039-source');return false;">[Source]</a></p>
219           <div class="method-source-code" id="M000039-source">
220 <pre>
221      <span class="ruby-comment cmt"># File lib/mcollective/rpc.rb, line 107</span>
222 107:     <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">discovered</span>(<span class="ruby-identifier">discovered</span>)
223 108:       <span class="ruby-ivar">@@discovered</span> = <span class="ruby-identifier">discovered</span>
224 109:     <span class="ruby-keyword kw">end</span>
225 </pre>
226           </div>
227         </div>
228       </div>
229
230       <div id="method-M000038" class="method-detail">
231         <a name="M000038"></a>
232
233         <div class="method-heading">
234           <a href="#M000038" class="method-signature">
235           <span class="method-name">stats</span><span class="method-args">(stats)</span>
236           </a>
237         </div>
238       
239         <div class="method-description">
240           <p>
241 means for other classes to drop <a href="RPC.html#M000038">stats</a> into
242 this module its a bit hacky but needed so that the mixin methods like <a
243 href="RPC.html#M000040">printrpcstats</a> can easily get access to it
244 without users having to pass it around in params.
245 </p>
246           <p><a class="source-toggle" href="#"
247             onclick="toggleCode('M000038-source');return false;">[Source]</a></p>
248           <div class="method-source-code" id="M000038-source">
249 <pre>
250      <span class="ruby-comment cmt"># File lib/mcollective/rpc.rb, line 99</span>
251  99:     <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">stats</span>(<span class="ruby-identifier">stats</span>)
252 100:       <span class="ruby-ivar">@@stats</span> = <span class="ruby-identifier">stats</span>
253 101:     <span class="ruby-keyword kw">end</span>
254 </pre>
255           </div>
256         </div>
257       </div>
258
259       <h3 class="section-bar">Public Instance methods</h3>
260
261       <div id="method-M000042" class="method-detail">
262         <a name="M000042"></a>
263
264         <div class="method-heading">
265           <a href="#M000042" class="method-signature">
266           <span class="method-name">empty_filter?</span><span class="method-args">(options)</span>
267           </a>
268         </div>
269       
270         <div class="method-description">
271           <p>
272 Wrapper for <a href="Util.html#M000288">MCollective::Util.empty_filter</a>?
273 to make clients less fugly to write - ticket 18
274 </p>
275           <p><a class="source-toggle" href="#"
276             onclick="toggleCode('M000042-source');return false;">[Source]</a></p>
277           <div class="method-source-code" id="M000042-source">
278 <pre>
279      <span class="ruby-comment cmt"># File lib/mcollective/rpc.rb, line 167</span>
280 167:     <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">empty_filter?</span>(<span class="ruby-identifier">options</span>)
281 168:       <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">:filter</span>)
282 169:         <span class="ruby-constant">Util</span>.<span class="ruby-identifier">empty_filter?</span>(<span class="ruby-identifier">options</span>[<span class="ruby-identifier">:filter</span>])
283 170:       <span class="ruby-keyword kw">else</span>
284 171:         <span class="ruby-constant">Util</span>.<span class="ruby-identifier">empty_filter?</span>(<span class="ruby-identifier">options</span>)
285 172:       <span class="ruby-keyword kw">end</span>
286 173:     <span class="ruby-keyword kw">end</span>
287 </pre>
288           </div>
289         </div>
290       </div>
291
292       <div id="method-M000041" class="method-detail">
293         <a name="M000041"></a>
294
295         <div class="method-heading">
296           <a href="#M000041" class="method-signature">
297           <span class="method-name">printrpc</span><span class="method-args">(result, flags = {})</span>
298           </a>
299         </div>
300       
301         <div class="method-description">
302           <p>
303 Prints the result of an <a href="RPC.html">RPC</a> call.
304 </p>
305 <p>
306 In the default quiet mode - no flattening or verbose - only results that
307 produce an error will be printed
308 </p>
309 <p>
310 To get details of each result run with the -v command line option.
311 </p>
312           <p><a class="source-toggle" href="#"
313             onclick="toggleCode('M000041-source');return false;">[Source]</a></p>
314           <div class="method-source-code" id="M000041-source">
315 <pre>
316      <span class="ruby-comment cmt"># File lib/mcollective/rpc.rb, line 146</span>
317 146:     <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">printrpc</span>(<span class="ruby-identifier">result</span>, <span class="ruby-identifier">flags</span> = {})
318 147:       <span class="ruby-identifier">verbose</span> = <span class="ruby-ivar">@options</span>[<span class="ruby-identifier">:verbose</span>] <span class="ruby-keyword kw">rescue</span> <span class="ruby-identifier">verbose</span> = <span class="ruby-keyword kw">false</span>
319 148:       <span class="ruby-identifier">verbose</span> = <span class="ruby-identifier">flags</span>[<span class="ruby-identifier">:verbose</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">verbose</span>
320 149:       <span class="ruby-identifier">flatten</span> = <span class="ruby-identifier">flags</span>[<span class="ruby-identifier">:flatten</span>] <span class="ruby-operator">||</span> <span class="ruby-keyword kw">false</span>
321 150:       <span class="ruby-identifier">format</span> = <span class="ruby-ivar">@options</span>[<span class="ruby-identifier">:output_format</span>]
322 151:       <span class="ruby-identifier">forced_mode</span> = <span class="ruby-ivar">@options</span>[<span class="ruby-identifier">:force_display_mode</span>] <span class="ruby-operator">||</span> <span class="ruby-keyword kw">false</span>
323 152: 
324 153:       <span class="ruby-identifier">result_text</span> =  <span class="ruby-constant">Helpers</span>.<span class="ruby-identifier">rpcresults</span>(<span class="ruby-identifier">result</span>, {<span class="ruby-identifier">:verbose</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">verbose</span>, <span class="ruby-identifier">:flatten</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">flatten</span>, <span class="ruby-identifier">:format</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">format</span>, <span class="ruby-identifier">:force_display_mode</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">forced_mode</span>})
325 154: 
326 155:       <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">result</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Array</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">format</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:console</span>
327 156:         <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;\n%s\n&quot;</span> <span class="ruby-operator">%</span> [ <span class="ruby-identifier">result_text</span> ]
328 157:       <span class="ruby-keyword kw">else</span>
329 158:         <span class="ruby-comment cmt"># when we get just one result to print dont pad them all with</span>
330 159:         <span class="ruby-comment cmt"># blank spaces etc, just print the individual result with no</span>
331 160:         <span class="ruby-comment cmt"># padding</span>
332 161:         <span class="ruby-identifier">puts</span> <span class="ruby-identifier">result_text</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">result_text</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;&quot;</span>
333 162:       <span class="ruby-keyword kw">end</span>
334 163:     <span class="ruby-keyword kw">end</span>
335 </pre>
336           </div>
337         </div>
338       </div>
339
340       <div id="method-M000040" class="method-detail">
341         <a name="M000040"></a>
342
343         <div class="method-heading">
344           <a href="#M000040" class="method-signature">
345           <span class="method-name">printrpcstats</span><span class="method-args">(flags={})</span>
346           </a>
347         </div>
348       
349         <div class="method-description">
350           <p>
351 Prints <a href="RPC.html#M000038">stats</a>, requires <a
352 href="RPC.html#M000038">stats</a> to be saved from elsewhere using the <a
353 href="RPC.html#M000038">MCollective::RPC.stats</a> method.
354 </p>
355 <p>
356 If you&#8216;ve passed -v on the command line a detailed stat block will be
357 printed, else just a one liner.
358 </p>
359 <p>
360 You can pass flags into it:
361 </p>
362 <pre>
363   printrpcstats :caption =&gt; &quot;Foo&quot;, :summarize =&gt; true
364 </pre>
365 <p>
366 This will use &quot;Foo&quot; as the caption to the <a
367 href="RPC.html#M000038">stats</a> in verbose mode and print out any
368 aggregate summary information if present
369 </p>
370           <p><a class="source-toggle" href="#"
371             onclick="toggleCode('M000040-source');return false;">[Source]</a></p>
372           <div class="method-source-code" id="M000040-source">
373 <pre>
374      <span class="ruby-comment cmt"># File lib/mcollective/rpc.rb, line 123</span>
375 123:     <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">printrpcstats</span>(<span class="ruby-identifier">flags</span>={})
376 124:       <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@options</span>[<span class="ruby-identifier">:output_format</span>] <span class="ruby-operator">==</span> <span class="ruby-identifier">:console</span>
377 125: 
378 126:       <span class="ruby-identifier">flags</span> = {<span class="ruby-identifier">:summarize</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">false</span>, <span class="ruby-identifier">:caption</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;rpc stats&quot;</span>}.<span class="ruby-identifier">merge</span>(<span class="ruby-identifier">flags</span>)
379 127: 
380 128:       <span class="ruby-identifier">verbose</span> = <span class="ruby-ivar">@options</span>[<span class="ruby-identifier">:verbose</span>] <span class="ruby-keyword kw">rescue</span> <span class="ruby-identifier">verbose</span> = <span class="ruby-keyword kw">false</span>
381 129: 
382 130:       <span class="ruby-keyword kw">begin</span>
383 131:         <span class="ruby-identifier">stats</span> = <span class="ruby-ivar">@@stats</span>
384 132:       <span class="ruby-keyword kw">rescue</span>
385 133:         <span class="ruby-identifier">puts</span>(<span class="ruby-value str">&quot;no stats to display&quot;</span>)
386 134:         <span class="ruby-keyword kw">return</span>
387 135:       <span class="ruby-keyword kw">end</span>
388 136: 
389 137:       <span class="ruby-identifier">puts</span> <span class="ruby-identifier">stats</span>.<span class="ruby-identifier">report</span>(<span class="ruby-identifier">flags</span>[<span class="ruby-identifier">:caption</span>], <span class="ruby-identifier">flags</span>[<span class="ruby-identifier">:summarize</span>], <span class="ruby-identifier">verbose</span>)
390 138:     <span class="ruby-keyword kw">end</span>
391 </pre>
392           </div>
393         </div>
394       </div>
395
396       <div id="method-M000037" class="method-detail">
397         <a name="M000037"></a>
398
399         <div class="method-heading">
400           <a href="#M000037" class="method-signature">
401           <span class="method-name">rpcclient</span><span class="method-args">(agent, flags = {}) {|rpc| ...}</span>
402           </a>
403         </div>
404       
405         <div class="method-description">
406           <p>
407 Wrapper to create clients, supposed to be used as a mixin:
408 </p>
409 <p>
410 include <a href="RPC.html">MCollective::RPC</a>
411 </p>
412 <p>
413 exim = <a href="RPC.html#M000037">rpcclient</a>(&quot;exim&quot;) <a
414 href="RPC.html#M000041">printrpc</a> exim.mailq
415 </p>
416 <p>
417 or
418 </p>
419 <p>
420 <a href="RPC.html#M000037">rpcclient</a>(&quot;exim&quot;) do |exim|
421 </p>
422 <pre>
423    printrpc exim.mailq
424 </pre>
425 <p>
426 end
427 </p>
428 <p>
429 It will take a few flags:
430 </p>
431 <pre>
432    :configfile =&gt; &quot;etc/client.cfg&quot;
433    :options =&gt; options
434    :exit_on_failure =&gt; true
435 </pre>
436 <p>
437 Options would be a build up options hash from the <a
438 href="Optionparser.html">Optionparser</a> you can use the <a
439 href="RPC.html#M000036">rpcoptions</a> helper to create this
440 </p>
441 <p>
442 :exit_on_failure is true by default, and causes the application to exit if
443 there is a failure constructing the <a href="RPC.html">RPC</a> client. Set
444 this flag to false to cause an Exception to be raised instead.
445 </p>
446           <p><a class="source-toggle" href="#"
447             onclick="toggleCode('M000037-source');return false;">[Source]</a></p>
448           <div class="method-source-code" id="M000037-source">
449 <pre>
450     <span class="ruby-comment cmt"># File lib/mcollective/rpc.rb, line 60</span>
451 60:     <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">rpcclient</span>(<span class="ruby-identifier">agent</span>, <span class="ruby-identifier">flags</span> = {})
452 61:       <span class="ruby-identifier">configfile</span> = <span class="ruby-identifier">flags</span>[<span class="ruby-identifier">:configfile</span>] <span class="ruby-operator">||</span> <span class="ruby-value str">&quot;/etc/mcollective/client.cfg&quot;</span>
453 62:       <span class="ruby-identifier">options</span> = <span class="ruby-identifier">flags</span>[<span class="ruby-identifier">:options</span>] <span class="ruby-operator">||</span> <span class="ruby-keyword kw">nil</span>
454 63: 
455 64:       <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">flags</span>.<span class="ruby-identifier">key?</span>(<span class="ruby-identifier">:exit_on_failure</span>)
456 65:         <span class="ruby-identifier">exit_on_failure</span> = <span class="ruby-identifier">flags</span>[<span class="ruby-identifier">:exit_on_failure</span>]
457 66:       <span class="ruby-keyword kw">else</span>
458 67:         <span class="ruby-comment cmt"># We exit on failure by default for CLI-friendliness</span>
459 68:         <span class="ruby-identifier">exit_on_failure</span> = <span class="ruby-keyword kw">true</span>
460 69:       <span class="ruby-keyword kw">end</span>
461 70: 
462 71:       <span class="ruby-keyword kw">begin</span>
463 72:         <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>
464 73:           <span class="ruby-identifier">rpc</span> = <span class="ruby-constant">Client</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">agent</span>, <span class="ruby-identifier">:configfile</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:config</span>], <span class="ruby-identifier">:options</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">options</span>)
465 74:           <span class="ruby-ivar">@options</span> = <span class="ruby-identifier">rpc</span>.<span class="ruby-identifier">options</span>
466 75:         <span class="ruby-keyword kw">else</span>
467 76:           <span class="ruby-identifier">rpc</span> = <span class="ruby-constant">Client</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">agent</span>, <span class="ruby-identifier">:configfile</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">configfile</span>)
468 77:           <span class="ruby-ivar">@options</span> = <span class="ruby-identifier">rpc</span>.<span class="ruby-identifier">options</span>
469 78:         <span class="ruby-keyword kw">end</span>
470 79:       <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Exception</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">e</span>
471 80:         <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">exit_on_failure</span>
472 81:           <span class="ruby-identifier">puts</span>(<span class="ruby-node">&quot;Could not create RPC client: #{e}&quot;</span>)
473 82:           <span class="ruby-identifier">exit!</span>
474 83:         <span class="ruby-keyword kw">else</span>
475 84:           <span class="ruby-identifier">raise</span> <span class="ruby-identifier">e</span>
476 85:         <span class="ruby-keyword kw">end</span>
477 86:       <span class="ruby-keyword kw">end</span>
478 87: 
479 88:       <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
480 89:         <span class="ruby-keyword kw">yield</span>(<span class="ruby-identifier">rpc</span>)
481 90:       <span class="ruby-keyword kw">else</span>
482 91:         <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">rpc</span>
483 92:       <span class="ruby-keyword kw">end</span>
484 93:     <span class="ruby-keyword kw">end</span>
485 </pre>
486           </div>
487         </div>
488       </div>
489
490       <div id="method-M000036" class="method-detail">
491         <a name="M000036"></a>
492
493         <div class="method-heading">
494           <a href="#M000036" class="method-signature">
495           <span class="method-name">rpcoptions</span><span class="method-args">() {|parser, options| ...}</span>
496           </a>
497         </div>
498       
499         <div class="method-description">
500           <p>
501 Creates a standard options hash, pass in a block to add extra headings etc
502 see <a href="Optionparser.html">Optionparser</a>
503 </p>
504           <p><a class="source-toggle" href="#"
505             onclick="toggleCode('M000036-source');return false;">[Source]</a></p>
506           <div class="method-source-code" id="M000036-source">
507 <pre>
508     <span class="ruby-comment cmt"># File lib/mcollective/rpc.rb, line 21</span>
509 21:     <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">rpcoptions</span>
510 22:       <span class="ruby-identifier">oparser</span> = <span class="ruby-constant">MCollective</span><span class="ruby-operator">::</span><span class="ruby-constant">Optionparser</span>.<span class="ruby-identifier">new</span>({<span class="ruby-identifier">:verbose</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">false</span>, <span class="ruby-identifier">:progress_bar</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">true</span>}, <span class="ruby-value str">&quot;filter&quot;</span>)
511 23: 
512 24:       <span class="ruby-identifier">options</span> = <span class="ruby-identifier">oparser</span>.<span class="ruby-identifier">parse</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">parser</span>, <span class="ruby-identifier">options</span><span class="ruby-operator">|</span>
513 25:         <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
514 26:           <span class="ruby-keyword kw">yield</span>(<span class="ruby-identifier">parser</span>, <span class="ruby-identifier">options</span>)
515 27:         <span class="ruby-keyword kw">end</span>
516 28: 
517 29:         <span class="ruby-constant">Helpers</span>.<span class="ruby-identifier">add_simplerpc_options</span>(<span class="ruby-identifier">parser</span>, <span class="ruby-identifier">options</span>)
518 30:       <span class="ruby-keyword kw">end</span>
519 31: 
520 32:       <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">options</span>
521 33:     <span class="ruby-keyword kw">end</span>
522 </pre>
523           </div>
524         </div>
525       </div>
526
527
528     </div>
529
530
531   </div>
532
533
534 <div id="validator-badges">
535   <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
536 </div>
537
538 </body>
539 </html>