Update version according to OSCI-856
[packages/precise/mcollective.git] / doc / classes / MCollective / Discovery.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>Class: MCollective::Discovery</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>Class</strong></td>
53           <td class="class-name-in-header">MCollective::Discovery</td>
54         </tr>
55         <tr class="top-aligned-row">
56             <td><strong>In:</strong></td>
57             <td>
58                 <a href="../../files/lib/mcollective/discovery_rb.html">
59                 lib/mcollective/discovery.rb
60                 </a>
61         <br />
62             </td>
63         </tr>
64
65         <tr class="top-aligned-row">
66             <td><strong>Parent:</strong></td>
67             <td>
68                 Object
69             </td>
70         </tr>
71         </table>
72     </div>
73   <!-- banner header -->
74
75   <div id="bodyContent">
76
77
78
79   <div id="contextContent">
80
81
82
83    </div>
84
85     <div id="method-list">
86       <h3 class="section-bar">Methods</h3>
87
88       <div class="name-list">
89       <a href="#M000404">check_capabilities</a>&nbsp;&nbsp;
90       <a href="#M000403">ddl</a>&nbsp;&nbsp;
91       <a href="#M000408">discover</a>&nbsp;&nbsp;
92       <a href="#M000402">discovery_class</a>&nbsp;&nbsp;
93       <a href="#M000401">discovery_method</a>&nbsp;&nbsp;
94       <a href="#M000407">discovery_timeout</a>&nbsp;&nbsp;
95       <a href="#M000398">find_known_methods</a>&nbsp;&nbsp;
96       <a href="#M000400">force_direct_mode?</a>&nbsp;&nbsp;
97       <a href="#M000405">force_discovery_method_by_filter</a>&nbsp;&nbsp;
98       <a href="#M000399">has_method?</a>&nbsp;&nbsp;
99       <a href="#M000397">new</a>&nbsp;&nbsp;
100       <a href="#M000406">timeout_for_compound_filter</a>&nbsp;&nbsp;
101       </div>
102     </div>
103
104   </div>
105
106
107     <!-- if includes -->
108
109     <div id="section">
110
111
112
113
114
115       
116
117
118     <!-- if method_list -->
119     <div id="methods">
120       <h3 class="section-bar">Public Class methods</h3>
121
122       <div id="method-M000397" class="method-detail">
123         <a name="M000397"></a>
124
125         <div class="method-heading">
126           <a href="#M000397" class="method-signature">
127           <span class="method-name">new</span><span class="method-args">(client)</span>
128           </a>
129         </div>
130       
131         <div class="method-description">
132           <p><a class="source-toggle" href="#"
133             onclick="toggleCode('M000397-source');return false;">[Source]</a></p>
134           <div class="method-source-code" id="M000397-source">
135 <pre>
136    <span class="ruby-comment cmt"># File lib/mcollective/discovery.rb, line 3</span>
137 3:     <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">client</span>)
138 4:       <span class="ruby-ivar">@known_methods</span> = <span class="ruby-identifier">find_known_methods</span>
139 5:       <span class="ruby-ivar">@default_method</span> = <span class="ruby-constant">Config</span>.<span class="ruby-identifier">instance</span>.<span class="ruby-identifier">default_discovery_method</span>
140 6:       <span class="ruby-ivar">@client</span> = <span class="ruby-identifier">client</span>
141 7:     <span class="ruby-keyword kw">end</span>
142 </pre>
143           </div>
144         </div>
145       </div>
146
147       <h3 class="section-bar">Public Instance methods</h3>
148
149       <div id="method-M000404" class="method-detail">
150         <a name="M000404"></a>
151
152         <div class="method-heading">
153           <a href="#M000404" class="method-signature">
154           <span class="method-name">check_capabilities</span><span class="method-args">(filter)</span>
155           </a>
156         </div>
157       
158         <div class="method-description">
159           <p>
160 <a href="Agent.html">Agent</a> filters are always present no matter what,
161 so we cant raise an error if the capabilities suggest the discovery method
162 cant do agents we just have to rely on the discovery plugin to not do
163 stupid things in the presense of a agent filter
164 </p>
165           <p><a class="source-toggle" href="#"
166             onclick="toggleCode('M000404-source');return false;">[Source]</a></p>
167           <div class="method-source-code" id="M000404-source">
168 <pre>
169     <span class="ruby-comment cmt"># File lib/mcollective/discovery.rb, line 62</span>
170 62:     <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">check_capabilities</span>(<span class="ruby-identifier">filter</span>)
171 63:       <span class="ruby-identifier">capabilities</span> = <span class="ruby-identifier">ddl</span>.<span class="ruby-identifier">discovery_interface</span>[<span class="ruby-identifier">:capabilities</span>]
172 64: 
173 65:       <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">capabilities</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">:classes</span>)
174 66:         <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Cannot use class filters while using the '%s' discovery method&quot;</span> <span class="ruby-operator">%</span> <span class="ruby-identifier">discovery_method</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">filter</span>[<span class="ruby-value str">&quot;cf_class&quot;</span>].<span class="ruby-identifier">empty?</span>
175 67:       <span class="ruby-keyword kw">end</span>
176 68: 
177 69:       <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">capabilities</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">:facts</span>)
178 70:         <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Cannot use fact filters while using the '%s' discovery method&quot;</span> <span class="ruby-operator">%</span> <span class="ruby-identifier">discovery_method</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">filter</span>[<span class="ruby-value str">&quot;fact&quot;</span>].<span class="ruby-identifier">empty?</span>
179 71:       <span class="ruby-keyword kw">end</span>
180 72: 
181 73:       <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">capabilities</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">:identity</span>)
182 74:         <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Cannot use identity filters while using the '%s' discovery method&quot;</span> <span class="ruby-operator">%</span> <span class="ruby-identifier">discovery_method</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">filter</span>[<span class="ruby-value str">&quot;identity&quot;</span>].<span class="ruby-identifier">empty?</span>
183 75:       <span class="ruby-keyword kw">end</span>
184 76: 
185 77:       <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">capabilities</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">:compound</span>)
186 78:         <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Cannot use compound filters while using the '%s' discovery method&quot;</span> <span class="ruby-operator">%</span> <span class="ruby-identifier">discovery_method</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">filter</span>[<span class="ruby-value str">&quot;compound&quot;</span>].<span class="ruby-identifier">empty?</span>
187 79:       <span class="ruby-keyword kw">end</span>
188 80:     <span class="ruby-keyword kw">end</span>
189 </pre>
190           </div>
191         </div>
192       </div>
193
194       <div id="method-M000403" class="method-detail">
195         <a name="M000403"></a>
196
197         <div class="method-heading">
198           <a href="#M000403" class="method-signature">
199           <span class="method-name">ddl</span><span class="method-args">()</span>
200           </a>
201         </div>
202       
203         <div class="method-description">
204           <p><a class="source-toggle" href="#"
205             onclick="toggleCode('M000403-source');return false;">[Source]</a></p>
206           <div class="method-source-code" id="M000403-source">
207 <pre>
208     <span class="ruby-comment cmt"># File lib/mcollective/discovery.rb, line 47</span>
209 47:     <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">ddl</span>
210 48:       <span class="ruby-ivar">@ddl</span> <span class="ruby-operator">||=</span> <span class="ruby-constant">DDL</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">discovery_method</span>, <span class="ruby-identifier">:discovery</span>)
211 49: 
212 50:       <span class="ruby-comment cmt"># if the discovery method got changed we might have an old DDL cached</span>
213 51:       <span class="ruby-comment cmt"># this will detect that and reread the correct DDL from disk</span>
214 52:       <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@ddl</span>.<span class="ruby-identifier">meta</span>[<span class="ruby-identifier">:name</span>] <span class="ruby-operator">==</span> <span class="ruby-identifier">discovery_method</span>
215 53:         <span class="ruby-ivar">@ddl</span> = <span class="ruby-constant">DDL</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">discovery_method</span>, <span class="ruby-identifier">:discovery</span>)
216 54:       <span class="ruby-keyword kw">end</span>
217 55: 
218 56:       <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@ddl</span>
219 57:     <span class="ruby-keyword kw">end</span>
220 </pre>
221           </div>
222         </div>
223       </div>
224
225       <div id="method-M000408" class="method-detail">
226         <a name="M000408"></a>
227
228         <div class="method-heading">
229           <a href="#M000408" class="method-signature">
230           <span class="method-name">discover</span><span class="method-args">(filter, timeout, limit)</span>
231           </a>
232         </div>
233       
234         <div class="method-description">
235           <p><a class="source-toggle" href="#"
236             onclick="toggleCode('M000408-source');return false;">[Source]</a></p>
237           <div class="method-source-code" id="M000408-source">
238 <pre>
239      <span class="ruby-comment cmt"># File lib/mcollective/discovery.rb, line 127</span>
240 127:     <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">discover</span>(<span class="ruby-identifier">filter</span>, <span class="ruby-identifier">timeout</span>, <span class="ruby-identifier">limit</span>)
241 128:       <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Limit has to be an integer&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">limit</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Fixnum</span>)
242 129: 
243 130:       <span class="ruby-identifier">force_discovery_method_by_filter</span>(<span class="ruby-identifier">filter</span>)
244 131: 
245 132:       <span class="ruby-identifier">check_capabilities</span>(<span class="ruby-identifier">filter</span>)
246 133: 
247 134:       <span class="ruby-identifier">discovered</span> = <span class="ruby-identifier">discovery_class</span>.<span class="ruby-identifier">discover</span>(<span class="ruby-identifier">filter</span>, <span class="ruby-identifier">discovery_timeout</span>(<span class="ruby-identifier">timeout</span>, <span class="ruby-identifier">filter</span>), <span class="ruby-identifier">limit</span>, <span class="ruby-ivar">@client</span>)
248 135: 
249 136:       <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">limit</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
250 137:         <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">discovered</span>[<span class="ruby-value">0</span>,<span class="ruby-identifier">limit</span>]
251 138:       <span class="ruby-keyword kw">else</span>
252 139:         <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">discovered</span>
253 140:       <span class="ruby-keyword kw">end</span>
254 141:     <span class="ruby-keyword kw">end</span>
255 </pre>
256           </div>
257         </div>
258       </div>
259
260       <div id="method-M000402" class="method-detail">
261         <a name="M000402"></a>
262
263         <div class="method-heading">
264           <a href="#M000402" class="method-signature">
265           <span class="method-name">discovery_class</span><span class="method-args">()</span>
266           </a>
267         </div>
268       
269         <div class="method-description">
270           <p><a class="source-toggle" href="#"
271             onclick="toggleCode('M000402-source');return false;">[Source]</a></p>
272           <div class="method-source-code" id="M000402-source">
273 <pre>
274     <span class="ruby-comment cmt"># File lib/mcollective/discovery.rb, line 39</span>
275 39:     <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">discovery_class</span>
276 40:       <span class="ruby-identifier">method</span> = <span class="ruby-identifier">discovery_method</span>.<span class="ruby-identifier">capitalize</span>
277 41: 
278 42:       <span class="ruby-constant">PluginManager</span>.<span class="ruby-identifier">loadclass</span>(<span class="ruby-node">&quot;MCollective::Discovery::#{method}&quot;</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">const_defined?</span>(<span class="ruby-identifier">method</span>)
279 43: 
280 44:       <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">const_get</span>(<span class="ruby-identifier">method</span>)
281 45:     <span class="ruby-keyword kw">end</span>
282 </pre>
283           </div>
284         </div>
285       </div>
286
287       <div id="method-M000401" class="method-detail">
288         <a name="M000401"></a>
289
290         <div class="method-heading">
291           <a href="#M000401" class="method-signature">
292           <span class="method-name">discovery_method</span><span class="method-args">()</span>
293           </a>
294         </div>
295       
296         <div class="method-description">
297           <p><a class="source-toggle" href="#"
298             onclick="toggleCode('M000401-source');return false;">[Source]</a></p>
299           <div class="method-source-code" id="M000401-source">
300 <pre>
301     <span class="ruby-comment cmt"># File lib/mcollective/discovery.rb, line 21</span>
302 21:     <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">discovery_method</span>
303 22:       <span class="ruby-identifier">method</span> = <span class="ruby-value str">&quot;mc&quot;</span>
304 23: 
305 24:       <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@client</span>.<span class="ruby-identifier">options</span>[<span class="ruby-identifier">:discovery_method</span>]
306 25:         <span class="ruby-identifier">method</span> = <span class="ruby-ivar">@client</span>.<span class="ruby-identifier">options</span>[<span class="ruby-identifier">:discovery_method</span>]
307 26:       <span class="ruby-keyword kw">else</span>
308 27:         <span class="ruby-identifier">method</span> = <span class="ruby-ivar">@default_method</span>
309 28:       <span class="ruby-keyword kw">end</span>
310 29: 
311 30:       <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Unknown discovery method %s&quot;</span> <span class="ruby-operator">%</span> <span class="ruby-identifier">method</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">has_method?</span>(<span class="ruby-identifier">method</span>)
312 31: 
313 32:       <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">method</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;mc&quot;</span>
314 33:         <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Custom discovery methods require direct addressing mode&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-constant">Config</span>.<span class="ruby-identifier">instance</span>.<span class="ruby-identifier">direct_addressing</span>
315 34:       <span class="ruby-keyword kw">end</span>
316 35: 
317 36:       <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">method</span>
318 37:     <span class="ruby-keyword kw">end</span>
319 </pre>
320           </div>
321         </div>
322       </div>
323
324       <div id="method-M000407" class="method-detail">
325         <a name="M000407"></a>
326
327         <div class="method-heading">
328           <a href="#M000407" class="method-signature">
329           <span class="method-name">discovery_timeout</span><span class="method-args">(timeout, filter)</span>
330           </a>
331         </div>
332       
333         <div class="method-description">
334           <p><a class="source-toggle" href="#"
335             onclick="toggleCode('M000407-source');return false;">[Source]</a></p>
336           <div class="method-source-code" id="M000407-source">
337 <pre>
338      <span class="ruby-comment cmt"># File lib/mcollective/discovery.rb, line 117</span>
339 117:     <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">discovery_timeout</span>(<span class="ruby-identifier">timeout</span>, <span class="ruby-identifier">filter</span>)
340 118:       <span class="ruby-identifier">timeout</span> = <span class="ruby-identifier">ddl</span>.<span class="ruby-identifier">meta</span>[<span class="ruby-identifier">:timeout</span>] <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">timeout</span>
341 119: 
342 120:       <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">filter</span>[<span class="ruby-value str">&quot;compound&quot;</span>] <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">filter</span>[<span class="ruby-value str">&quot;compound&quot;</span>].<span class="ruby-identifier">empty?</span>)
343 121:         <span class="ruby-identifier">timeout</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">timeout_for_compound_filter</span>(<span class="ruby-identifier">filter</span>[<span class="ruby-value str">&quot;compound&quot;</span>])
344 122:       <span class="ruby-keyword kw">else</span>
345 123:         <span class="ruby-identifier">timeout</span>
346 124:       <span class="ruby-keyword kw">end</span>
347 125:     <span class="ruby-keyword kw">end</span>
348 </pre>
349           </div>
350         </div>
351       </div>
352
353       <div id="method-M000398" class="method-detail">
354         <a name="M000398"></a>
355
356         <div class="method-heading">
357           <a href="#M000398" class="method-signature">
358           <span class="method-name">find_known_methods</span><span class="method-args">()</span>
359           </a>
360         </div>
361       
362         <div class="method-description">
363           <p><a class="source-toggle" href="#"
364             onclick="toggleCode('M000398-source');return false;">[Source]</a></p>
365           <div class="method-source-code" id="M000398-source">
366 <pre>
367     <span class="ruby-comment cmt"># File lib/mcollective/discovery.rb, line 9</span>
368  9:     <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">find_known_methods</span>
369 10:       <span class="ruby-constant">PluginManager</span>.<span class="ruby-identifier">find</span>(<span class="ruby-value str">&quot;discovery&quot;</span>)
370 11:     <span class="ruby-keyword kw">end</span>
371 </pre>
372           </div>
373         </div>
374       </div>
375
376       <div id="method-M000400" class="method-detail">
377         <a name="M000400"></a>
378
379         <div class="method-heading">
380           <a href="#M000400" class="method-signature">
381           <span class="method-name">force_direct_mode?</span><span class="method-args">()</span>
382           </a>
383         </div>
384       
385         <div class="method-description">
386           <p><a class="source-toggle" href="#"
387             onclick="toggleCode('M000400-source');return false;">[Source]</a></p>
388           <div class="method-source-code" id="M000400-source">
389 <pre>
390     <span class="ruby-comment cmt"># File lib/mcollective/discovery.rb, line 17</span>
391 17:     <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">force_direct_mode?</span>
392 18:       <span class="ruby-identifier">discovery_method</span> <span class="ruby-operator">!=</span> <span class="ruby-value str">&quot;mc&quot;</span>
393 19:     <span class="ruby-keyword kw">end</span>
394 </pre>
395           </div>
396         </div>
397       </div>
398
399       <div id="method-M000405" class="method-detail">
400         <a name="M000405"></a>
401
402         <div class="method-heading">
403           <a href="#M000405" class="method-signature">
404           <span class="method-name">force_discovery_method_by_filter</span><span class="method-args">(filter)</span>
405           </a>
406         </div>
407       
408         <div class="method-description">
409           <p>
410 checks if compound filters are used and then forces the &#8216;mc&#8217;
411 discovery plugin
412 </p>
413           <p><a class="source-toggle" href="#"
414             onclick="toggleCode('M000405-source');return false;">[Source]</a></p>
415           <div class="method-source-code" id="M000405-source">
416 <pre>
417     <span class="ruby-comment cmt"># File lib/mcollective/discovery.rb, line 83</span>
418 83:     <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">force_discovery_method_by_filter</span>(<span class="ruby-identifier">filter</span>)
419 84:       <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">discovery_method</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;mc&quot;</span>
420 85:         <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">filter</span>[<span class="ruby-value str">&quot;compound&quot;</span>].<span class="ruby-identifier">empty?</span>
421 86:           <span class="ruby-constant">Log</span>.<span class="ruby-identifier">info</span> <span class="ruby-value str">&quot;Switching to mc discovery method because compound filters are used&quot;</span>
422 87:           <span class="ruby-ivar">@client</span>.<span class="ruby-identifier">options</span>[<span class="ruby-identifier">:discovery_method</span>] = <span class="ruby-value str">&quot;mc&quot;</span>
423 88: 
424 89:           <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span>
425 90:         <span class="ruby-keyword kw">end</span>
426 91:       <span class="ruby-keyword kw">end</span>
427 92: 
428 93:       <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
429 94:     <span class="ruby-keyword kw">end</span>
430 </pre>
431           </div>
432         </div>
433       </div>
434
435       <div id="method-M000399" class="method-detail">
436         <a name="M000399"></a>
437
438         <div class="method-heading">
439           <a href="#M000399" class="method-signature">
440           <span class="method-name">has_method?</span><span class="method-args">(method)</span>
441           </a>
442         </div>
443       
444         <div class="method-description">
445           <p><a class="source-toggle" href="#"
446             onclick="toggleCode('M000399-source');return false;">[Source]</a></p>
447           <div class="method-source-code" id="M000399-source">
448 <pre>
449     <span class="ruby-comment cmt"># File lib/mcollective/discovery.rb, line 13</span>
450 13:     <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">has_method?</span>(<span class="ruby-identifier">method</span>)
451 14:       <span class="ruby-ivar">@known_methods</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">method</span>)
452 15:     <span class="ruby-keyword kw">end</span>
453 </pre>
454           </div>
455         </div>
456       </div>
457
458       <div id="method-M000406" class="method-detail">
459         <a name="M000406"></a>
460
461         <div class="method-heading">
462           <a href="#M000406" class="method-signature">
463           <span class="method-name">timeout_for_compound_filter</span><span class="method-args">(compound_filter)</span>
464           </a>
465         </div>
466       
467         <div class="method-description">
468           <p>
469 if a compound filter is specified and it has any function then we read the
470 <a href="DDL.html">DDL</a> for each of those plugins and sum up the timeout
471 declared in the <a href="DDL.html">DDL</a>
472 </p>
473           <p><a class="source-toggle" href="#"
474             onclick="toggleCode('M000406-source');return false;">[Source]</a></p>
475           <div class="method-source-code" id="M000406-source">
476 <pre>
477      <span class="ruby-comment cmt"># File lib/mcollective/discovery.rb, line 99</span>
478  99:     <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">timeout_for_compound_filter</span>(<span class="ruby-identifier">compound_filter</span>)
479 100:       <span class="ruby-keyword kw">return</span> <span class="ruby-value">0</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">compound_filter</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">compound_filter</span>.<span class="ruby-identifier">empty?</span>
480 101: 
481 102:       <span class="ruby-identifier">timeout</span> = <span class="ruby-value">0</span>
482 103: 
483 104:       <span class="ruby-identifier">compound_filter</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">filter</span><span class="ruby-operator">|</span>
484 105:         <span class="ruby-identifier">filter</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">statement</span><span class="ruby-operator">|</span>
485 106:           <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">statement</span>[<span class="ruby-value str">&quot;fstatement&quot;</span>]
486 107:             <span class="ruby-identifier">pluginname</span> = <span class="ruby-constant">Data</span>.<span class="ruby-identifier">pluginname</span>(<span class="ruby-identifier">statement</span>[<span class="ruby-value str">&quot;fstatement&quot;</span>][<span class="ruby-value str">&quot;name&quot;</span>])
487 108:             <span class="ruby-identifier">ddl</span> = <span class="ruby-constant">DDL</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">pluginname</span>, <span class="ruby-identifier">:data</span>)
488 109:             <span class="ruby-identifier">timeout</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">ddl</span>.<span class="ruby-identifier">meta</span>[<span class="ruby-identifier">:timeout</span>]
489 110:           <span class="ruby-keyword kw">end</span>
490 111:         <span class="ruby-keyword kw">end</span>
491 112:       <span class="ruby-keyword kw">end</span>
492 113: 
493 114:       <span class="ruby-identifier">timeout</span>
494 115:     <span class="ruby-keyword kw">end</span>
495 </pre>
496           </div>
497         </div>
498       </div>
499
500
501     </div>
502
503
504   </div>
505
506
507 <div id="validator-badges">
508   <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
509 </div>
510
511 </body>
512 </html>