Update version according to OSCI-856
[packages/precise/mcollective.git] / doc / classes / MCollective / Data.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>Module: MCollective::Data</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>Module</strong></td>
53           <td class="class-name-in-header">MCollective::Data</td>
54         </tr>
55         <tr class="top-aligned-row">
56             <td><strong>In:</strong></td>
57             <td>
58                 <a href="../../files/lib/mcollective/data/base_rb.html">
59                 lib/mcollective/data/base.rb
60                 </a>
61         <br />
62                 <a href="../../files/lib/mcollective/data/result_rb.html">
63                 lib/mcollective/data/result.rb
64                 </a>
65         <br />
66                 <a href="../../files/lib/mcollective/data_rb.html">
67                 lib/mcollective/data.rb
68                 </a>
69         <br />
70             </td>
71         </tr>
72
73         </table>
74     </div>
75   <!-- banner header -->
76
77   <div id="bodyContent">
78
79
80
81   <div id="contextContent">
82
83
84
85    </div>
86
87     <div id="method-list">
88       <h3 class="section-bar">Methods</h3>
89
90       <div class="name-list">
91       <a href="#M000225">[]</a>&nbsp;&nbsp;
92       <a href="#M000227">ddl</a>&nbsp;&nbsp;
93       <a href="#M000229">ddl_has_output?</a>&nbsp;&nbsp;
94       <a href="#M000230">ddl_transform_input</a>&nbsp;&nbsp;
95       <a href="#M000228">ddl_validate</a>&nbsp;&nbsp;
96       <a href="#M000223">load_data_sources</a>&nbsp;&nbsp;
97       <a href="#M000226">method_missing</a>&nbsp;&nbsp;
98       <a href="#M000224">pluginname</a>&nbsp;&nbsp;
99       </div>
100     </div>
101
102   </div>
103
104
105     <!-- if includes -->
106
107     <div id="section">
108
109     <div id="class-list">
110       <h3 class="section-bar">Classes and Modules</h3>
111
112       Class <a href="Data/Base.html" class="link">MCollective::Data::Base</a><br />
113 Class <a href="Data/Result.html" class="link">MCollective::Data::Result</a><br />
114
115     </div>
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-M000225" class="method-detail">
128         <a name="M000225"></a>
129
130         <div class="method-heading">
131           <a href="#M000225" class="method-signature">
132           <span class="method-name">[]</span><span class="method-args">(plugin)</span>
133           </a>
134         </div>
135       
136         <div class="method-description">
137           <p><a class="source-toggle" href="#"
138             onclick="toggleCode('M000225-source');return false;">[Source]</a></p>
139           <div class="method-source-code" id="M000225-source">
140 <pre>
141     <span class="ruby-comment cmt"># File lib/mcollective/data.rb, line 26</span>
142 26:     <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-operator">[]</span>(<span class="ruby-identifier">plugin</span>)
143 27:       <span class="ruby-constant">PluginManager</span>[<span class="ruby-identifier">pluginname</span>(<span class="ruby-identifier">plugin</span>)]
144 28:     <span class="ruby-keyword kw">end</span>
145 </pre>
146           </div>
147         </div>
148       </div>
149
150       <div id="method-M000227" class="method-detail">
151         <a name="M000227"></a>
152
153         <div class="method-heading">
154           <a href="#M000227" class="method-signature">
155           <span class="method-name">ddl</span><span class="method-args">(plugin)</span>
156           </a>
157         </div>
158       
159         <div class="method-description">
160           <p><a class="source-toggle" href="#"
161             onclick="toggleCode('M000227-source');return false;">[Source]</a></p>
162           <div class="method-source-code" id="M000227-source">
163 <pre>
164     <span class="ruby-comment cmt"># File lib/mcollective/data.rb, line 37</span>
165 37:     <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">ddl</span>(<span class="ruby-identifier">plugin</span>)
166 38:       <span class="ruby-constant">DDL</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">pluginname</span>(<span class="ruby-identifier">plugin</span>), <span class="ruby-identifier">:data</span>)
167 39:     <span class="ruby-keyword kw">end</span>
168 </pre>
169           </div>
170         </div>
171       </div>
172
173       <div id="method-M000229" class="method-detail">
174         <a name="M000229"></a>
175
176         <div class="method-heading">
177           <a href="#M000229" class="method-signature">
178           <span class="method-name">ddl_has_output?</span><span class="method-args">(ddl, output)</span>
179           </a>
180         </div>
181       
182         <div class="method-description">
183           <p><a class="source-toggle" href="#"
184             onclick="toggleCode('M000229-source');return false;">[Source]</a></p>
185           <div class="method-source-code" id="M000229-source">
186 <pre>
187     <span class="ruby-comment cmt"># File lib/mcollective/data.rb, line 62</span>
188 62:     <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">ddl_has_output?</span>(<span class="ruby-identifier">ddl</span>, <span class="ruby-identifier">output</span>)
189 63:       <span class="ruby-identifier">ddl</span>.<span class="ruby-identifier">entities</span>[<span class="ruby-identifier">:data</span>][<span class="ruby-identifier">:output</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">output</span>.<span class="ruby-identifier">to_sym</span>) <span class="ruby-keyword kw">rescue</span> <span class="ruby-keyword kw">false</span>
190 64:     <span class="ruby-keyword kw">end</span>
191 </pre>
192           </div>
193         </div>
194       </div>
195
196       <div id="method-M000230" class="method-detail">
197         <a name="M000230"></a>
198
199         <div class="method-heading">
200           <a href="#M000230" class="method-signature">
201           <span class="method-name">ddl_transform_input</span><span class="method-args">(ddl, input)</span>
202           </a>
203         </div>
204       
205         <div class="method-description">
206           <p>
207 For an input where the <a href="DDL.html">DDL</a> requests a boolean or
208 some number this will convert the input to the right type where possible
209 else just returns the origin input unedited
210 </p>
211 <p>
212 if anything here goes wrong just return the input value this is not really
213 the end of the world or anything since all that will happen is that <a
214 href="DDL.html">DDL</a> validation will fail and the user will get an
215 error, no need to be too defensive here
216 </p>
217           <p><a class="source-toggle" href="#"
218             onclick="toggleCode('M000230-source');return false;">[Source]</a></p>
219           <div class="method-source-code" id="M000230-source">
220 <pre>
221     <span class="ruby-comment cmt"># File lib/mcollective/data.rb, line 74</span>
222 74:     <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">ddl_transform_input</span>(<span class="ruby-identifier">ddl</span>, <span class="ruby-identifier">input</span>)
223 75:       <span class="ruby-keyword kw">begin</span>
224 76:         <span class="ruby-identifier">type</span> = <span class="ruby-identifier">ddl</span>.<span class="ruby-identifier">entities</span>[<span class="ruby-identifier">:data</span>][<span class="ruby-identifier">:input</span>][<span class="ruby-identifier">:query</span>][<span class="ruby-identifier">:type</span>]
225 77: 
226 78:         <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">type</span>
227 79:           <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:boolean</span>
228 80:             <span class="ruby-keyword kw">return</span> <span class="ruby-constant">DDL</span>.<span class="ruby-identifier">string_to_boolean</span>(<span class="ruby-identifier">input</span>)
229 81: 
230 82:           <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:number</span>, <span class="ruby-identifier">:integer</span>, <span class="ruby-identifier">:float</span>
231 83:             <span class="ruby-keyword kw">return</span> <span class="ruby-constant">DDL</span>.<span class="ruby-identifier">string_to_number</span>(<span class="ruby-identifier">input</span>)
232 84:         <span class="ruby-keyword kw">end</span>
233 85:       <span class="ruby-keyword kw">rescue</span>
234 86:       <span class="ruby-keyword kw">end</span>
235 87: 
236 88:       <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">input</span>
237 89:     <span class="ruby-keyword kw">end</span>
238 </pre>
239           </div>
240         </div>
241       </div>
242
243       <div id="method-M000228" class="method-detail">
244         <a name="M000228"></a>
245
246         <div class="method-heading">
247           <a href="#M000228" class="method-signature">
248           <span class="method-name">ddl_validate</span><span class="method-args">(ddl, argument)</span>
249           </a>
250         </div>
251       
252         <div class="method-description">
253           <p><a class="source-toggle" href="#"
254             onclick="toggleCode('M000228-source');return false;">[Source]</a></p>
255           <div class="method-source-code" id="M000228-source">
256 <pre>
257     <span class="ruby-comment cmt"># File lib/mcollective/data.rb, line 41</span>
258 41:     <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">ddl_validate</span>(<span class="ruby-identifier">ddl</span>, <span class="ruby-identifier">argument</span>)
259 42:       <span class="ruby-identifier">name</span> = <span class="ruby-identifier">ddl</span>.<span class="ruby-identifier">meta</span>[<span class="ruby-identifier">:name</span>]
260 43:       <span class="ruby-identifier">query</span> = <span class="ruby-identifier">ddl</span>.<span class="ruby-identifier">entities</span>[<span class="ruby-identifier">:data</span>]
261 44: 
262 45:       <span class="ruby-constant">DDL</span>.<span class="ruby-identifier">validation_fail!</span>(<span class="ruby-identifier">:PLMC31</span>, <span class="ruby-value str">&quot;No dataquery has been defined in the DDL for data plugin '%{plugin}'&quot;</span>, <span class="ruby-identifier">:error</span>, <span class="ruby-identifier">:plugin</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">name</span>)  <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">query</span>
263 46: 
264 47:       <span class="ruby-identifier">input</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">fetch</span>(<span class="ruby-identifier">:input</span>, {})
265 48:       <span class="ruby-identifier">output</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">fetch</span>(<span class="ruby-identifier">:output</span>, {})
266 49: 
267 50:       <span class="ruby-constant">DDL</span>.<span class="ruby-identifier">validation_fail!</span>(<span class="ruby-identifier">:PLMC32</span>, <span class="ruby-value str">&quot;No output has been defined in the DDL for data plugin %{plugin}&quot;</span>, <span class="ruby-identifier">:error</span>, <span class="ruby-identifier">:plugin</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">name</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">output</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">empty?</span>
268 51: 
269 52:       <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">input</span>[<span class="ruby-identifier">:query</span>]
270 53:         <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">argument</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">input</span>[<span class="ruby-identifier">:query</span>][<span class="ruby-identifier">:optional</span>]
271 54: 
272 55:         <span class="ruby-identifier">ddl</span>.<span class="ruby-identifier">validate_input_argument</span>(<span class="ruby-identifier">input</span>, <span class="ruby-identifier">:query</span>, <span class="ruby-identifier">argument</span>)
273 56:       <span class="ruby-keyword kw">else</span>
274 57:         <span class="ruby-constant">DDL</span>.<span class="ruby-identifier">validation_fail!</span>(<span class="ruby-identifier">:PLMC33</span>, <span class="ruby-value str">&quot;No data plugin argument was declared in the '%{plugin}' DDL but an input was supplied&quot;</span>, <span class="ruby-identifier">:error</span>, <span class="ruby-identifier">:plugin</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">name</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">argument</span>
275 58:         <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span>
276 59:       <span class="ruby-keyword kw">end</span>
277 60:     <span class="ruby-keyword kw">end</span>
278 </pre>
279           </div>
280         </div>
281       </div>
282
283       <div id="method-M000223" class="method-detail">
284         <a name="M000223"></a>
285
286         <div class="method-heading">
287           <a href="#M000223" class="method-signature">
288           <span class="method-name">load_data_sources</span><span class="method-args">()</span>
289           </a>
290         </div>
291       
292         <div class="method-description">
293           <p><a class="source-toggle" href="#"
294             onclick="toggleCode('M000223-source');return false;">[Source]</a></p>
295           <div class="method-source-code" id="M000223-source">
296 <pre>
297     <span class="ruby-comment cmt"># File lib/mcollective/data.rb, line 6</span>
298  6:     <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">load_data_sources</span>
299  7:       <span class="ruby-constant">PluginManager</span>.<span class="ruby-identifier">find_and_load</span>(<span class="ruby-value str">&quot;data&quot;</span>)
300  8: 
301  9:       <span class="ruby-constant">PluginManager</span>.<span class="ruby-identifier">grep</span>(<span class="ruby-regexp re">/_data$/</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">plugin</span><span class="ruby-operator">|</span>
302 10:         <span class="ruby-keyword kw">begin</span>
303 11:           <span class="ruby-keyword kw">unless</span> <span class="ruby-constant">PluginManager</span>[<span class="ruby-identifier">plugin</span>].<span class="ruby-identifier">class</span>.<span class="ruby-identifier">activate?</span>
304 12:             <span class="ruby-constant">Log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-value str">&quot;Disabling data plugin %s due to plugin activation policy&quot;</span> <span class="ruby-operator">%</span> <span class="ruby-identifier">plugin</span>)
305 13:             <span class="ruby-constant">PluginManager</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">plugin</span>)
306 14:           <span class="ruby-keyword kw">end</span>
307 15:         <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>
308 16:           <span class="ruby-constant">Log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">&quot;Disabling data plugin %s due to exception #{e.class}: #{e}&quot;</span> <span class="ruby-operator">%</span> <span class="ruby-identifier">plugin</span>)
309 17:           <span class="ruby-constant">PluginManager</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">plugin</span>)
310 18:         <span class="ruby-keyword kw">end</span>
311 19:       <span class="ruby-keyword kw">end</span>
312 20:     <span class="ruby-keyword kw">end</span>
313 </pre>
314           </div>
315         </div>
316       </div>
317
318       <div id="method-M000226" class="method-detail">
319         <a name="M000226"></a>
320
321         <div class="method-heading">
322           <a href="#M000226" class="method-signature">
323           <span class="method-name">method_missing</span><span class="method-args">(method, *args)</span>
324           </a>
325         </div>
326       
327         <div class="method-description">
328           <p>
329 Data.package(&quot;httpd&quot;).architecture
330 </p>
331           <p><a class="source-toggle" href="#"
332             onclick="toggleCode('M000226-source');return false;">[Source]</a></p>
333           <div class="method-source-code" id="M000226-source">
334 <pre>
335     <span class="ruby-comment cmt"># File lib/mcollective/data.rb, line 31</span>
336 31:     <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">method_missing</span>(<span class="ruby-identifier">method</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
337 32:       <span class="ruby-keyword kw">super</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-constant">PluginManager</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">pluginname</span>(<span class="ruby-identifier">method</span>))
338 33: 
339 34:       <span class="ruby-constant">PluginManager</span>[<span class="ruby-identifier">pluginname</span>(<span class="ruby-identifier">method</span>)].<span class="ruby-identifier">lookup</span>(<span class="ruby-identifier">args</span>.<span class="ruby-identifier">first</span>)
340 35:     <span class="ruby-keyword kw">end</span>
341 </pre>
342           </div>
343         </div>
344       </div>
345
346       <div id="method-M000224" class="method-detail">
347         <a name="M000224"></a>
348
349         <div class="method-heading">
350           <a href="#M000224" class="method-signature">
351           <span class="method-name">pluginname</span><span class="method-args">(plugin)</span>
352           </a>
353         </div>
354       
355         <div class="method-description">
356           <p><a class="source-toggle" href="#"
357             onclick="toggleCode('M000224-source');return false;">[Source]</a></p>
358           <div class="method-source-code" id="M000224-source">
359 <pre>
360     <span class="ruby-comment cmt"># File lib/mcollective/data.rb, line 22</span>
361 22:     <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">pluginname</span>(<span class="ruby-identifier">plugin</span>)
362 23:       <span class="ruby-identifier">plugin</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/_data$/i</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">plugin</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">downcase</span> <span class="ruby-operator">:</span> <span class="ruby-value str">&quot;%s_data&quot;</span> <span class="ruby-operator">%</span> <span class="ruby-identifier">plugin</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">downcase</span>
363 24:     <span class="ruby-keyword kw">end</span>
364 </pre>
365           </div>
366         </div>
367       </div>
368
369
370     </div>
371
372
373   </div>
374
375
376 <div id="validator-badges">
377   <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
378 </div>
379
380 </body>
381 </html>