Update version according to OSCI-856
[packages/precise/mcollective.git] / doc / classes / MCollective / Registration / Base.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::Registration::Base</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::Registration::Base</td>
54         </tr>
55         <tr class="top-aligned-row">
56             <td><strong>In:</strong></td>
57             <td>
58                 <a href="../../../files/lib/mcollective/registration/base_rb.html">
59                 lib/mcollective/registration/base.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 This is a base class that other registration plugins can use to handle
84 regular announcements to the mcollective
85 </p>
86 <p>
87 The configuration file determines how often registration messages gets sent
88 using the <em>registerinterval</em> option, the plugin runs in the
89 background in a thread.
90 </p>
91
92     </div>
93
94
95    </div>
96
97     <div id="method-list">
98       <h3 class="section-bar">Methods</h3>
99
100       <div class="name-list">
101       <a href="#M000192">config</a>&nbsp;&nbsp;
102       <a href="#M000190">inherited</a>&nbsp;&nbsp;
103       <a href="#M000195">interval</a>&nbsp;&nbsp;
104       <a href="#M000193">msg_filter</a>&nbsp;&nbsp;
105       <a href="#M000196">publish</a>&nbsp;&nbsp;
106       <a href="#M000191">run</a>&nbsp;&nbsp;
107       <a href="#M000194">target_collective</a>&nbsp;&nbsp;
108       </div>
109     </div>
110
111   </div>
112
113
114     <!-- if includes -->
115
116     <div id="section">
117
118
119
120
121
122       
123
124
125     <!-- if method_list -->
126     <div id="methods">
127       <h3 class="section-bar">Public Class methods</h3>
128
129       <div id="method-M000190" class="method-detail">
130         <a name="M000190"></a>
131
132         <div class="method-heading">
133           <a href="#M000190" class="method-signature">
134           <span class="method-name">inherited</span><span class="method-args">(klass)</span>
135           </a>
136         </div>
137       
138         <div class="method-description">
139           <p>
140 Register plugins that inherits base
141 </p>
142           <p><a class="source-toggle" href="#"
143             onclick="toggleCode('M000190-source');return false;">[Source]</a></p>
144           <div class="method-source-code" id="M000190-source">
145 <pre>
146     <span class="ruby-comment cmt"># File lib/mcollective/registration/base.rb, line 11</span>
147 11:       <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">inherited</span>(<span class="ruby-identifier">klass</span>)
148 12:         <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-value str">&quot;registration_plugin&quot;</span>, <span class="ruby-identifier">:class</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">klass</span>.<span class="ruby-identifier">to_s</span>}
149 13:       <span class="ruby-keyword kw">end</span>
150 </pre>
151           </div>
152         </div>
153       </div>
154
155       <h3 class="section-bar">Public Instance methods</h3>
156
157       <div id="method-M000192" class="method-detail">
158         <a name="M000192"></a>
159
160         <div class="method-heading">
161           <a href="#M000192" class="method-signature">
162           <span class="method-name">config</span><span class="method-args">()</span>
163           </a>
164         </div>
165       
166         <div class="method-description">
167           <p><a class="source-toggle" href="#"
168             onclick="toggleCode('M000192-source');return false;">[Source]</a></p>
169           <div class="method-source-code" id="M000192-source">
170 <pre>
171     <span class="ruby-comment cmt"># File lib/mcollective/registration/base.rb, line 36</span>
172 36:       <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">config</span>
173 37:         <span class="ruby-constant">Config</span>.<span class="ruby-identifier">instance</span>
174 38:       <span class="ruby-keyword kw">end</span>
175 </pre>
176           </div>
177         </div>
178       </div>
179
180       <div id="method-M000195" class="method-detail">
181         <a name="M000195"></a>
182
183         <div class="method-heading">
184           <a href="#M000195" class="method-signature">
185           <span class="method-name">interval</span><span class="method-args">()</span>
186           </a>
187         </div>
188       
189         <div class="method-description">
190           <p><a class="source-toggle" href="#"
191             onclick="toggleCode('M000195-source');return false;">[Source]</a></p>
192           <div class="method-source-code" id="M000195-source">
193 <pre>
194     <span class="ruby-comment cmt"># File lib/mcollective/registration/base.rb, line 59</span>
195 59:       <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">interval</span>
196 60:         <span class="ruby-identifier">config</span>.<span class="ruby-identifier">registerinterval</span>
197 61:       <span class="ruby-keyword kw">end</span>
198 </pre>
199           </div>
200         </div>
201       </div>
202
203       <div id="method-M000193" class="method-detail">
204         <a name="M000193"></a>
205
206         <div class="method-heading">
207           <a href="#M000193" class="method-signature">
208           <span class="method-name">msg_filter</span><span class="method-args">()</span>
209           </a>
210         </div>
211       
212         <div class="method-description">
213           <p><a class="source-toggle" href="#"
214             onclick="toggleCode('M000193-source');return false;">[Source]</a></p>
215           <div class="method-source-code" id="M000193-source">
216 <pre>
217     <span class="ruby-comment cmt"># File lib/mcollective/registration/base.rb, line 40</span>
218 40:       <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">msg_filter</span>
219 41:         <span class="ruby-identifier">filter</span> = <span class="ruby-constant">Util</span>.<span class="ruby-identifier">empty_filter</span>
220 42:         <span class="ruby-identifier">filter</span>[<span class="ruby-value str">&quot;agent&quot;</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;registration&quot;</span>
221 43:         <span class="ruby-identifier">filter</span>
222 44:       <span class="ruby-keyword kw">end</span>
223 </pre>
224           </div>
225         </div>
226       </div>
227
228       <div id="method-M000196" class="method-detail">
229         <a name="M000196"></a>
230
231         <div class="method-heading">
232           <a href="#M000196" class="method-signature">
233           <span class="method-name">publish</span><span class="method-args">(message)</span>
234           </a>
235         </div>
236       
237         <div class="method-description">
238           <p><a class="source-toggle" href="#"
239             onclick="toggleCode('M000196-source');return false;">[Source]</a></p>
240           <div class="method-source-code" id="M000196-source">
241 <pre>
242     <span class="ruby-comment cmt"># File lib/mcollective/registration/base.rb, line 63</span>
243 63:       <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">publish</span>(<span class="ruby-identifier">message</span>)
244 64:         <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">message</span>
245 65:           <span class="ruby-constant">Log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-value str">&quot;Skipping registration due to nil body&quot;</span>)
246 66:         <span class="ruby-keyword kw">else</span>
247 67:           <span class="ruby-identifier">req</span> = <span class="ruby-constant">Message</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">message</span>, <span class="ruby-keyword kw">nil</span>, {<span class="ruby-identifier">:type</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">:request</span>, <span class="ruby-identifier">:agent</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;registration&quot;</span>, <span class="ruby-identifier">:collective</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">target_collective</span>, <span class="ruby-identifier">:filter</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">msg_filter</span>})
248 68:           <span class="ruby-identifier">req</span>.<span class="ruby-identifier">encode!</span>
249 69: 
250 70:           <span class="ruby-constant">Log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">&quot;Sending registration #{req.requestid} to collective #{req.collective}&quot;</span>)
251 71: 
252 72:           <span class="ruby-identifier">req</span>.<span class="ruby-identifier">publish</span>
253 73:         <span class="ruby-keyword kw">end</span>
254 74:       <span class="ruby-keyword kw">end</span>
255 </pre>
256           </div>
257         </div>
258       </div>
259
260       <div id="method-M000191" class="method-detail">
261         <a name="M000191"></a>
262
263         <div class="method-heading">
264           <a href="#M000191" class="method-signature">
265           <span class="method-name">run</span><span class="method-args">(connection)</span>
266           </a>
267         </div>
268       
269         <div class="method-description">
270           <p>
271 Creates a background thread that periodically send a registration notice.
272 </p>
273 <p>
274 The actual registration notices comes from the &#8216;body&#8217; method of
275 the registration plugins.
276 </p>
277           <p><a class="source-toggle" href="#"
278             onclick="toggleCode('M000191-source');return false;">[Source]</a></p>
279           <div class="method-source-code" id="M000191-source">
280 <pre>
281     <span class="ruby-comment cmt"># File lib/mcollective/registration/base.rb, line 19</span>
282 19:       <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">run</span>(<span class="ruby-identifier">connection</span>)
283 20:         <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">interval</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
284 21: 
285 22:         <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword kw">do</span>
286 23:           <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
287 24:             <span class="ruby-keyword kw">begin</span>
288 25:               <span class="ruby-identifier">publish</span>(<span class="ruby-identifier">body</span>)
289 26: 
290 27:               <span class="ruby-identifier">sleep</span> <span class="ruby-identifier">interval</span>
291 28:             <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>
292 29:               <span class="ruby-constant">Log</span>.<span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;Sending registration message failed: #{e}&quot;</span>)
293 30:               <span class="ruby-identifier">sleep</span> <span class="ruby-identifier">interval</span>
294 31:             <span class="ruby-keyword kw">end</span>
295 32:           <span class="ruby-keyword kw">end</span>
296 33:         <span class="ruby-keyword kw">end</span>
297 34:       <span class="ruby-keyword kw">end</span>
298 </pre>
299           </div>
300         </div>
301       </div>
302
303       <div id="method-M000194" class="method-detail">
304         <a name="M000194"></a>
305
306         <div class="method-heading">
307           <a href="#M000194" class="method-signature">
308           <span class="method-name">target_collective</span><span class="method-args">()</span>
309           </a>
310         </div>
311       
312         <div class="method-description">
313           <p><a class="source-toggle" href="#"
314             onclick="toggleCode('M000194-source');return false;">[Source]</a></p>
315           <div class="method-source-code" id="M000194-source">
316 <pre>
317     <span class="ruby-comment cmt"># File lib/mcollective/registration/base.rb, line 46</span>
318 46:       <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">target_collective</span>
319 47:         <span class="ruby-identifier">main_collective</span> = <span class="ruby-identifier">config</span>.<span class="ruby-identifier">main_collective</span>
320 48: 
321 49:         <span class="ruby-identifier">collective</span> = <span class="ruby-identifier">config</span>.<span class="ruby-identifier">registration_collective</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">main_collective</span>
322 50: 
323 51:         <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">config</span>.<span class="ruby-identifier">collectives</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">collective</span>)
324 52:           <span class="ruby-constant">Log</span>.<span class="ruby-identifier">warn</span>(<span class="ruby-node">&quot;Sending registration to #{main_collective}: #{collective} is not a valid collective&quot;</span>)
325 53:           <span class="ruby-identifier">collective</span> = <span class="ruby-identifier">main_collective</span>
326 54:         <span class="ruby-keyword kw">end</span>
327 55: 
328 56:         <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">collective</span>
329 57:       <span class="ruby-keyword kw">end</span>
330 </pre>
331           </div>
332         </div>
333       </div>
334
335
336     </div>
337
338
339   </div>
340
341
342 <div id="validator-badges">
343   <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
344 </div>
345
346 </body>
347 </html>