Update version according to OSCI-856
[packages/precise/mcollective.git] / doc / classes / MCollective / Runner.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::Runner</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::Runner</td>
54         </tr>
55         <tr class="top-aligned-row">
56             <td><strong>In:</strong></td>
57             <td>
58                 <a href="../../files/lib/mcollective/runner_rb.html">
59                 lib/mcollective/runner.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 The main runner for the daemon, supports running in the foreground and the
84 background, keeps detailed stats and provides hooks to access all this
85 information
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="#M000496">new</a>&nbsp;&nbsp;
98       <a href="#M000497">run</a>&nbsp;&nbsp;
99       </div>
100     </div>
101
102   </div>
103
104
105     <!-- if includes -->
106     <div id="includes">
107       <h3 class="section-bar">Included Modules</h3>
108
109       <div id="includes-list">
110         <span class="include-name"><a href="Translatable.html">Translatable</a></span>
111       </div>
112     </div>
113
114     <div id="section">
115
116
117
118
119
120       
121
122
123     <!-- if method_list -->
124     <div id="methods">
125       <h3 class="section-bar">Public Class methods</h3>
126
127       <div id="method-M000496" class="method-detail">
128         <a name="M000496"></a>
129
130         <div class="method-heading">
131           <a href="#M000496" class="method-signature">
132           <span class="method-name">new</span><span class="method-args">(configfile)</span>
133           </a>
134         </div>
135       
136         <div class="method-description">
137           <p><a class="source-toggle" href="#"
138             onclick="toggleCode('M000496-source');return false;">[Source]</a></p>
139           <div class="method-source-code" id="M000496-source">
140 <pre>
141     <span class="ruby-comment cmt"># File lib/mcollective/runner.rb, line 8</span>
142  8:     <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">configfile</span>)
143  9:       <span class="ruby-ivar">@config</span> = <span class="ruby-constant">Config</span>.<span class="ruby-identifier">instance</span>
144 10:       <span class="ruby-ivar">@config</span>.<span class="ruby-identifier">loadconfig</span>(<span class="ruby-identifier">configfile</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@config</span>.<span class="ruby-identifier">configured</span>
145 11:       <span class="ruby-ivar">@config</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-identifier">:server</span>
146 12: 
147 13:       <span class="ruby-ivar">@stats</span> = <span class="ruby-constant">PluginManager</span>[<span class="ruby-value str">&quot;global_stats&quot;</span>]
148 14: 
149 15:       <span class="ruby-ivar">@security</span> = <span class="ruby-constant">PluginManager</span>[<span class="ruby-value str">&quot;security_plugin&quot;</span>]
150 16:       <span class="ruby-ivar">@security</span>.<span class="ruby-identifier">initiated_by</span> = <span class="ruby-identifier">:node</span>
151 17: 
152 18:       <span class="ruby-ivar">@connection</span> = <span class="ruby-constant">PluginManager</span>[<span class="ruby-value str">&quot;connector_plugin&quot;</span>]
153 19:       <span class="ruby-ivar">@connection</span>.<span class="ruby-identifier">connect</span>
154 20: 
155 21:       <span class="ruby-ivar">@agents</span> = <span class="ruby-constant">Agents</span>.<span class="ruby-identifier">new</span>
156 22: 
157 23:       <span class="ruby-keyword kw">unless</span> <span class="ruby-constant">Util</span>.<span class="ruby-identifier">windows?</span>
158 24:         <span class="ruby-constant">Signal</span>.<span class="ruby-identifier">trap</span>(<span class="ruby-value str">&quot;USR1&quot;</span>) <span class="ruby-keyword kw">do</span>
159 25:           <span class="ruby-identifier">log_code</span>(<span class="ruby-identifier">:PLMC2</span>, <span class="ruby-value str">&quot;Reloading all agents after receiving USR1 signal&quot;</span>, <span class="ruby-identifier">:info</span>)
160 26:           <span class="ruby-ivar">@agents</span>.<span class="ruby-identifier">loadagents</span>
161 27:         <span class="ruby-keyword kw">end</span>
162 28: 
163 29:         <span class="ruby-constant">Signal</span>.<span class="ruby-identifier">trap</span>(<span class="ruby-value str">&quot;USR2&quot;</span>) <span class="ruby-keyword kw">do</span>
164 30:           <span class="ruby-identifier">log_code</span>(<span class="ruby-identifier">:PLMC3</span>, <span class="ruby-value str">&quot;Cycling logging level due to USR2 signal&quot;</span>, <span class="ruby-identifier">:info</span>)
165 31: 
166 32:           <span class="ruby-constant">Log</span>.<span class="ruby-identifier">cycle_level</span>
167 33:         <span class="ruby-keyword kw">end</span>
168 34:       <span class="ruby-keyword kw">else</span>
169 35:         <span class="ruby-constant">Util</span>.<span class="ruby-identifier">setup_windows_sleeper</span>
170 36:       <span class="ruby-keyword kw">end</span>
171 37:     <span class="ruby-keyword kw">end</span>
172 </pre>
173           </div>
174         </div>
175       </div>
176
177       <h3 class="section-bar">Public Instance methods</h3>
178
179       <div id="method-M000497" class="method-detail">
180         <a name="M000497"></a>
181
182         <div class="method-heading">
183           <a href="#M000497" class="method-signature">
184           <span class="method-name">run</span><span class="method-args">()</span>
185           </a>
186         </div>
187       
188         <div class="method-description">
189           <p>
190 Starts the main loop, before calling this you should initialize the <a
191 href="Config.html">MCollective::Config</a> singleton.
192 </p>
193           <p><a class="source-toggle" href="#"
194             onclick="toggleCode('M000497-source');return false;">[Source]</a></p>
195           <div class="method-source-code" id="M000497-source">
196 <pre>
197     <span class="ruby-comment cmt"># File lib/mcollective/runner.rb, line 40</span>
198 40:     <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">run</span>
199 41:       <span class="ruby-constant">Data</span>.<span class="ruby-identifier">load_data_sources</span>
200 42: 
201 43:       <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-value str">&quot;mcollective&quot;</span>, <span class="ruby-identifier">:broadcast</span>))
202 44:       <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-value str">&quot;mcollective&quot;</span>, <span class="ruby-identifier">:directed</span>)) <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@config</span>.<span class="ruby-identifier">direct_addressing</span>
203 45: 
204 46:       <span class="ruby-comment cmt"># Start the registration plugin if interval isn't 0</span>
205 47:       <span class="ruby-keyword kw">begin</span>
206 48:         <span class="ruby-constant">PluginManager</span>[<span class="ruby-value str">&quot;registration_plugin&quot;</span>].<span class="ruby-identifier">run</span>(<span class="ruby-ivar">@connection</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@config</span>.<span class="ruby-identifier">registerinterval</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
207 49:       <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>
208 50:         <span class="ruby-identifier">logexception</span>(<span class="ruby-identifier">:PLMC4</span>, <span class="ruby-value str">&quot;Failed to start registration plugin: %{error}&quot;</span>, <span class="ruby-identifier">:error</span>, <span class="ruby-identifier">e</span>)
209 51:       <span class="ruby-keyword kw">end</span>
210 52: 
211 53:       <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
212 54:         <span class="ruby-keyword kw">begin</span>
213 55:           <span class="ruby-identifier">request</span> = <span class="ruby-identifier">receive</span>
214 56: 
215 57:           <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">request</span>.<span class="ruby-identifier">agent</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;mcollective&quot;</span>
216 58:             <span class="ruby-identifier">agentmsg</span>(<span class="ruby-identifier">request</span>)
217 59:           <span class="ruby-keyword kw">else</span>
218 60:             <span class="ruby-identifier">log_code</span>(<span class="ruby-identifier">:PLMC5</span>, <span class="ruby-value str">&quot;Received a control message, possibly via 'mco controller' but this has been deprecated&quot;</span>, <span class="ruby-identifier">:error</span>)
219 61:           <span class="ruby-keyword kw">end</span>
220 62:         <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">SignalException</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">e</span>
221 63:           <span class="ruby-identifier">logexception</span>(<span class="ruby-identifier">:PLMC7</span>, <span class="ruby-value str">&quot;Exiting after signal: %{error}&quot;</span>, <span class="ruby-identifier">:warn</span>, <span class="ruby-identifier">e</span>)
222 64:           <span class="ruby-ivar">@connection</span>.<span class="ruby-identifier">disconnect</span>
223 65:           <span class="ruby-identifier">raise</span>
224 66: 
225 67:         <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">MsgTTLExpired</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">e</span>
226 68:           <span class="ruby-identifier">logexception</span>(<span class="ruby-identifier">:PLMC9</span>, <span class="ruby-value str">&quot;Expired Message: %{error}&quot;</span>, <span class="ruby-identifier">:warn</span>, <span class="ruby-identifier">e</span>)
227 69: 
228 70:         <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">NotTargettedAtUs</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">e</span>
229 71:           <span class="ruby-identifier">log_code</span>(<span class="ruby-identifier">:PLMC6</span>, <span class="ruby-value str">&quot;Message does not pass filters, ignoring&quot;</span>, <span class="ruby-identifier">:debug</span>)
230 72: 
231 73:         <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>
232 74:           <span class="ruby-identifier">logexception</span>(<span class="ruby-identifier">:PLMC10</span>, <span class="ruby-value str">&quot;Failed to handle message: %{error}&quot;</span>, <span class="ruby-identifier">:warn</span>, <span class="ruby-identifier">e</span>, <span class="ruby-keyword kw">true</span>)
233 75:         <span class="ruby-keyword kw">end</span>
234 76:       <span class="ruby-keyword kw">end</span>
235 77:     <span class="ruby-keyword kw">end</span>
236 </pre>
237           </div>
238         </div>
239       </div>
240
241
242     </div>
243
244
245   </div>
246
247
248 <div id="validator-badges">
249   <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
250 </div>
251
252 </body>
253 </html>