~ubuntu-branches/ubuntu/natty/mcollective/natty-201103250207

« back to all changes in this revision

Viewing changes to doc/classes/MCollective/RPC/Client.html

  • Committer: Dustin Kirkland
  • Date: 2011-02-17 19:07:47 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: kirkland@ubuntu.com-20110217190747-yym2bspvdu2nd8hg
Tags: 1.0.1-0ubuntu1
* Merge new upstream release
* debian/mcollective.install: drop unneeded /etc/init.d (we use upstart)
* debian/copyright: use Apache 2.0 header and point to common-license
  file, per Lintian

Show diffs side-by-side

added added

removed removed

Lines of Context:
94
94
      <h3 class="section-bar">Methods</h3>
95
95
 
96
96
      <div class="name-list">
97
 
      <a href="#M000096">agent_filter</a>&nbsp;&nbsp;
98
 
      <a href="#M000094">class_filter</a>&nbsp;&nbsp;
99
 
      <a href="#M000093">custom_request</a>&nbsp;&nbsp;
100
 
      <a href="#M000089">disconnect</a>&nbsp;&nbsp;
101
 
      <a href="#M000100">discover</a>&nbsp;&nbsp;
102
 
      <a href="#M000095">fact_filter</a>&nbsp;&nbsp;
103
 
      <a href="#M000090">help</a>&nbsp;&nbsp;
104
 
      <a href="#M000097">identity_filter</a>&nbsp;&nbsp;
105
 
      <a href="#M000102">limit_targets=</a>&nbsp;&nbsp;
106
 
      <a href="#M000092">method_missing</a>&nbsp;&nbsp;
107
 
      <a href="#M000088">new</a>&nbsp;&nbsp;
108
 
      <a href="#M000091">new_request</a>&nbsp;&nbsp;
109
 
      <a href="#M000101">options</a>&nbsp;&nbsp;
110
 
      <a href="#M000098">reset</a>&nbsp;&nbsp;
111
 
      <a href="#M000099">reset_filter</a>&nbsp;&nbsp;
 
97
      <a href="#M000098">agent_filter</a>&nbsp;&nbsp;
 
98
      <a href="#M000096">class_filter</a>&nbsp;&nbsp;
 
99
      <a href="#M000095">custom_request</a>&nbsp;&nbsp;
 
100
      <a href="#M000091">disconnect</a>&nbsp;&nbsp;
 
101
      <a href="#M000102">discover</a>&nbsp;&nbsp;
 
102
      <a href="#M000097">fact_filter</a>&nbsp;&nbsp;
 
103
      <a href="#M000092">help</a>&nbsp;&nbsp;
 
104
      <a href="#M000099">identity_filter</a>&nbsp;&nbsp;
 
105
      <a href="#M000104">limit_targets=</a>&nbsp;&nbsp;
 
106
      <a href="#M000094">method_missing</a>&nbsp;&nbsp;
 
107
      <a href="#M000090">new</a>&nbsp;&nbsp;
 
108
      <a href="#M000093">new_request</a>&nbsp;&nbsp;
 
109
      <a href="#M000103">options</a>&nbsp;&nbsp;
 
110
      <a href="#M000100">reset</a>&nbsp;&nbsp;
 
111
      <a href="#M000101">reset_filter</a>&nbsp;&nbsp;
112
112
      </div>
113
113
    </div>
114
114
 
193
193
    <div id="methods">
194
194
      <h3 class="section-bar">Public Class methods</h3>
195
195
 
196
 
      <div id="method-M000088" class="method-detail">
197
 
        <a name="M000088"></a>
 
196
      <div id="method-M000090" class="method-detail">
 
197
        <a name="M000090"></a>
198
198
 
199
199
        <div class="method-heading">
200
 
          <a href="#M000088" class="method-signature">
 
200
          <a href="#M000090" class="method-signature">
201
201
          <span class="method-name">new</span><span class="method-args">(agent, flags = {}) {|parser, options| ...}</span>
202
202
          </a>
203
203
        </div>
205
205
        <div class="method-description">
206
206
          <p>
207
207
Creates a stub for a remote agent, you can pass in an <a
208
 
href="Client.html#M000101">options</a> array in the flags which will then
 
208
href="Client.html#M000103">options</a> array in the flags which will then
209
209
be used else it will just create a default <a
210
 
href="Client.html#M000101">options</a> array with filtering enabled based
 
210
href="Client.html#M000103">options</a> array with filtering enabled based
211
211
on the standard command line use.
212
212
</p>
213
213
<pre>
215
215
</pre>
216
216
<p>
217
217
You typically would not call this directly you&#8216;d use <a
218
 
href="../RPC.html#M000049">MCollective::RPC#rpcclient</a> instead which is
 
218
href="../RPC.html#M000051">MCollective::RPC#rpcclient</a> instead which is
219
219
a wrapper around this that can be used as a Mixin
220
220
</p>
221
221
          <p><a class="source-toggle" href="#"
222
 
            onclick="toggleCode('M000088-source');return false;">[Source]</a></p>
223
 
          <div class="method-source-code" id="M000088-source">
 
222
            onclick="toggleCode('M000090-source');return false;">[Source]</a></p>
 
223
          <div class="method-source-code" id="M000090-source">
224
224
<pre>
225
225
    <span class="ruby-comment cmt"># File lib/mcollective/rpc/client.rb, line 19</span>
226
226
19:             <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">agent</span>, <span class="ruby-identifier">flags</span> = {})
264
264
57:                 <span class="ruby-comment cmt"># the timeout of the client so we always magically</span>
265
265
58:                 <span class="ruby-comment cmt"># wait appropriate amounts of time.</span>
266
266
59:                 <span class="ruby-comment cmt">#</span>
267
 
60:                 <span class="ruby-comment cmt"># We do this only if the timeout is the default 5</span>
268
 
61:                 <span class="ruby-comment cmt"># seconds, so that users cli overrides will still</span>
269
 
62:                 <span class="ruby-comment cmt"># get applied</span>
270
 
63:                 <span class="ruby-keyword kw">begin</span>
271
 
64:                     <span class="ruby-ivar">@ddl</span> = <span class="ruby-constant">DDL</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">agent</span>)
272
 
65:                     <span class="ruby-ivar">@timeout</span> = <span class="ruby-ivar">@ddl</span>.<span class="ruby-identifier">meta</span>[<span class="ruby-identifier">:timeout</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@timeout</span> <span class="ruby-operator">==</span> <span class="ruby-value">5</span>
273
 
66:                 <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>
274
 
67:                     <span class="ruby-constant">Log</span>.<span class="ruby-identifier">instance</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">&quot;Could not find DDL: #{e}&quot;</span>)
275
 
68:                     <span class="ruby-ivar">@ddl</span> = <span class="ruby-keyword kw">nil</span>
276
 
69:                 <span class="ruby-keyword kw">end</span>
277
 
70: 
278
 
71:                 <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">sync</span> = <span class="ruby-keyword kw">true</span>
279
 
72:                 <span class="ruby-constant">STDOUT</span>.<span class="ruby-identifier">sync</span> = <span class="ruby-keyword kw">true</span>
280
 
73:             <span class="ruby-keyword kw">end</span>
 
267
60:                 <span class="ruby-comment cmt"># We add the discovery timeout to the ddl supplied</span>
 
268
61:                 <span class="ruby-comment cmt"># timeout as the discovery timeout tends to be tuned</span>
 
269
62:                 <span class="ruby-comment cmt"># for local network conditions and fact source speed</span>
 
270
63:                 <span class="ruby-comment cmt"># which would other wise not be accounted for and</span>
 
271
64:                 <span class="ruby-comment cmt"># some results might get missed.</span>
 
272
65:                 <span class="ruby-comment cmt">#</span>
 
273
66:                 <span class="ruby-comment cmt"># We do this only if the timeout is the default 5</span>
 
274
67:                 <span class="ruby-comment cmt"># seconds, so that users cli overrides will still</span>
 
275
68:                 <span class="ruby-comment cmt"># get applied</span>
 
276
69:                 <span class="ruby-keyword kw">begin</span>
 
277
70:                     <span class="ruby-ivar">@ddl</span> = <span class="ruby-constant">DDL</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">agent</span>)
 
278
71:                     <span class="ruby-ivar">@timeout</span> = <span class="ruby-ivar">@ddl</span>.<span class="ruby-identifier">meta</span>[<span class="ruby-identifier">:timeout</span>] <span class="ruby-operator">+</span> <span class="ruby-ivar">@discovery_timeout</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@timeout</span> <span class="ruby-operator">==</span> <span class="ruby-value">5</span>
 
279
72:                 <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>
 
280
73:                     <span class="ruby-constant">Log</span>.<span class="ruby-identifier">instance</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">&quot;Could not find DDL: #{e}&quot;</span>)
 
281
74:                     <span class="ruby-ivar">@ddl</span> = <span class="ruby-keyword kw">nil</span>
 
282
75:                 <span class="ruby-keyword kw">end</span>
 
283
76: 
 
284
77:                 <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">sync</span> = <span class="ruby-keyword kw">true</span>
 
285
78:                 <span class="ruby-constant">STDOUT</span>.<span class="ruby-identifier">sync</span> = <span class="ruby-keyword kw">true</span>
 
286
79:             <span class="ruby-keyword kw">end</span>
281
287
</pre>
282
288
          </div>
283
289
        </div>
285
291
 
286
292
      <h3 class="section-bar">Public Instance methods</h3>
287
293
 
 
294
      <div id="method-M000098" class="method-detail">
 
295
        <a name="M000098"></a>
 
296
 
 
297
        <div class="method-heading">
 
298
          <a href="#M000098" class="method-signature">
 
299
          <span class="method-name">agent_filter</span><span class="method-args">(agent)</span>
 
300
          </a>
 
301
        </div>
 
302
      
 
303
        <div class="method-description">
 
304
          <p>
 
305
Sets the agent filter
 
306
</p>
 
307
          <p><a class="source-toggle" href="#"
 
308
            onclick="toggleCode('M000098-source');return false;">[Source]</a></p>
 
309
          <div class="method-source-code" id="M000098-source">
 
310
<pre>
 
311
     <span class="ruby-comment cmt"># File lib/mcollective/rpc/client.rb, line 280</span>
 
312
280:             <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">agent_filter</span>(<span class="ruby-identifier">agent</span>)
 
313
281:                 <span class="ruby-ivar">@filter</span>[<span class="ruby-value str">&quot;agent&quot;</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">agent</span>
 
314
282:                 <span class="ruby-ivar">@filter</span>[<span class="ruby-value str">&quot;agent&quot;</span>].<span class="ruby-identifier">compact!</span>
 
315
283:                 <span class="ruby-identifier">reset</span>
 
316
284:             <span class="ruby-keyword kw">end</span>
 
317
</pre>
 
318
          </div>
 
319
        </div>
 
320
      </div>
 
321
 
288
322
      <div id="method-M000096" class="method-detail">
289
323
        <a name="M000096"></a>
290
324
 
291
325
        <div class="method-heading">
292
326
          <a href="#M000096" class="method-signature">
293
 
          <span class="method-name">agent_filter</span><span class="method-args">(agent)</span>
 
327
          <span class="method-name">class_filter</span><span class="method-args">(klass)</span>
294
328
          </a>
295
329
        </div>
296
330
      
297
331
        <div class="method-description">
298
332
          <p>
299
 
Sets the agent filter
 
333
Sets the class filter
300
334
</p>
301
335
          <p><a class="source-toggle" href="#"
302
336
            onclick="toggleCode('M000096-source');return false;">[Source]</a></p>
303
337
          <div class="method-source-code" id="M000096-source">
304
338
<pre>
305
 
     <span class="ruby-comment cmt"># File lib/mcollective/rpc/client.rb, line 274</span>
306
 
274:             <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">agent_filter</span>(<span class="ruby-identifier">agent</span>)
307
 
275:                 <span class="ruby-ivar">@filter</span>[<span class="ruby-value str">&quot;agent&quot;</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">agent</span>
308
 
276:                 <span class="ruby-ivar">@filter</span>[<span class="ruby-value str">&quot;agent&quot;</span>].<span class="ruby-identifier">compact!</span>
309
 
277:                 <span class="ruby-identifier">reset</span>
310
 
278:             <span class="ruby-keyword kw">end</span>
311
 
</pre>
312
 
          </div>
313
 
        </div>
314
 
      </div>
315
 
 
316
 
      <div id="method-M000094" class="method-detail">
317
 
        <a name="M000094"></a>
318
 
 
319
 
        <div class="method-heading">
320
 
          <a href="#M000094" class="method-signature">
321
 
          <span class="method-name">class_filter</span><span class="method-args">(klass)</span>
322
 
          </a>
323
 
        </div>
324
 
      
325
 
        <div class="method-description">
326
 
          <p>
327
 
Sets the class filter
328
 
</p>
329
 
          <p><a class="source-toggle" href="#"
330
 
            onclick="toggleCode('M000094-source');return false;">[Source]</a></p>
331
 
          <div class="method-source-code" id="M000094-source">
332
 
<pre>
333
 
     <span class="ruby-comment cmt"># File lib/mcollective/rpc/client.rb, line 260</span>
334
 
260:             <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">class_filter</span>(<span class="ruby-identifier">klass</span>)
335
 
261:                 <span class="ruby-ivar">@filter</span>[<span class="ruby-value str">&quot;cf_class&quot;</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">klass</span>
336
 
262:                 <span class="ruby-ivar">@filter</span>[<span class="ruby-value str">&quot;cf_class&quot;</span>].<span class="ruby-identifier">compact!</span>
337
 
263:                 <span class="ruby-identifier">reset</span>
338
 
264:             <span class="ruby-keyword kw">end</span>
339
 
</pre>
340
 
          </div>
341
 
        </div>
342
 
      </div>
343
 
 
344
 
      <div id="method-M000093" class="method-detail">
345
 
        <a name="M000093"></a>
346
 
 
347
 
        <div class="method-heading">
348
 
          <a href="#M000093" class="method-signature">
 
339
     <span class="ruby-comment cmt"># File lib/mcollective/rpc/client.rb, line 266</span>
 
340
266:             <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">class_filter</span>(<span class="ruby-identifier">klass</span>)
 
341
267:                 <span class="ruby-ivar">@filter</span>[<span class="ruby-value str">&quot;cf_class&quot;</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">klass</span>
 
342
268:                 <span class="ruby-ivar">@filter</span>[<span class="ruby-value str">&quot;cf_class&quot;</span>].<span class="ruby-identifier">compact!</span>
 
343
269:                 <span class="ruby-identifier">reset</span>
 
344
270:             <span class="ruby-keyword kw">end</span>
 
345
</pre>
 
346
          </div>
 
347
        </div>
 
348
      </div>
 
349
 
 
350
      <div id="method-M000095" class="method-detail">
 
351
        <a name="M000095"></a>
 
352
 
 
353
        <div class="method-heading">
 
354
          <a href="#M000095" class="method-signature">
349
355
          <span class="method-name">custom_request</span><span class="method-args">(action, args, expected_agents, filter = {}, &amp;block)</span>
350
356
          </a>
351
357
        </div>
358
364
own what nodes will be responding and what your filter would be.
359
365
</p>
360
366
<p>
361
 
This will <a href="Client.html#M000090">help</a> you essentially short
 
367
This will <a href="Client.html#M000092">help</a> you essentially short
362
368
circuit the traditional cycle of:
363
369
</p>
364
370
<p>
365
 
mc <a href="Client.html#M000100">discover</a> / call / wait for discovered
 
371
mc <a href="Client.html#M000102">discover</a> / call / wait for discovered
366
372
nodes
367
373
</p>
368
374
<p>
375
381
</p>
376
382
<p>
377
383
If you just wanted to contact one machine for example with a client that
378
 
already has other filter <a href="Client.html#M000101">options</a> setup
 
384
already has other filter <a href="Client.html#M000103">options</a> setup
379
385
you can do:
380
386
</p>
381
387
<p>
391
397
waiting for responses
392
398
</p>
393
399
          <p><a class="source-toggle" href="#"
394
 
            onclick="toggleCode('M000093-source');return false;">[Source]</a></p>
395
 
          <div class="method-source-code" id="M000093-source">
 
400
            onclick="toggleCode('M000095-source');return false;">[Source]</a></p>
 
401
          <div class="method-source-code" id="M000095-source">
396
402
<pre>
397
 
     <span class="ruby-comment cmt"># File lib/mcollective/rpc/client.rb, line 218</span>
398
 
218:             <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">custom_request</span>(<span class="ruby-identifier">action</span>, <span class="ruby-identifier">args</span>, <span class="ruby-identifier">expected_agents</span>, <span class="ruby-identifier">filter</span> = {}, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
399
 
219:                 <span class="ruby-ivar">@ddl</span>.<span class="ruby-identifier">validate_request</span>(<span class="ruby-identifier">action</span>, <span class="ruby-identifier">args</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@ddl</span>
400
 
220: 
401
 
221:                 <span class="ruby-ivar">@stats</span>.<span class="ruby-identifier">reset</span>
402
 
222: 
403
 
223:                 <span class="ruby-identifier">custom_filter</span> = <span class="ruby-constant">Util</span>.<span class="ruby-identifier">empty_filter</span>
404
 
224:                 <span class="ruby-identifier">custom_options</span> = <span class="ruby-identifier">options</span>.<span class="ruby-identifier">clone</span>
405
 
225: 
406
 
226:                 <span class="ruby-comment cmt"># merge the supplied filter with the standard empty one</span>
407
 
227:                 <span class="ruby-comment cmt"># we could just use the merge method but I want to be sure</span>
408
 
228:                 <span class="ruby-comment cmt"># we dont merge in stuff that isnt actually valid</span>
409
 
229:                 [<span class="ruby-value str">&quot;identity&quot;</span>, <span class="ruby-value str">&quot;fact&quot;</span>, <span class="ruby-value str">&quot;agent&quot;</span>, <span class="ruby-value str">&quot;cf_class&quot;</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">ftype</span><span class="ruby-operator">|</span>
410
 
230:                     <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">filter</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">ftype</span>)
411
 
231:                         <span class="ruby-identifier">custom_filter</span>[<span class="ruby-identifier">ftype</span>] = [<span class="ruby-identifier">filter</span>[<span class="ruby-identifier">ftype</span>], <span class="ruby-identifier">custom_filter</span>[<span class="ruby-identifier">ftype</span>]].<span class="ruby-identifier">flatten</span>
412
 
232:                     <span class="ruby-keyword kw">end</span>
413
 
233:                 <span class="ruby-keyword kw">end</span>
414
 
234: 
415
 
235:                 <span class="ruby-comment cmt"># ensure that all filters at least restrict the call to the agent we're a proxy for</span>
416
 
236:                 <span class="ruby-identifier">custom_filter</span>[<span class="ruby-value str">&quot;agent&quot;</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-ivar">@agent</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">custom_filter</span>[<span class="ruby-value str">&quot;agent&quot;</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-ivar">@agent</span>)
417
 
237:                 <span class="ruby-identifier">custom_options</span>[<span class="ruby-identifier">:filter</span>] = <span class="ruby-identifier">custom_filter</span>
418
 
238: 
419
 
239:                 <span class="ruby-comment cmt"># Fake out the stats discovery would have put there</span>
420
 
240:                 <span class="ruby-ivar">@stats</span>.<span class="ruby-identifier">discovered_agents</span>([<span class="ruby-identifier">expected_agents</span>].<span class="ruby-identifier">flatten</span>)
421
 
241: 
422
 
242:                 <span class="ruby-comment cmt"># Handle fire and forget requests</span>
423
 
243:                 <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">:process_results</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">args</span>[<span class="ruby-identifier">:process_results</span>] <span class="ruby-operator">==</span> <span class="ruby-keyword kw">false</span>
424
 
244:                     <span class="ruby-ivar">@filter</span> = <span class="ruby-identifier">custom_filter</span>
425
 
245:                     <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">fire_and_forget_request</span>(<span class="ruby-identifier">action</span>, <span class="ruby-identifier">args</span>)
426
 
246:                 <span class="ruby-keyword kw">end</span>
 
403
     <span class="ruby-comment cmt"># File lib/mcollective/rpc/client.rb, line 224</span>
 
404
224:             <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">custom_request</span>(<span class="ruby-identifier">action</span>, <span class="ruby-identifier">args</span>, <span class="ruby-identifier">expected_agents</span>, <span class="ruby-identifier">filter</span> = {}, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
 
405
225:                 <span class="ruby-ivar">@ddl</span>.<span class="ruby-identifier">validate_request</span>(<span class="ruby-identifier">action</span>, <span class="ruby-identifier">args</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@ddl</span>
 
406
226: 
 
407
227:                 <span class="ruby-ivar">@stats</span>.<span class="ruby-identifier">reset</span>
 
408
228: 
 
409
229:                 <span class="ruby-identifier">custom_filter</span> = <span class="ruby-constant">Util</span>.<span class="ruby-identifier">empty_filter</span>
 
410
230:                 <span class="ruby-identifier">custom_options</span> = <span class="ruby-identifier">options</span>.<span class="ruby-identifier">clone</span>
 
411
231: 
 
412
232:                 <span class="ruby-comment cmt"># merge the supplied filter with the standard empty one</span>
 
413
233:                 <span class="ruby-comment cmt"># we could just use the merge method but I want to be sure</span>
 
414
234:                 <span class="ruby-comment cmt"># we dont merge in stuff that isnt actually valid</span>
 
415
235:                 [<span class="ruby-value str">&quot;identity&quot;</span>, <span class="ruby-value str">&quot;fact&quot;</span>, <span class="ruby-value str">&quot;agent&quot;</span>, <span class="ruby-value str">&quot;cf_class&quot;</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">ftype</span><span class="ruby-operator">|</span>
 
416
236:                     <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">filter</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">ftype</span>)
 
417
237:                         <span class="ruby-identifier">custom_filter</span>[<span class="ruby-identifier">ftype</span>] = [<span class="ruby-identifier">filter</span>[<span class="ruby-identifier">ftype</span>], <span class="ruby-identifier">custom_filter</span>[<span class="ruby-identifier">ftype</span>]].<span class="ruby-identifier">flatten</span>
 
418
238:                     <span class="ruby-keyword kw">end</span>
 
419
239:                 <span class="ruby-keyword kw">end</span>
 
420
240: 
 
421
241:                 <span class="ruby-comment cmt"># ensure that all filters at least restrict the call to the agent we're a proxy for</span>
 
422
242:                 <span class="ruby-identifier">custom_filter</span>[<span class="ruby-value str">&quot;agent&quot;</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-ivar">@agent</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">custom_filter</span>[<span class="ruby-value str">&quot;agent&quot;</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-ivar">@agent</span>)
 
423
243:                 <span class="ruby-identifier">custom_options</span>[<span class="ruby-identifier">:filter</span>] = <span class="ruby-identifier">custom_filter</span>
 
424
244: 
 
425
245:                 <span class="ruby-comment cmt"># Fake out the stats discovery would have put there</span>
 
426
246:                 <span class="ruby-ivar">@stats</span>.<span class="ruby-identifier">discovered_agents</span>([<span class="ruby-identifier">expected_agents</span>].<span class="ruby-identifier">flatten</span>)
427
427
247: 
428
 
248:                 <span class="ruby-comment cmt"># Now do a call pretty much exactly like in method_missing except with our own</span>
429
 
249:                 <span class="ruby-comment cmt"># options and discovery magic</span>
430
 
250:                 <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
431
 
251:                     <span class="ruby-identifier">call_agent</span>(<span class="ruby-identifier">action</span>, <span class="ruby-identifier">args</span>, <span class="ruby-identifier">custom_options</span>, [<span class="ruby-identifier">expected_agents</span>].<span class="ruby-identifier">flatten</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">r</span><span class="ruby-operator">|</span>
432
 
252:                         <span class="ruby-identifier">block</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">r</span>)
433
 
253:                     <span class="ruby-keyword kw">end</span>
434
 
254:                 <span class="ruby-keyword kw">else</span>
435
 
255:                     <span class="ruby-identifier">call_agent</span>(<span class="ruby-identifier">action</span>, <span class="ruby-identifier">args</span>, <span class="ruby-identifier">custom_options</span>, [<span class="ruby-identifier">expected_agents</span>].<span class="ruby-identifier">flatten</span>)
436
 
256:                 <span class="ruby-keyword kw">end</span>
437
 
257:             <span class="ruby-keyword kw">end</span>
 
428
248:                 <span class="ruby-comment cmt"># Handle fire and forget requests</span>
 
429
249:                 <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">:process_results</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">args</span>[<span class="ruby-identifier">:process_results</span>] <span class="ruby-operator">==</span> <span class="ruby-keyword kw">false</span>
 
430
250:                     <span class="ruby-ivar">@filter</span> = <span class="ruby-identifier">custom_filter</span>
 
431
251:                     <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">fire_and_forget_request</span>(<span class="ruby-identifier">action</span>, <span class="ruby-identifier">args</span>)
 
432
252:                 <span class="ruby-keyword kw">end</span>
 
433
253: 
 
434
254:                 <span class="ruby-comment cmt"># Now do a call pretty much exactly like in method_missing except with our own</span>
 
435
255:                 <span class="ruby-comment cmt"># options and discovery magic</span>
 
436
256:                 <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
 
437
257:                     <span class="ruby-identifier">call_agent</span>(<span class="ruby-identifier">action</span>, <span class="ruby-identifier">args</span>, <span class="ruby-identifier">custom_options</span>, [<span class="ruby-identifier">expected_agents</span>].<span class="ruby-identifier">flatten</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">r</span><span class="ruby-operator">|</span>
 
438
258:                         <span class="ruby-identifier">block</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">r</span>)
 
439
259:                     <span class="ruby-keyword kw">end</span>
 
440
260:                 <span class="ruby-keyword kw">else</span>
 
441
261:                     <span class="ruby-identifier">call_agent</span>(<span class="ruby-identifier">action</span>, <span class="ruby-identifier">args</span>, <span class="ruby-identifier">custom_options</span>, [<span class="ruby-identifier">expected_agents</span>].<span class="ruby-identifier">flatten</span>)
 
442
262:                 <span class="ruby-keyword kw">end</span>
 
443
263:             <span class="ruby-keyword kw">end</span>
438
444
</pre>
439
445
          </div>
440
446
        </div>
441
447
      </div>
442
448
 
443
 
      <div id="method-M000089" class="method-detail">
444
 
        <a name="M000089"></a>
 
449
      <div id="method-M000091" class="method-detail">
 
450
        <a name="M000091"></a>
445
451
 
446
452
        <div class="method-heading">
447
 
          <a href="#M000089" class="method-signature">
 
453
          <a href="#M000091" class="method-signature">
448
454
          <span class="method-name">disconnect</span><span class="method-args">()</span>
449
455
          </a>
450
456
        </div>
454
460
Disconnects cleanly from the middleware
455
461
</p>
456
462
          <p><a class="source-toggle" href="#"
457
 
            onclick="toggleCode('M000089-source');return false;">[Source]</a></p>
458
 
          <div class="method-source-code" id="M000089-source">
 
463
            onclick="toggleCode('M000091-source');return false;">[Source]</a></p>
 
464
          <div class="method-source-code" id="M000091-source">
459
465
<pre>
460
 
    <span class="ruby-comment cmt"># File lib/mcollective/rpc/client.rb, line 76</span>
461
 
76:             <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">disconnect</span>
462
 
77:                 <span class="ruby-ivar">@client</span>.<span class="ruby-identifier">disconnect</span>
463
 
78:             <span class="ruby-keyword kw">end</span>
 
466
    <span class="ruby-comment cmt"># File lib/mcollective/rpc/client.rb, line 82</span>
 
467
82:             <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">disconnect</span>
 
468
83:                 <span class="ruby-ivar">@client</span>.<span class="ruby-identifier">disconnect</span>
 
469
84:             <span class="ruby-keyword kw">end</span>
464
470
</pre>
465
471
          </div>
466
472
        </div>
467
473
      </div>
468
474
 
469
 
      <div id="method-M000100" class="method-detail">
470
 
        <a name="M000100"></a>
 
475
      <div id="method-M000102" class="method-detail">
 
476
        <a name="M000102"></a>
471
477
 
472
478
        <div class="method-heading">
473
 
          <a href="#M000100" class="method-signature">
 
479
          <a href="#M000102" class="method-signature">
474
480
          <span class="method-name">discover</span><span class="method-args">(flags={})</span>
475
481
          </a>
476
482
        </div>
478
484
        <div class="method-description">
479
485
          <p>
480
486
Does discovery based on the filters set, i a discovery was previously done
481
 
return that else do a <a href="Client.html#M000088">new</a> discovery.
 
487
return that else do a <a href="Client.html#M000090">new</a> discovery.
482
488
</p>
483
489
<p>
484
490
Will show a message indicating its doing discovery if running verbose or if
485
491
the :verbose flag is passed in.
486
492
</p>
487
493
<p>
488
 
Use <a href="Client.html#M000098">reset</a> to force a <a
489
 
href="Client.html#M000088">new</a> discovery
 
494
Use <a href="Client.html#M000100">reset</a> to force a <a
 
495
href="Client.html#M000090">new</a> discovery
490
496
</p>
491
497
          <p><a class="source-toggle" href="#"
492
 
            onclick="toggleCode('M000100-source');return false;">[Source]</a></p>
493
 
          <div class="method-source-code" id="M000100-source">
 
498
            onclick="toggleCode('M000102-source');return false;">[Source]</a></p>
 
499
          <div class="method-source-code" id="M000102-source">
494
500
<pre>
495
 
     <span class="ruby-comment cmt"># File lib/mcollective/rpc/client.rb, line 306</span>
496
 
306:             <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">discover</span>(<span class="ruby-identifier">flags</span>={})
497
 
307:                 <span class="ruby-identifier">flags</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">:verbose</span>) <span class="ruby-operator">?</span> <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> = <span class="ruby-ivar">@verbose</span>
498
 
308: 
499
 
309:                 <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@discovered_agents</span> <span class="ruby-operator">==</span> <span class="ruby-keyword kw">nil</span>
500
 
310:                     <span class="ruby-ivar">@stats</span>.<span class="ruby-identifier">time_discovery</span> <span class="ruby-identifier">:start</span>
501
 
311: 
502
 
312:                     <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">print</span>(<span class="ruby-node">&quot;Determining the amount of hosts matching filter for #{discovery_timeout} seconds .... &quot;</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">verbose</span>
503
 
313:                     <span class="ruby-ivar">@discovered_agents</span> = <span class="ruby-ivar">@client</span>.<span class="ruby-identifier">discover</span>(<span class="ruby-ivar">@filter</span>, <span class="ruby-ivar">@discovery_timeout</span>)
504
 
314:                     <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">puts</span>(<span class="ruby-ivar">@discovered_agents</span>.<span class="ruby-identifier">size</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">verbose</span>
505
 
315: 
506
 
316:                     <span class="ruby-ivar">@stats</span>.<span class="ruby-identifier">time_discovery</span> <span class="ruby-identifier">:end</span>
 
501
     <span class="ruby-comment cmt"># File lib/mcollective/rpc/client.rb, line 312</span>
 
502
312:             <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">discover</span>(<span class="ruby-identifier">flags</span>={})
 
503
313:                 <span class="ruby-identifier">flags</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">:verbose</span>) <span class="ruby-operator">?</span> <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> = <span class="ruby-ivar">@verbose</span>
 
504
314: 
 
505
315:                 <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@discovered_agents</span> <span class="ruby-operator">==</span> <span class="ruby-keyword kw">nil</span>
 
506
316:                     <span class="ruby-ivar">@stats</span>.<span class="ruby-identifier">time_discovery</span> <span class="ruby-identifier">:start</span>
507
507
317: 
508
 
318:                 <span class="ruby-keyword kw">end</span>
509
 
319: 
510
 
320:                 <span class="ruby-ivar">@stats</span>.<span class="ruby-identifier">discovered_agents</span>(<span class="ruby-ivar">@discovered_agents</span>)
511
 
321:                 <span class="ruby-constant">RPC</span>.<span class="ruby-identifier">discovered</span>(<span class="ruby-ivar">@discovered_agents</span>)
512
 
322: 
513
 
323:                 <span class="ruby-ivar">@discovered_agents</span>
514
 
324:             <span class="ruby-keyword kw">end</span>
 
508
318:                     <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">print</span>(<span class="ruby-node">&quot;Determining the amount of hosts matching filter for #{discovery_timeout} seconds .... &quot;</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">verbose</span>
 
509
319:                     <span class="ruby-ivar">@discovered_agents</span> = <span class="ruby-ivar">@client</span>.<span class="ruby-identifier">discover</span>(<span class="ruby-ivar">@filter</span>, <span class="ruby-ivar">@discovery_timeout</span>)
 
510
320:                     <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">puts</span>(<span class="ruby-ivar">@discovered_agents</span>.<span class="ruby-identifier">size</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">verbose</span>
 
511
321: 
 
512
322:                     <span class="ruby-ivar">@stats</span>.<span class="ruby-identifier">time_discovery</span> <span class="ruby-identifier">:end</span>
 
513
323: 
 
514
324:                 <span class="ruby-keyword kw">end</span>
 
515
325: 
 
516
326:                 <span class="ruby-ivar">@stats</span>.<span class="ruby-identifier">discovered_agents</span>(<span class="ruby-ivar">@discovered_agents</span>)
 
517
327:                 <span class="ruby-constant">RPC</span>.<span class="ruby-identifier">discovered</span>(<span class="ruby-ivar">@discovered_agents</span>)
 
518
328: 
 
519
329:                 <span class="ruby-ivar">@discovered_agents</span>
 
520
330:             <span class="ruby-keyword kw">end</span>
515
521
</pre>
516
522
          </div>
517
523
        </div>
518
524
      </div>
519
525
 
520
 
      <div id="method-M000095" class="method-detail">
521
 
        <a name="M000095"></a>
 
526
      <div id="method-M000097" class="method-detail">
 
527
        <a name="M000097"></a>
522
528
 
523
529
        <div class="method-heading">
524
 
          <a href="#M000095" class="method-signature">
 
530
          <a href="#M000097" class="method-signature">
525
531
          <span class="method-name">fact_filter</span><span class="method-args">(fact, value)</span>
526
532
          </a>
527
533
        </div>
531
537
Sets the fact filter
532
538
</p>
533
539
          <p><a class="source-toggle" href="#"
534
 
            onclick="toggleCode('M000095-source');return false;">[Source]</a></p>
535
 
          <div class="method-source-code" id="M000095-source">
 
540
            onclick="toggleCode('M000097-source');return false;">[Source]</a></p>
 
541
          <div class="method-source-code" id="M000097-source">
536
542
<pre>
537
 
     <span class="ruby-comment cmt"># File lib/mcollective/rpc/client.rb, line 267</span>
538
 
267:             <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">fact_filter</span>(<span class="ruby-identifier">fact</span>, <span class="ruby-identifier">value</span>)
539
 
268:                 <span class="ruby-ivar">@filter</span>[<span class="ruby-value str">&quot;fact&quot;</span>] <span class="ruby-operator">&lt;&lt;</span> {<span class="ruby-identifier">:fact</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">fact</span>, <span class="ruby-identifier">:value</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">value</span>}
540
 
269:                 <span class="ruby-ivar">@filter</span>[<span class="ruby-value str">&quot;fact&quot;</span>].<span class="ruby-identifier">compact!</span>
541
 
270:                 <span class="ruby-identifier">reset</span>
542
 
271:             <span class="ruby-keyword kw">end</span>
 
543
     <span class="ruby-comment cmt"># File lib/mcollective/rpc/client.rb, line 273</span>
 
544
273:             <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">fact_filter</span>(<span class="ruby-identifier">fact</span>, <span class="ruby-identifier">value</span>)
 
545
274:                 <span class="ruby-ivar">@filter</span>[<span class="ruby-value str">&quot;fact&quot;</span>] <span class="ruby-operator">&lt;&lt;</span> {<span class="ruby-identifier">:fact</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">fact</span>, <span class="ruby-identifier">:value</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">value</span>}
 
546
275:                 <span class="ruby-ivar">@filter</span>[<span class="ruby-value str">&quot;fact&quot;</span>].<span class="ruby-identifier">compact!</span>
 
547
276:                 <span class="ruby-identifier">reset</span>
 
548
277:             <span class="ruby-keyword kw">end</span>
543
549
</pre>
544
550
          </div>
545
551
        </div>
546
552
      </div>
547
553
 
548
 
      <div id="method-M000090" class="method-detail">
549
 
        <a name="M000090"></a>
 
554
      <div id="method-M000092" class="method-detail">
 
555
        <a name="M000092"></a>
550
556
 
551
557
        <div class="method-heading">
552
 
          <a href="#M000090" class="method-signature">
 
558
          <a href="#M000092" class="method-signature">
553
559
          <span class="method-name">help</span><span class="method-args">(template)</span>
554
560
          </a>
555
561
        </div>
556
562
      
557
563
        <div class="method-description">
558
564
          <p>
559
 
Returns <a href="Client.html#M000090">help</a> for an agent if a <a
 
565
Returns <a href="Client.html#M000092">help</a> for an agent if a <a
560
566
href="DDL.html">DDL</a> was found
561
567
</p>
562
568
          <p><a class="source-toggle" href="#"
563
 
            onclick="toggleCode('M000090-source');return false;">[Source]</a></p>
564
 
          <div class="method-source-code" id="M000090-source">
 
569
            onclick="toggleCode('M000092-source');return false;">[Source]</a></p>
 
570
          <div class="method-source-code" id="M000092-source">
565
571
<pre>
566
 
    <span class="ruby-comment cmt"># File lib/mcollective/rpc/client.rb, line 81</span>
567
 
81:             <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">help</span>(<span class="ruby-identifier">template</span>)
568
 
82:                 <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@ddl</span>
569
 
83:                     <span class="ruby-ivar">@ddl</span>.<span class="ruby-identifier">help</span>(<span class="ruby-identifier">template</span>)
570
 
84:                 <span class="ruby-keyword kw">else</span>
571
 
85:                     <span class="ruby-keyword kw">return</span> <span class="ruby-node">&quot;Can't find DDL for agent '#{@agent}'&quot;</span>
572
 
86:                 <span class="ruby-keyword kw">end</span>
573
 
87:             <span class="ruby-keyword kw">end</span>
 
572
    <span class="ruby-comment cmt"># File lib/mcollective/rpc/client.rb, line 87</span>
 
573
87:             <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">help</span>(<span class="ruby-identifier">template</span>)
 
574
88:                 <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@ddl</span>
 
575
89:                     <span class="ruby-ivar">@ddl</span>.<span class="ruby-identifier">help</span>(<span class="ruby-identifier">template</span>)
 
576
90:                 <span class="ruby-keyword kw">else</span>
 
577
91:                     <span class="ruby-keyword kw">return</span> <span class="ruby-node">&quot;Can't find DDL for agent '#{@agent}'&quot;</span>
 
578
92:                 <span class="ruby-keyword kw">end</span>
 
579
93:             <span class="ruby-keyword kw">end</span>
574
580
</pre>
575
581
          </div>
576
582
        </div>
577
583
      </div>
578
584
 
579
 
      <div id="method-M000097" class="method-detail">
580
 
        <a name="M000097"></a>
 
585
      <div id="method-M000099" class="method-detail">
 
586
        <a name="M000099"></a>
581
587
 
582
588
        <div class="method-heading">
583
 
          <a href="#M000097" class="method-signature">
 
589
          <a href="#M000099" class="method-signature">
584
590
          <span class="method-name">identity_filter</span><span class="method-args">(identity)</span>
585
591
          </a>
586
592
        </div>
590
596
Sets the identity filter
591
597
</p>
592
598
          <p><a class="source-toggle" href="#"
593
 
            onclick="toggleCode('M000097-source');return false;">[Source]</a></p>
594
 
          <div class="method-source-code" id="M000097-source">
 
599
            onclick="toggleCode('M000099-source');return false;">[Source]</a></p>
 
600
          <div class="method-source-code" id="M000099-source">
595
601
<pre>
596
 
     <span class="ruby-comment cmt"># File lib/mcollective/rpc/client.rb, line 281</span>
597
 
281:             <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">identity_filter</span>(<span class="ruby-identifier">identity</span>)
598
 
282:                 <span class="ruby-ivar">@filter</span>[<span class="ruby-value str">&quot;identity&quot;</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">identity</span>
599
 
283:                 <span class="ruby-ivar">@filter</span>[<span class="ruby-value str">&quot;identity&quot;</span>].<span class="ruby-identifier">compact!</span>
600
 
284:                 <span class="ruby-identifier">reset</span>
601
 
285:             <span class="ruby-keyword kw">end</span>
 
602
     <span class="ruby-comment cmt"># File lib/mcollective/rpc/client.rb, line 287</span>
 
603
287:             <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">identity_filter</span>(<span class="ruby-identifier">identity</span>)
 
604
288:                 <span class="ruby-ivar">@filter</span>[<span class="ruby-value str">&quot;identity&quot;</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">identity</span>
 
605
289:                 <span class="ruby-ivar">@filter</span>[<span class="ruby-value str">&quot;identity&quot;</span>].<span class="ruby-identifier">compact!</span>
 
606
290:                 <span class="ruby-identifier">reset</span>
 
607
291:             <span class="ruby-keyword kw">end</span>
602
608
</pre>
603
609
          </div>
604
610
        </div>
605
611
      </div>
606
612
 
607
 
      <div id="method-M000102" class="method-detail">
608
 
        <a name="M000102"></a>
 
613
      <div id="method-M000104" class="method-detail">
 
614
        <a name="M000104"></a>
609
615
 
610
616
        <div class="method-heading">
611
 
          <a href="#M000102" class="method-signature">
 
617
          <a href="#M000104" class="method-signature">
612
618
          <span class="method-name">limit_targets=</span><span class="method-args">(limit)</span>
613
619
          </a>
614
620
        </div>
619
625
nodes we&#8216;ll target
620
626
</p>
621
627
          <p><a class="source-toggle" href="#"
622
 
            onclick="toggleCode('M000102-source');return false;">[Source]</a></p>
623
 
          <div class="method-source-code" id="M000102-source">
 
628
            onclick="toggleCode('M000104-source');return false;">[Source]</a></p>
 
629
          <div class="method-source-code" id="M000104-source">
624
630
<pre>
625
 
     <span class="ruby-comment cmt"># File lib/mcollective/rpc/client.rb, line 338</span>
626
 
338:             <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">limit_targets=</span>(<span class="ruby-identifier">limit</span>)
627
 
339:                 <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">limit</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">String</span>)
628
 
340:                     <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Invalid limit specified: #{limit} valid limits are /^\d+%*$/&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">limit</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/^\d+%*$/</span>
629
 
341:                     <span class="ruby-ivar">@limit_targets</span> = <span class="ruby-identifier">limit</span>
630
 
342:                 <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">limit</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">:to_i</span>)
631
 
343:                     <span class="ruby-identifier">limit</span> = <span class="ruby-identifier">limit</span>.<span class="ruby-identifier">to_i</span>
632
 
344:                     <span class="ruby-identifier">limit</span> = <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">limit</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
633
 
345:                     <span class="ruby-ivar">@limit_targets</span> = <span class="ruby-identifier">limit</span>
634
 
346:                 <span class="ruby-keyword kw">else</span>
635
 
347:                     <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Don't know how to handle limit of type #{limit.class}&quot;</span>
636
 
348:                 <span class="ruby-keyword kw">end</span>
637
 
349:             <span class="ruby-keyword kw">end</span>
 
631
     <span class="ruby-comment cmt"># File lib/mcollective/rpc/client.rb, line 344</span>
 
632
344:             <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">limit_targets=</span>(<span class="ruby-identifier">limit</span>)
 
633
345:                 <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">limit</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">String</span>)
 
634
346:                     <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Invalid limit specified: #{limit} valid limits are /^\d+%*$/&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">limit</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/^\d+%*$/</span>
 
635
347:                     <span class="ruby-ivar">@limit_targets</span> = <span class="ruby-identifier">limit</span>
 
636
348:                 <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">limit</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">:to_i</span>)
 
637
349:                     <span class="ruby-identifier">limit</span> = <span class="ruby-identifier">limit</span>.<span class="ruby-identifier">to_i</span>
 
638
350:                     <span class="ruby-identifier">limit</span> = <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">limit</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
 
639
351:                     <span class="ruby-ivar">@limit_targets</span> = <span class="ruby-identifier">limit</span>
 
640
352:                 <span class="ruby-keyword kw">else</span>
 
641
353:                     <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Don't know how to handle limit of type #{limit.class}&quot;</span>
 
642
354:                 <span class="ruby-keyword kw">end</span>
 
643
355:             <span class="ruby-keyword kw">end</span>
638
644
</pre>
639
645
          </div>
640
646
        </div>
641
647
      </div>
642
648
 
643
 
      <div id="method-M000092" class="method-detail">
644
 
        <a name="M000092"></a>
 
649
      <div id="method-M000094" class="method-detail">
 
650
        <a name="M000094"></a>
645
651
 
646
652
        <div class="method-heading">
647
 
          <a href="#M000092" class="method-signature">
 
653
          <a href="#M000094" class="method-signature">
648
654
          <span class="method-name">method_missing</span><span class="method-args">(method_name, *args, &amp;block)</span>
649
655
          </a>
650
656
        </div>
655
661
</p>
656
662
<p>
657
663
Once the stub is created using the constructor or the <a
658
 
href="../RPC.html#M000049">RPC#rpcclient</a> helper you can call remote
 
664
href="../RPC.html#M000051">RPC#rpcclient</a> helper you can call remote
659
665
actions easily:
660
666
</p>
661
667
<pre>
741
747
This will output just the request id.
742
748
</p>
743
749
          <p><a class="source-toggle" href="#"
744
 
            onclick="toggleCode('M000092-source');return false;">[Source]</a></p>
745
 
          <div class="method-source-code" id="M000092-source">
 
750
            onclick="toggleCode('M000094-source');return false;">[Source]</a></p>
 
751
          <div class="method-source-code" id="M000094-source">
746
752
<pre>
747
 
     <span class="ruby-comment cmt"># File lib/mcollective/rpc/client.rb, line 169</span>
748
 
169:             <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">method_missing</span>(<span class="ruby-identifier">method_name</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
749
 
170:                 <span class="ruby-comment cmt"># set args to an empty hash if nothings given</span>
750
 
171:                 <span class="ruby-identifier">args</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>]
751
 
172:                 <span class="ruby-identifier">args</span> = {} <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">nil?</span>
752
 
173: 
753
 
174:                 <span class="ruby-identifier">action</span> = <span class="ruby-identifier">method_name</span>.<span class="ruby-identifier">to_s</span>
754
 
175: 
755
 
176:                 <span class="ruby-ivar">@stats</span>.<span class="ruby-identifier">reset</span>
756
 
177: 
757
 
178:                 <span class="ruby-ivar">@ddl</span>.<span class="ruby-identifier">validate_request</span>(<span class="ruby-identifier">action</span>, <span class="ruby-identifier">args</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@ddl</span>
 
753
     <span class="ruby-comment cmt"># File lib/mcollective/rpc/client.rb, line 175</span>
 
754
175:             <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">method_missing</span>(<span class="ruby-identifier">method_name</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
 
755
176:                 <span class="ruby-comment cmt"># set args to an empty hash if nothings given</span>
 
756
177:                 <span class="ruby-identifier">args</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>]
 
757
178:                 <span class="ruby-identifier">args</span> = {} <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">nil?</span>
758
758
179: 
759
 
180:                 <span class="ruby-comment cmt"># Handle single target requests by doing discovery and picking</span>
760
 
181:                 <span class="ruby-comment cmt"># a random node.  Then do a custom request specifying a filter</span>
761
 
182:                 <span class="ruby-comment cmt"># that will only match the one node.</span>
762
 
183:                 <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@limit_targets</span>
763
 
184:                     <span class="ruby-identifier">target_nodes</span> = <span class="ruby-identifier">pick_nodes_from_discovered</span>(<span class="ruby-ivar">@limit_targets</span>)
764
 
185:                     <span class="ruby-constant">Log</span>.<span class="ruby-identifier">instance</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">&quot;Picked #{target_nodes.join(',')} as limited target(s)&quot;</span>)
765
 
186: 
766
 
187:                     <span class="ruby-identifier">custom_request</span>(<span class="ruby-identifier">action</span>, <span class="ruby-identifier">args</span>, <span class="ruby-identifier">target_nodes</span>, {<span class="ruby-value str">&quot;identity&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">/^(#{target_nodes.join('|')})$/</span>}, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
767
 
188:                 <span class="ruby-keyword kw">else</span>
768
 
189:                     <span class="ruby-comment cmt"># Normal agent requests as per client.action(args)</span>
769
 
190:                     <span class="ruby-identifier">call_agent</span>(<span class="ruby-identifier">action</span>, <span class="ruby-identifier">args</span>, <span class="ruby-identifier">options</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
770
 
191:                 <span class="ruby-keyword kw">end</span>
771
 
192:             <span class="ruby-keyword kw">end</span>
 
759
180:                 <span class="ruby-identifier">action</span> = <span class="ruby-identifier">method_name</span>.<span class="ruby-identifier">to_s</span>
 
760
181: 
 
761
182:                 <span class="ruby-ivar">@stats</span>.<span class="ruby-identifier">reset</span>
 
762
183: 
 
763
184:                 <span class="ruby-ivar">@ddl</span>.<span class="ruby-identifier">validate_request</span>(<span class="ruby-identifier">action</span>, <span class="ruby-identifier">args</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@ddl</span>
 
764
185: 
 
765
186:                 <span class="ruby-comment cmt"># Handle single target requests by doing discovery and picking</span>
 
766
187:                 <span class="ruby-comment cmt"># a random node.  Then do a custom request specifying a filter</span>
 
767
188:                 <span class="ruby-comment cmt"># that will only match the one node.</span>
 
768
189:                 <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@limit_targets</span>
 
769
190:                     <span class="ruby-identifier">target_nodes</span> = <span class="ruby-identifier">pick_nodes_from_discovered</span>(<span class="ruby-ivar">@limit_targets</span>)
 
770
191:                     <span class="ruby-constant">Log</span>.<span class="ruby-identifier">instance</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">&quot;Picked #{target_nodes.join(',')} as limited target(s)&quot;</span>)
 
771
192: 
 
772
193:                     <span class="ruby-identifier">custom_request</span>(<span class="ruby-identifier">action</span>, <span class="ruby-identifier">args</span>, <span class="ruby-identifier">target_nodes</span>, {<span class="ruby-value str">&quot;identity&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">/^(#{target_nodes.join('|')})$/</span>}, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
 
773
194:                 <span class="ruby-keyword kw">else</span>
 
774
195:                     <span class="ruby-comment cmt"># Normal agent requests as per client.action(args)</span>
 
775
196:                     <span class="ruby-identifier">call_agent</span>(<span class="ruby-identifier">action</span>, <span class="ruby-identifier">args</span>, <span class="ruby-identifier">options</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
 
776
197:                 <span class="ruby-keyword kw">end</span>
 
777
198:             <span class="ruby-keyword kw">end</span>
772
778
</pre>
773
779
          </div>
774
780
        </div>
775
781
      </div>
776
782
 
777
 
      <div id="method-M000091" class="method-detail">
778
 
        <a name="M000091"></a>
 
783
      <div id="method-M000093" class="method-detail">
 
784
        <a name="M000093"></a>
779
785
 
780
786
        <div class="method-heading">
781
 
          <a href="#M000091" class="method-signature">
 
787
          <a href="#M000093" class="method-signature">
782
788
          <span class="method-name">new_request</span><span class="method-args">(action, data)</span>
783
789
          </a>
784
790
        </div>
811
817
code requires such a thing
812
818
</p>
813
819
          <p><a class="source-toggle" href="#"
814
 
            onclick="toggleCode('M000091-source');return false;">[Source]</a></p>
815
 
          <div class="method-source-code" id="M000091-source">
 
820
            onclick="toggleCode('M000093-source');return false;">[Source]</a></p>
 
821
          <div class="method-source-code" id="M000093-source">
816
822
<pre>
817
 
     <span class="ruby-comment cmt"># File lib/mcollective/rpc/client.rb, line 108</span>
818
 
108:             <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">new_request</span>(<span class="ruby-identifier">action</span>, <span class="ruby-identifier">data</span>)
819
 
109:                 <span class="ruby-identifier">callerid</span> = <span class="ruby-constant">PluginManager</span>[<span class="ruby-value str">&quot;security_plugin&quot;</span>].<span class="ruby-identifier">callerid</span>
820
 
110: 
821
 
111:                 {<span class="ruby-identifier">:agent</span>  =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@agent</span>,
822
 
112:                  <span class="ruby-identifier">:action</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">action</span>,
823
 
113:                  <span class="ruby-identifier">:caller</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">callerid</span>,
824
 
114:                  <span class="ruby-identifier">:data</span>   =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">data</span>}
825
 
115:             <span class="ruby-keyword kw">end</span>
 
823
     <span class="ruby-comment cmt"># File lib/mcollective/rpc/client.rb, line 114</span>
 
824
114:             <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">new_request</span>(<span class="ruby-identifier">action</span>, <span class="ruby-identifier">data</span>)
 
825
115:                 <span class="ruby-identifier">callerid</span> = <span class="ruby-constant">PluginManager</span>[<span class="ruby-value str">&quot;security_plugin&quot;</span>].<span class="ruby-identifier">callerid</span>
 
826
116: 
 
827
117:                 {<span class="ruby-identifier">:agent</span>  =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@agent</span>,
 
828
118:                  <span class="ruby-identifier">:action</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">action</span>,
 
829
119:                  <span class="ruby-identifier">:caller</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">callerid</span>,
 
830
120:                  <span class="ruby-identifier">:data</span>   =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">data</span>}
 
831
121:             <span class="ruby-keyword kw">end</span>
826
832
</pre>
827
833
          </div>
828
834
        </div>
829
835
      </div>
830
836
 
831
 
      <div id="method-M000101" class="method-detail">
832
 
        <a name="M000101"></a>
 
837
      <div id="method-M000103" class="method-detail">
 
838
        <a name="M000103"></a>
833
839
 
834
840
        <div class="method-heading">
835
 
          <a href="#M000101" class="method-signature">
 
841
          <a href="#M000103" class="method-signature">
836
842
          <span class="method-name">options</span><span class="method-args">()</span>
837
843
          </a>
838
844
        </div>
839
845
      
840
846
        <div class="method-description">
841
847
          <p>
842
 
Provides a normal <a href="Client.html#M000101">options</a> hash like you
 
848
Provides a normal <a href="Client.html#M000103">options</a> hash like you
843
849
would get from <a href="../Optionparser.html">Optionparser</a>
844
850
</p>
845
851
          <p><a class="source-toggle" href="#"
846
 
            onclick="toggleCode('M000101-source');return false;">[Source]</a></p>
847
 
          <div class="method-source-code" id="M000101-source">
 
852
            onclick="toggleCode('M000103-source');return false;">[Source]</a></p>
 
853
          <div class="method-source-code" id="M000103-source">
848
854
<pre>
849
 
     <span class="ruby-comment cmt"># File lib/mcollective/rpc/client.rb, line 328</span>
850
 
328:             <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">options</span>
851
 
329:                 {<span class="ruby-identifier">:disctimeout</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@discovery_timeout</span>,
852
 
330:                  <span class="ruby-identifier">:timeout</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@timeout</span>,
853
 
331:                  <span class="ruby-identifier">:verbose</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@verbose</span>,
854
 
332:                  <span class="ruby-identifier">:filter</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@filter</span>,
855
 
333:                  <span class="ruby-identifier">:config</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@config</span>}
856
 
334:             <span class="ruby-keyword kw">end</span>
 
855
     <span class="ruby-comment cmt"># File lib/mcollective/rpc/client.rb, line 334</span>
 
856
334:             <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">options</span>
 
857
335:                 {<span class="ruby-identifier">:disctimeout</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@discovery_timeout</span>,
 
858
336:                  <span class="ruby-identifier">:timeout</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@timeout</span>,
 
859
337:                  <span class="ruby-identifier">:verbose</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@verbose</span>,
 
860
338:                  <span class="ruby-identifier">:filter</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@filter</span>,
 
861
339:                  <span class="ruby-identifier">:config</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@config</span>}
 
862
340:             <span class="ruby-keyword kw">end</span>
857
863
</pre>
858
864
          </div>
859
865
        </div>
860
866
      </div>
861
867
 
862
 
      <div id="method-M000098" class="method-detail">
863
 
        <a name="M000098"></a>
 
868
      <div id="method-M000100" class="method-detail">
 
869
        <a name="M000100"></a>
864
870
 
865
871
        <div class="method-heading">
866
 
          <a href="#M000098" class="method-signature">
 
872
          <a href="#M000100" class="method-signature">
867
873
          <span class="method-name">reset</span><span class="method-args">()</span>
868
874
          </a>
869
875
        </div>
874
880
the cached discovery
875
881
</p>
876
882
          <p><a class="source-toggle" href="#"
877
 
            onclick="toggleCode('M000098-source');return false;">[Source]</a></p>
878
 
          <div class="method-source-code" id="M000098-source">
 
883
            onclick="toggleCode('M000100-source');return false;">[Source]</a></p>
 
884
          <div class="method-source-code" id="M000100-source">
879
885
<pre>
880
 
     <span class="ruby-comment cmt"># File lib/mcollective/rpc/client.rb, line 289</span>
881
 
289:             <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reset</span>
882
 
290:                 <span class="ruby-ivar">@discovered_agents</span> = <span class="ruby-keyword kw">nil</span>
883
 
291:             <span class="ruby-keyword kw">end</span>
 
886
     <span class="ruby-comment cmt"># File lib/mcollective/rpc/client.rb, line 295</span>
 
887
295:             <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reset</span>
 
888
296:                 <span class="ruby-ivar">@discovered_agents</span> = <span class="ruby-keyword kw">nil</span>
 
889
297:             <span class="ruby-keyword kw">end</span>
884
890
</pre>
885
891
          </div>
886
892
        </div>
887
893
      </div>
888
894
 
889
 
      <div id="method-M000099" class="method-detail">
890
 
        <a name="M000099"></a>
 
895
      <div id="method-M000101" class="method-detail">
 
896
        <a name="M000101"></a>
891
897
 
892
898
        <div class="method-heading">
893
 
          <a href="#M000099" class="method-signature">
 
899
          <a href="#M000101" class="method-signature">
894
900
          <span class="method-name">reset_filter</span><span class="method-args">()</span>
895
901
          </a>
896
902
        </div>
900
906
Reet the filter to an empty one
901
907
</p>
902
908
          <p><a class="source-toggle" href="#"
903
 
            onclick="toggleCode('M000099-source');return false;">[Source]</a></p>
904
 
          <div class="method-source-code" id="M000099-source">
 
909
            onclick="toggleCode('M000101-source');return false;">[Source]</a></p>
 
910
          <div class="method-source-code" id="M000101-source">
905
911
<pre>
906
 
     <span class="ruby-comment cmt"># File lib/mcollective/rpc/client.rb, line 294</span>
907
 
294:             <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reset_filter</span>
908
 
295:                 <span class="ruby-ivar">@filter</span> = <span class="ruby-constant">Util</span>.<span class="ruby-identifier">empty_filter</span>
909
 
296:                 <span class="ruby-identifier">agent_filter</span> <span class="ruby-ivar">@agent</span>
910
 
297:             <span class="ruby-keyword kw">end</span>
 
912
     <span class="ruby-comment cmt"># File lib/mcollective/rpc/client.rb, line 300</span>
 
913
300:             <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reset_filter</span>
 
914
301:                 <span class="ruby-ivar">@filter</span> = <span class="ruby-constant">Util</span>.<span class="ruby-identifier">empty_filter</span>
 
915
302:                 <span class="ruby-identifier">agent_filter</span> <span class="ruby-ivar">@agent</span>
 
916
303:             <span class="ruby-keyword kw">end</span>
911
917
</pre>
912
918
          </div>
913
919
        </div>