Update version according to OSCI-856
[packages/precise/mcollective.git] / doc / classes / MCollective / Agents.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::Agents</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::Agents</td>
54         </tr>
55         <tr class="top-aligned-row">
56             <td><strong>In:</strong></td>
57             <td>
58                 <a href="../../files/lib/mcollective/agents_rb.html">
59                 lib/mcollective/agents.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     <div id="description">
82       <p>
83 A collection of agents, loads them, reloads them and dispatches messages to
84 them. It uses the <a href="PluginManager.html">PluginManager</a> to store,
85 load and manage instances of plugins.
86 </p>
87
88     </div>
89
90
91    </div>
92
93     <div id="method-list">
94       <h3 class="section-bar">Methods</h3>
95
96       <div class="name-list">
97       <a href="#M000487">activate_agent?</a>&nbsp;&nbsp;
98       <a href="#M000491">agentlist</a>&nbsp;&nbsp;
99       <a href="#M000486">class_for_agent</a>&nbsp;&nbsp;
100       <a href="#M000483">clear!</a>&nbsp;&nbsp;
101       <a href="#M000490">dispatch</a>&nbsp;&nbsp;
102       <a href="#M000488">findagentfile</a>&nbsp;&nbsp;
103       <a href="#M000489">include?</a>&nbsp;&nbsp;
104       <a href="#M000485">loadagent</a>&nbsp;&nbsp;
105       <a href="#M000484">loadagents</a>&nbsp;&nbsp;
106       <a href="#M000482">new</a>&nbsp;&nbsp;
107       </div>
108     </div>
109
110   </div>
111
112
113     <!-- if includes -->
114
115     <div id="section">
116
117
118
119
120
121       
122
123
124     <!-- if method_list -->
125     <div id="methods">
126       <h3 class="section-bar">Public Class methods</h3>
127
128       <div id="method-M000491" class="method-detail">
129         <a name="M000491"></a>
130
131         <div class="method-heading">
132           <a href="#M000491" class="method-signature">
133           <span class="method-name">agentlist</span><span class="method-args">()</span>
134           </a>
135         </div>
136       
137         <div class="method-description">
138           <p>
139 Get a list of agents that we have
140 </p>
141           <p><a class="source-toggle" href="#"
142             onclick="toggleCode('M000491-source');return false;">[Source]</a></p>
143           <div class="method-source-code" id="M000491-source">
144 <pre>
145      <span class="ruby-comment cmt"># File lib/mcollective/agents.rb, line 145</span>
146 145:     <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">agentlist</span>
147 146:       <span class="ruby-ivar">@@agents</span>.<span class="ruby-identifier">keys</span>
148 147:     <span class="ruby-keyword kw">end</span>
149 </pre>
150           </div>
151         </div>
152       </div>
153
154       <div id="method-M000482" class="method-detail">
155         <a name="M000482"></a>
156
157         <div class="method-heading">
158           <a href="#M000482" class="method-signature">
159           <span class="method-name">new</span><span class="method-args">(agents = {})</span>
160           </a>
161         </div>
162       
163         <div class="method-description">
164           <p><a class="source-toggle" href="#"
165             onclick="toggleCode('M000482-source');return false;">[Source]</a></p>
166           <div class="method-source-code" id="M000482-source">
167 <pre>
168     <span class="ruby-comment cmt"># File lib/mcollective/agents.rb, line 5</span>
169  5:     <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">agents</span> = {})
170  6:       <span class="ruby-ivar">@config</span> = <span class="ruby-constant">Config</span>.<span class="ruby-identifier">instance</span>
171  7:       <span class="ruby-identifier">raise</span> (<span class="ruby-value str">&quot;Configuration has not been loaded, can't load agents&quot;</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@config</span>.<span class="ruby-identifier">configured</span>
172  8: 
173  9:       <span class="ruby-ivar">@@agents</span> = <span class="ruby-identifier">agents</span>
174 10: 
175 11:       <span class="ruby-identifier">loadagents</span>
176 12:     <span class="ruby-keyword kw">end</span>
177 </pre>
178           </div>
179         </div>
180       </div>
181
182       <h3 class="section-bar">Public Instance methods</h3>
183
184       <div id="method-M000487" class="method-detail">
185         <a name="M000487"></a>
186
187         <div class="method-heading">
188           <a href="#M000487" class="method-signature">
189           <span class="method-name">activate_agent?</span><span class="method-args">(agent)</span>
190           </a>
191         </div>
192       
193         <div class="method-description">
194           <p>
195 Checks if a plugin should be activated by calling activate? on it if it
196 responds to that method else always activate it
197 </p>
198           <p><a class="source-toggle" href="#"
199             onclick="toggleCode('M000487-source');return false;">[Source]</a></p>
200           <div class="method-source-code" id="M000487-source">
201 <pre>
202     <span class="ruby-comment cmt"># File lib/mcollective/agents.rb, line 85</span>
203 85:     <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">activate_agent?</span>(<span class="ruby-identifier">agent</span>)
204 86:       <span class="ruby-identifier">klass</span> = <span class="ruby-constant">Kernel</span>.<span class="ruby-identifier">const_get</span>(<span class="ruby-value str">&quot;MCollective&quot;</span>).<span class="ruby-identifier">const_get</span>(<span class="ruby-value str">&quot;Agent&quot;</span>).<span class="ruby-identifier">const_get</span>(<span class="ruby-identifier">agent</span>.<span class="ruby-identifier">capitalize</span>)
205 87: 
206 88:       <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">klass</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value str">&quot;activate?&quot;</span>)
207 89:         <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">klass</span>.<span class="ruby-identifier">activate?</span>
208 90:       <span class="ruby-keyword kw">else</span>
209 91:         <span class="ruby-constant">Log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">&quot;#{klass} does not have an activate? method, activating as default&quot;</span>)
210 92:         <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span>
211 93:       <span class="ruby-keyword kw">end</span>
212 94:     <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>
213 95:       <span class="ruby-constant">Log</span>.<span class="ruby-identifier">warn</span>(<span class="ruby-node">&quot;Agent activation check for #{agent} failed: #{e.class}: #{e}&quot;</span>)
214 96:       <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
215 97:     <span class="ruby-keyword kw">end</span>
216 </pre>
217           </div>
218         </div>
219       </div>
220
221       <div id="method-M000486" class="method-detail">
222         <a name="M000486"></a>
223
224         <div class="method-heading">
225           <a href="#M000486" class="method-signature">
226           <span class="method-name">class_for_agent</span><span class="method-args">(agent)</span>
227           </a>
228         </div>
229       
230         <div class="method-description">
231           <p>
232 Builds a class name string given a <a href="Agent.html">Agent</a> name
233 </p>
234           <p><a class="source-toggle" href="#"
235             onclick="toggleCode('M000486-source');return false;">[Source]</a></p>
236           <div class="method-source-code" id="M000486-source">
237 <pre>
238     <span class="ruby-comment cmt"># File lib/mcollective/agents.rb, line 78</span>
239 78:     <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">class_for_agent</span>(<span class="ruby-identifier">agent</span>)
240 79:       <span class="ruby-node">&quot;MCollective::Agent::#{agent.capitalize}&quot;</span>
241 80:     <span class="ruby-keyword kw">end</span>
242 </pre>
243           </div>
244         </div>
245       </div>
246
247       <div id="method-M000483" class="method-detail">
248         <a name="M000483"></a>
249
250         <div class="method-heading">
251           <a href="#M000483" class="method-signature">
252           <span class="method-name">clear!</span><span class="method-args">()</span>
253           </a>
254         </div>
255       
256         <div class="method-description">
257           <p>
258 Deletes all agents
259 </p>
260           <p><a class="source-toggle" href="#"
261             onclick="toggleCode('M000483-source');return false;">[Source]</a></p>
262           <div class="method-source-code" id="M000483-source">
263 <pre>
264     <span class="ruby-comment cmt"># File lib/mcollective/agents.rb, line 15</span>
265 15:     <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">clear!</span>
266 16:       <span class="ruby-ivar">@@agents</span>.<span class="ruby-identifier">each_key</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">agent</span><span class="ruby-operator">|</span>
267 17:         <span class="ruby-constant">PluginManager</span>.<span class="ruby-identifier">delete</span> <span class="ruby-node">&quot;#{agent}_agent&quot;</span>
268 18:         <span class="ruby-constant">Util</span>.<span class="ruby-identifier">unsubscribe</span>(<span class="ruby-constant">Util</span>.<span class="ruby-identifier">make_subscriptions</span>(<span class="ruby-identifier">agent</span>, <span class="ruby-identifier">:broadcast</span>))
269 19:       <span class="ruby-keyword kw">end</span>
270 20: 
271 21:       <span class="ruby-ivar">@@agents</span> = {}
272 22:     <span class="ruby-keyword kw">end</span>
273 </pre>
274           </div>
275         </div>
276       </div>
277
278       <div id="method-M000490" class="method-detail">
279         <a name="M000490"></a>
280
281         <div class="method-heading">
282           <a href="#M000490" class="method-signature">
283           <span class="method-name">dispatch</span><span class="method-args">(request, connection) {|replies| ...}</span>
284           </a>
285         </div>
286       
287         <div class="method-description">
288           <p>
289 Dispatches a message to an agent, accepts a block that will get run if
290 there are any replies to process from the agent
291 </p>
292           <p><a class="source-toggle" href="#"
293             onclick="toggleCode('M000490-source');return false;">[Source]</a></p>
294           <div class="method-source-code" id="M000490-source">
295 <pre>
296      <span class="ruby-comment cmt"># File lib/mcollective/agents.rb, line 118</span>
297 118:     <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">dispatch</span>(<span class="ruby-identifier">request</span>, <span class="ruby-identifier">connection</span>)
298 119:       <span class="ruby-constant">Log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">&quot;Dispatching a message to agent #{request.agent}&quot;</span>)
299 120: 
300 121:       <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword kw">do</span>
301 122:         <span class="ruby-keyword kw">begin</span>
302 123:           <span class="ruby-identifier">agent</span> = <span class="ruby-constant">PluginManager</span>[<span class="ruby-node">&quot;#{request.agent}_agent&quot;</span>]
303 124: 
304 125:           <span class="ruby-constant">Timeout</span><span class="ruby-operator">::</span><span class="ruby-identifier">timeout</span>(<span class="ruby-identifier">agent</span>.<span class="ruby-identifier">timeout</span>) <span class="ruby-keyword kw">do</span>
305 126:             <span class="ruby-identifier">replies</span> = <span class="ruby-identifier">agent</span>.<span class="ruby-identifier">handlemsg</span>(<span class="ruby-identifier">request</span>.<span class="ruby-identifier">payload</span>, <span class="ruby-identifier">connection</span>)
306 127: 
307 128:             <span class="ruby-comment cmt"># Agents can decide if they wish to reply or not,</span>
308 129:             <span class="ruby-comment cmt"># returning nil will mean nothing goes back to the</span>
309 130:             <span class="ruby-comment cmt"># requestor</span>
310 131:             <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">replies</span> <span class="ruby-operator">==</span> <span class="ruby-keyword kw">nil</span>
311 132:               <span class="ruby-keyword kw">yield</span>(<span class="ruby-identifier">replies</span>)
312 133:             <span class="ruby-keyword kw">end</span>
313 134:           <span class="ruby-keyword kw">end</span>
314 135:         <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Timeout</span><span class="ruby-operator">::</span><span class="ruby-constant">Error</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">e</span>
315 136:           <span class="ruby-constant">Log</span>.<span class="ruby-identifier">warn</span>(<span class="ruby-node">&quot;Timeout while handling message for #{request.agent}&quot;</span>)
316 137:         <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>
317 138:           <span class="ruby-constant">Log</span>.<span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;Execution of #{request.agent} failed: #{e}&quot;</span>)
318 139:           <span class="ruby-constant">Log</span>.<span class="ruby-identifier">error</span>(<span class="ruby-identifier">e</span>.<span class="ruby-identifier">backtrace</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">&quot;\n\t\t&quot;</span>))
319 140:         <span class="ruby-keyword kw">end</span>
320 141:       <span class="ruby-keyword kw">end</span>
321 142:     <span class="ruby-keyword kw">end</span>
322 </pre>
323           </div>
324         </div>
325       </div>
326
327       <div id="method-M000488" class="method-detail">
328         <a name="M000488"></a>
329
330         <div class="method-heading">
331           <a href="#M000488" class="method-signature">
332           <span class="method-name">findagentfile</span><span class="method-args">(agentname)</span>
333           </a>
334         </div>
335       
336         <div class="method-description">
337           <p>
338 searches the libdirs for agents
339 </p>
340           <p><a class="source-toggle" href="#"
341             onclick="toggleCode('M000488-source');return false;">[Source]</a></p>
342           <div class="method-source-code" id="M000488-source">
343 <pre>
344      <span class="ruby-comment cmt"># File lib/mcollective/agents.rb, line 100</span>
345 100:     <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">findagentfile</span>(<span class="ruby-identifier">agentname</span>)
346 101:       <span class="ruby-ivar">@config</span>.<span class="ruby-identifier">libdir</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">libdir</span><span class="ruby-operator">|</span>
347 102:         <span class="ruby-identifier">agentfile</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>([<span class="ruby-identifier">libdir</span>, <span class="ruby-value str">&quot;mcollective&quot;</span>, <span class="ruby-value str">&quot;agent&quot;</span>, <span class="ruby-node">&quot;#{agentname}.rb&quot;</span>])
348 103:         <span class="ruby-keyword kw">if</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-identifier">agentfile</span>)
349 104:           <span class="ruby-constant">Log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">&quot;Found #{agentname} at #{agentfile}&quot;</span>)
350 105:           <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">agentfile</span>
351 106:         <span class="ruby-keyword kw">end</span>
352 107:       <span class="ruby-keyword kw">end</span>
353 108:       <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
354 109:     <span class="ruby-keyword kw">end</span>
355 </pre>
356           </div>
357         </div>
358       </div>
359
360       <div id="method-M000489" class="method-detail">
361         <a name="M000489"></a>
362
363         <div class="method-heading">
364           <a href="#M000489" class="method-signature">
365           <span class="method-name">include?</span><span class="method-args">(agentname)</span>
366           </a>
367         </div>
368       
369         <div class="method-description">
370           <p>
371 Determines if we have an agent with a certain name
372 </p>
373           <p><a class="source-toggle" href="#"
374             onclick="toggleCode('M000489-source');return false;">[Source]</a></p>
375           <div class="method-source-code" id="M000489-source">
376 <pre>
377      <span class="ruby-comment cmt"># File lib/mcollective/agents.rb, line 112</span>
378 112:     <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">include?</span>(<span class="ruby-identifier">agentname</span>)
379 113:       <span class="ruby-constant">PluginManager</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-node">&quot;#{agentname}_agent&quot;</span>)
380 114:     <span class="ruby-keyword kw">end</span>
381 </pre>
382           </div>
383         </div>
384       </div>
385
386       <div id="method-M000485" class="method-detail">
387         <a name="M000485"></a>
388
389         <div class="method-heading">
390           <a href="#M000485" class="method-signature">
391           <span class="method-name">loadagent</span><span class="method-args">(agentname)</span>
392           </a>
393         </div>
394       
395         <div class="method-description">
396           <p>
397 Loads a specified agent from disk if available
398 </p>
399           <p><a class="source-toggle" href="#"
400             onclick="toggleCode('M000485-source');return false;">[Source]</a></p>
401           <div class="method-source-code" id="M000485-source">
402 <pre>
403     <span class="ruby-comment cmt"># File lib/mcollective/agents.rb, line 42</span>
404 42:     <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">loadagent</span>(<span class="ruby-identifier">agentname</span>)
405 43:       <span class="ruby-identifier">agentfile</span> = <span class="ruby-identifier">findagentfile</span>(<span class="ruby-identifier">agentname</span>)
406 44:       <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">agentfile</span>
407 45:       <span class="ruby-identifier">classname</span> = <span class="ruby-identifier">class_for_agent</span>(<span class="ruby-identifier">agentname</span>)
408 46: 
409 47:       <span class="ruby-constant">PluginManager</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-node">&quot;#{agentname}_agent&quot;</span>)
410 48: 
411 49:       <span class="ruby-keyword kw">begin</span>
412 50:         <span class="ruby-identifier">single_instance</span> = [<span class="ruby-value str">&quot;registration&quot;</span>, <span class="ruby-value str">&quot;discovery&quot;</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">agentname</span>)
413 51: 
414 52:         <span class="ruby-constant">PluginManager</span>.<span class="ruby-identifier">loadclass</span>(<span class="ruby-identifier">classname</span>)
415 53: 
416 54:         <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">activate_agent?</span>(<span class="ruby-identifier">agentname</span>)
417 55:           <span class="ruby-constant">PluginManager</span> <span class="ruby-operator">&lt;&lt;</span> {<span class="ruby-identifier">:type</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">&quot;#{agentname}_agent&quot;</span>, <span class="ruby-identifier">:class</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">classname</span>, <span class="ruby-identifier">:single_instance</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">single_instance</span>}
418 56: 
419 57:           <span class="ruby-comment cmt"># Attempt to instantiate the agent once so any validation and hooks get run</span>
420 58:           <span class="ruby-comment cmt"># this does a basic sanity check on the agent as a whole, if this fails it</span>
421 59:           <span class="ruby-comment cmt"># will be removed from the plugin list</span>
422 60:           <span class="ruby-constant">PluginManager</span>[<span class="ruby-node">&quot;#{agentname}_agent&quot;</span>]
423 61: 
424 62:           <span class="ruby-constant">Util</span>.<span class="ruby-identifier">subscribe</span>(<span class="ruby-constant">Util</span>.<span class="ruby-identifier">make_subscriptions</span>(<span class="ruby-identifier">agentname</span>, <span class="ruby-identifier">:broadcast</span>)) <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@@agents</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">agentname</span>)
425 63: 
426 64:           <span class="ruby-ivar">@@agents</span>[<span class="ruby-identifier">agentname</span>] = {<span class="ruby-identifier">:file</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">agentfile</span>}
427 65:           <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span>
428 66:         <span class="ruby-keyword kw">else</span>
429 67:           <span class="ruby-constant">Log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">&quot;Not activating agent #{agentname} due to agent policy in activate? method&quot;</span>)
430 68:           <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
431 69:         <span class="ruby-keyword kw">end</span>
432 70:       <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>
433 71:         <span class="ruby-constant">Log</span>.<span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;Loading agent #{agentname} failed: #{e}&quot;</span>)
434 72:         <span class="ruby-constant">PluginManager</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-node">&quot;#{agentname}_agent&quot;</span>)
435 73:         <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
436 74:       <span class="ruby-keyword kw">end</span>
437 75:     <span class="ruby-keyword kw">end</span>
438 </pre>
439           </div>
440         </div>
441       </div>
442
443       <div id="method-M000484" class="method-detail">
444         <a name="M000484"></a>
445
446         <div class="method-heading">
447           <a href="#M000484" class="method-signature">
448           <span class="method-name">loadagents</span><span class="method-args">()</span>
449           </a>
450         </div>
451       
452         <div class="method-description">
453           <p>
454 Loads all agents from disk
455 </p>
456           <p><a class="source-toggle" href="#"
457             onclick="toggleCode('M000484-source');return false;">[Source]</a></p>
458           <div class="method-source-code" id="M000484-source">
459 <pre>
460     <span class="ruby-comment cmt"># File lib/mcollective/agents.rb, line 25</span>
461 25:     <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">loadagents</span>
462 26:       <span class="ruby-constant">Log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-value str">&quot;Reloading all agents from disk&quot;</span>)
463 27: 
464 28:       <span class="ruby-identifier">clear!</span>
465 29: 
466 30:       <span class="ruby-ivar">@config</span>.<span class="ruby-identifier">libdir</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">libdir</span><span class="ruby-operator">|</span>
467 31:         <span class="ruby-identifier">agentdir</span> = <span class="ruby-node">&quot;#{libdir}/mcollective/agent&quot;</span>
468 32:         <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">directory?</span>(<span class="ruby-identifier">agentdir</span>)
469 33: 
470 34:         <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">agentdir</span>).<span class="ruby-identifier">grep</span>(<span class="ruby-regexp re">/\.rb$/</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">agent</span><span class="ruby-operator">|</span>
471 35:           <span class="ruby-identifier">agentname</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">basename</span>(<span class="ruby-identifier">agent</span>, <span class="ruby-value str">&quot;.rb&quot;</span>)
472 36:           <span class="ruby-identifier">loadagent</span>(<span class="ruby-identifier">agentname</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-constant">PluginManager</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-node">&quot;#{agentname}_agent&quot;</span>)
473 37:         <span class="ruby-keyword kw">end</span>
474 38:       <span class="ruby-keyword kw">end</span>
475 39:     <span class="ruby-keyword kw">end</span>
476 </pre>
477           </div>
478         </div>
479       </div>
480
481
482     </div>
483
484
485   </div>
486
487
488 <div id="validator-badges">
489   <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
490 </div>
491
492 </body>
493 </html>